Repository navigation
feat(server): submit signed escrow calls and expose the relay in the hire endpoint (#96) - #132
Merged
TOMOKI977 merged 10 commits intoOct 8, 2026
Conversation
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-09-hire-service
to
feat/96-escrow-relay-07-prepare
October 8, 2026 16:59
This was referenced Oct 8, 2026
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.
…-12-openspec docs: escrow relay API, ADRs, README, testnet e2e and OpenSpec archive (#96)
TOMOKI977
merged commit Oct 8, 2026
f28a32d
into
feat/96-escrow-relay-07-prepare
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 (#130, #131 were folded into this one).
Summary
The submit half and the public surface.
submitEscrowCallchecks the signed envelope against its preparation, stores aChainSubmissionassubmittedand only then sends it; chain outcomes never throw and a repeated submit returns the existing record.createHireis idempotent per wallet and returns an unsignedcreate_job, andHireEscrowEffects.onJobCreatedbinds the job id once.HireEndpointexposes it all behindrequireLoginthrough an injectableSessionWallet(fails closed withAuthenticationUnavailableuntil #25). Regenerated endpoint and client.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-07-prepare), notmain. The commits are ordered to be read one by one.size:exception.Chain Context
feat/96-escrow-relay-07-preparefeat/96-escrow-relay-07-prepareEscrowRelayService,HireService,HireEscrowEffects, tracker wiring,HireEndpoint,HireServices, generated endpoint and client, with their tests.Chain Overview
Scope
EscrowRelayService,HireService,HireEscrowEffects, tracker wiring,HireEndpoint,HireServices, generated endpoint and client, with their tests.Autonomy