Repository navigation
Conversation
A new preparation supersedes the previous one, and each preparation has at most one submission, proven by a Postgres race test. Part of #96.
Gives the relay its view of a hire: idempotency key, input and escrow job id, with a hire having no status until create_job is confirmed. Part of #96.
prepareCreateJob, prepareFund, prepareComplete and prepareReject build, simulate and store an unsigned envelope. A new preparation supersedes the previous one, and the configuration has no defaults. Part of #96.
submitEscrowCall checks the signed envelope against its preparation, stores a ChainSubmission as submitted and only then sends it. Chain outcomes never throw, and a repeated submit returns the existing record. Part of #96.
HireEscrowEffects.onJobCreated binds the job id once and opens the hire. Part of #96.
createHire returns the hire with an unsigned create_job, and a repeated requestId from the same wallet returns the same hire or IdempotencyKeyReused. Part of #96.
createHire, prepareCreateJob, prepareFund, prepareComplete, prepareReject and submitEscrowCall, each behind requireLogin through an injectable SessionWallet. The production default fails closed with AuthenticationUnavailable until wallet sessions land (#25). Regenerates the endpoint and client. Part of #96.
Lists ChainDataUnavailable for submitEscrowCall, drops the TypeScript sidecar from the ADRs and documents the config keys and the end-to-end run. Part of #96.
Runs the real endpoint, services, codec, RPC client and chain tracker against testnet. The consumer key stays in the process environment. Part of #96.
This was referenced Oct 8, 2026
moises-cisneros
changed the base branch from
feat/96-escrow-relay-06-hire-lifecycle
to
feat/96-escrow-relay-04-rpc-client
October 8, 2026 16:59
This was referenced Oct 8, 2026
Merged
TOMOKI977
approved these changes
Oct 8, 2026
TOMOKI977
left a comment
Contributor
There was a problem hiding this comment.
Approved. This slice is part of the code I reviewed in full on #119 at b0a4adc (all four lenses; see the review there). I checked that the tip of the chain matches b0a4adc except for the CI fix in .env.example and .gitleaks.toml (and main's #112). The follow-ups listed on #119 apply to the chain as a whole.
TOMOKI977
merged commit Oct 8, 2026
3a9957a
into
feat/96-escrow-relay-04-rpc-client
1 check was pending
TOMOKI977
pushed a commit
that referenced
this pull request
Oct 8, 2026
Closes #96. Server-side relay (api.md Decision A): HireEndpoint with idempotent createHire, prepareCreateJob/prepareFund/prepareComplete/prepareReject that build unsigned Soroban envelopes, and submitEscrowCall that verifies the signed envelope byte for byte, checks the ed25519 signature against the session wallet, stores a submitted ChainSubmission and sends it for the chain tracker. Session wallet fails closed until #25. Includes the testnet e2e tool (tool/e2e_relay_testnet.dart), docs and the OpenSpec archive. Reviewed as #119; landed through the chain #126, #129, #132, #134.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #96
Part of the chain that replaces #119, split after its review. Tracker: #122. Regrouped from a first 12 PR split (#127, #128 were folded into this one).
Summary
The stores and the prepare half of the relay. Preparation store (a new one supersedes the previous one; each preparation has at most one
ChainSubmission, proven by a Postgres race test), the hire lifecycle store (idempotency key, input and job id; a hire has no status untilcreate_jobis confirmed), andprepareCreateJob,prepareFund,prepareCompleteandprepareReject. The service has no submit logic yet.Acceptance criteria
The chain as a whole covers #96; this PR carries its slice (see Scope below).
prepare…andsubmitEscrowCall(proven in the docs PR)submit…call never throws for chain outcomesChainSubmissionVerification evidence
Notes for reviewers
feat/96-escrow-relay-04-rpc-client), notmain. The commits are ordered to be read one by one.size:exception.Chain Context
feat/96-escrow-relay-04-rpc-clientfeat/96-escrow-relay-04-rpc-clientChainAccounts, the prepare side ofEscrowRelayService.Chain Overview
Scope
ChainAccounts, the prepare side ofEscrowRelayService.submitEscrowCall, hire creation and the endpoint.Autonomy