Skip to content

docs: escrow relay API, ADRs, README, testnet e2e and OpenSpec archive (#96) - #134

Merged
TOMOKI977 merged 3 commits into
feat/96-escrow-relay-10-endpointfrom
feat/96-escrow-relay-12-openspec
Oct 8, 2026
Merged

TOMOKI977 merged 3 commits into
feat/96-escrow-relay-10-endpointfrom
feat/96-escrow-relay-12-openspec

Conversation

@moises-cisneros

@moises-cisneros moises-cisneros commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Refs #96

Part of the chain that replaces #119, split after its review. Tracker: #122. Regrouped from a first 12 PR split (#133 were folded into this one).

Summary

Documentation only. api.md, ADR-0001 and ADR-0003, the server README, the testnet end to end script and the archived OpenSpec change with its merged specs. Run on Serverpod 4.0.4: create_job 89293b2b…3c9a (ledger 5082571) and fund d255f14a…3b18 (ledger 5082572).

Acceptance criteria

The chain as a whole covers #96; this PR carries its slice (see Scope below).

  • The app can create and fund a hire on testnet using only prepare… and submitEscrowCall (proven in the docs PR)
  • A signed envelope that differs from its preparation in any field is rejected
  • A caller can never prepare or submit for a hire that is not theirs
  • A submit… call never throws for chain outcomes
  • Each preparation has at most one ChainSubmission

Verification evidence

Docs only. The e2e script is documented in puls3_server/README.md under "End-to-end proof on testnet".

Notes for reviewers

  • Review against the parent branch (feat/96-escrow-relay-10-endpoint), not main. The commits are ordered to be read one by one.
  • Over the 400 line budget: 2016 authored lines, mostly tests of code that moves funds. Splitting further cuts the unit apart, so it needs size:exception.
  • Generated code, migrations and recorded fixtures are excluded from the authored count.

Chain Context

Field Value
Chain Escrow relay prepare and submit endpoints (#96)
Tracker PR #122
Position 4 of 4
Base feat/96-escrow-relay-10-endpoint
Depends on #132
Follow-up None (integrates through the tracker)
Review budget 2016 authored (2016 total) / 400
Starts at feat/96-escrow-relay-10-endpoint
Ends with Docs, tool/e2e_relay_testnet.dart, openspec/ archive and specs.

Chain Overview

main
 └── #122 Tracker (draft, no merge)
      └── #126 escrow relay foundations: protocol, config, envelope codec and RPC
           └── #129 persist preparations and prepare unsigned escrow envelopes
                └── #132 submit signed escrow calls and expose the relay in the hire endpoint
                     └── 📍 #134 escrow relay API, ADRs, README, testnet e2e and OpenSpec archive

Scope

  • Includes: Docs, tool/e2e_relay_testnet.dart, openspec/ archive and specs.
  • Excludes: None: last in the chain.

Autonomy

  • CI is expected to pass for this PR branch
  • This PR has one deliverable scope
  • This PR can be rolled back without unrelated changes
  • Tests, docs, or manual verification cover this unit

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.
@moises-cisneros moises-cisneros changed the title docs(openspec): archive the escrow relay change (#96) docs: escrow relay API, ADRs, README, testnet e2e and OpenSpec archive (#96) Oct 8, 2026
@moises-cisneros
moises-cisneros changed the base branch from feat/96-escrow-relay-11-docs to feat/96-escrow-relay-10-endpoint October 8, 2026 16:59

@TOMOKI977 TOMOKI977 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying puls3 with  Cloudflare Pages  Cloudflare Pages

Latest commit: 919ffb3
Status: ✅  Deploy successful!
Preview URL: https://05e4921b.puls3-4lw.pages.dev
Branch Preview URL: https://feat-96-escrow-relay-12-open.puls3-4lw.pages.dev

View logs

@TOMOKI977
TOMOKI977 merged commit 772f554 into feat/96-escrow-relay-10-endpoint Oct 8, 2026
1 check passed
@TOMOKI977
TOMOKI977 deleted the feat/96-escrow-relay-12-openspec branch October 8, 2026 19:35
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants