View Markdown Β· Documentation index (llms.txt)
Feature Pack 016: FDC3 Post-Trade Settlement Interoperability
Overviewβ
This pack defines the post-trade settlement lifecycle as a child state of
014-fdc3-intent-interoperability (014 stays the pristine FDC3 baseline; 016
owns the settlement-specific changes in its own overlay, per ADR-002 and the
state-transition generation plan).
It bridges TraderX (Front-Office Execution) with a post-trade settlement
receiver using FINOS FDC3 3.0 experimental intent/context (StartPayment,
fdc3.payment β the exact context type proposed in FDC3 PR #2204)
and ISO 20022 pacs.008 / pacs.002 messaging.
Provider-neutral by design: three deployment & receiver variants ship with the pack:
- Local mock receiver (default) β
generation/mock-receiver/, dependency-free and offline-reproducible; the demo and tests never require an external service. - BankerX reference adapter (opt-in) β the live settlement terminal (terminal.synapticchain.xyz, labeled XRPL TESTNET (altnet) / Solana DEVNET), swapped in via an app-directory URL change.
- Standalone Web Blotter Reference β
generation/traderx-blotter-web/, live at traderx.synapticchain.xyz with FDC3 App Directory at/appd.jsonand direct on-chain Solana consensus verification.
The new lesson (014 β 016)β
- Mapping an execution to valid payment instructions, currencies, and counterparties.
- UETR-keyed correlation of trade β payment request β settlement status report.
- Preventing duplicate settlement requests.
- Handling rejection, timeout, and uncertain outcomes honestly.
- Settlement status taught as a concept distinct from trade status.
The rock-solid operational lesson (v15 β v20, 2026-09-30/10-01)β
One sentence: settlement truth must outlive the page that witnessed it.
Concretely, 016 now teaches the full invariant set, each one learned from a
real defect and fixed in source (see generation/traderx-blotter-web/angular-deploy/PATCH-NOTE.md v15βv20):
- Durable, UETR-keyed registry beat localStorage. A per-browser ledger
(
v17) means settled rows reset the moment a second browser opens. Truth moved to the adapter's file-backed registry (v20), with one-way ISO 20022 ordering (Pndg β Acsc/Rjct) enforced server-side. - Adoption must be fingerprint-guarded. A registry entry may only stamp
a row under (a) an own-UETR match or (b) a full trade-fingerprint match
(security, quantity, side, created). Without the
createdguard, a re-seeded trade after an adapter restart inherits a stale settlement β demonstrated live, then proven non-adopting. - Chain-truth belongs at the reconciliation seam. The on-chain settlement memo (UETR inside the transfer memo) cures rows whose only witness page missed the live status broadcast β the desk settles only after its WOTS+ attestation passes, so a chain memo IS the settlement.
- Intent availability gates the UI by construction. The SETTLE action
renders only when
findIntent('StartPayment')resolves β no config flag. - One desk, many settlements. Desk-reuse (v19): SETTLE reuses/focuses the open desk window instead of spawning duplicates.
- Compliance failure shares the pipeline. Rejection surfaces as
RejectedByEnclave:SANCTIONS_POLICY_VIOLATIONon the same code path β no separate demo path. - Build-source alignment is a gate, not an assumption. The angular
bundle builds from the
templates/copy β the 016 overlay must becp'd over it before every build; literal-marker greps between old and new bundles catch a silently stale build (v20 lesson). - Counts and bytes are logged honestly per run β mocha-retry FINAL STATS overcount (DOM is the truth); served md5 == disk md5 checked per URL-bust (Cloudflare caches JS per full URL).
Intent-availability gatingβ
The SETTLE (BANKERX) blotter action column is rendered only when
fdc3.findIntent('StartPayment') resolves to at least one workspace
participant. Base TraderX (no post-trade participant) shows the pristine 014
blotter; the button appears the moment the mock receiver or BankerX joins the
workspace β capability discovery by construction, no configuration flag.
Key Linksβ
- FDC3 Standard PR: FINOS FDC3 PR #2204 (Payment Context & StartPayment Intent)
- FDC3 Standard Issue: FINOS FDC3 Issue #444
- Reference settlement engine (BankerX): terminal.synapticchain.xyz
- Generation overlay + lifecycle tests:
generation/andtests/smoke/