View Markdown Β· Documentation index (llms.txt)
Local Mock Receiver (016, child of 014)
The default settlement receiver for the generated 016 runtime: a dependency-free,
static FDC3 participant that makes the request-to-outcome demonstration and tests
reproducible without any external service. The BankerX settlement terminal
(synaptic-fx-terminal) remains the opt-in reference adapter β both variants
ship with the pack.
Filesβ
| File | Purpose |
|---|---|
index.html | Self-contained receiver UI: renders the fdc3.payment context, shows the lifecycle outcome, broadcasts synaptic.settlementStatus on the user channel |
payment-lifecycle.mjs | Provider-neutral lifecycle module: payload validation, duplicate-dispatch prevention, status transitions (Pndg β Acsc / Rjct), shared by the page AND the smoke tests |
appd/mock-receiver.appd.json | App-directory record declaring StartPayment support β the receiver-registration reference |
Why a mock receiver is the defaultβ
- Generated 016 state and its smoke tests must be reproducible offline (no external service, no testnet dependency in the learning path).
- The 014 β 016 generated diff must show exactly one new lesson (post-trade settlement), not a new dependency.
- BankerX stays a reference adapter: swap the receiving app in the workspace and the same intent resolves there β that is the provider-neutral point of FDC3.
Receiver registration β the intent-declaration contractβ
A workspace participant is only reachable by intent if it registers like this:
- App record declares the intent (
interop.intents.listensFor.StartPaymentwithfdc3.paymentin its contexts) β an app record without the intent declaration is invisible tofindIntent, and a raisedStartPaymentnever routes to it. This is the failure mode of a guest app "not declaring a name". - The app name/title is set in its app-directory record β intent routing surfaces this name in the resolution UI.
- The runtime registers an intent listener (
fdc3.addIntentListener('StartPayment', ...)) β the appd record advertises capability; the listener implements it.
The TraderX blotter's SETTLE (BANKERX) action column appears only when
fdc3.findIntent('StartPayment') resolves to at least one app β so base TraderX
(no post-trade participant in the workspace) shows no action button, and the
button appears the moment the mock receiver or BankerX joins the workspace.
Using BankerX instead (reference adapter)β
Point the workspace's post-trade participant at the BankerX settlement terminal instead of the mock receiver (the FDC3 app-directory URL swap β no TraderX change). The intent, context, and status correlation contract is identical; BankerX adds the real multi-rail settlement engine behind the FDC3 boundary, labeled testnet (XRPL TESTNET (altnet) / Solana DEVNET).