View Markdown Β· Documentation index (llms.txt)
Generation Hook: 016-post-trade-settlement-bankerx
- Feature pack:
specs/016-post-trade-settlement-bankerx - Parent state:
014-fdc3-intent-interoperability(child state β 014 stays the pristine FDC3 baseline) - Model: ADR-002 generated-state branching +
docs/spec-kit/state-transition-generation-plan.mdexplicit inheritance policy
Scope Resolution (maintainer review, PR #470)β
The payment-intent handoff and the post-trade settlement lifecycle are separate lessons. 014 keeps the FDC3 baseline untouched; 016 owns the settlement-specific changes in its own overlay, so a generated 014 β 016 comparison shows exactly one new lesson.
Overlay Modelβ
016's frontend overlay is applied ON TOP of the generated 014 output:
generation/frontend-overrides/web-front-end/angular/**β full-file overrides copied over the generated angular tree (same mechanism as 014), carrying:fdc3-interop.service.tsβ 014 baseline +StartPaymentdispatch,findIntentpayment-receiver discovery, UETR dispatch tracking,synaptic.settlementStatuscorrelation listener.trade-blotter/trade-blotter.component.tsβ 014 baseline + the SETTLE action column, gated onfindIntent('StartPayment')resolution so base TraderX shows no action button; settlement status flips rows (SETTLINGβ¦βSETTLED/REJECTED); duplicate dispatch suppressed.
generation/mock-receiver/**β the local mock receiver (default receiver variant) + its app-directory fragment + the provider-neutral lifecycle module. The BankerX settlement terminal is the opt-in reference adapter (both variants ship with the pack).
Future State-ification Steps (when 016 becomes a runnable state)β
- Generate parent state
014-fdc3-intent-interoperability. - Copy
generation/frontend-overrides/**over the generated angular tree. - Serve
generation/mock-receiver/and merge its appd fragment into the Sail app-directory seed sofindIntent('StartPayment')resolves in the demo profile. - Regenerate architecture docs from the pack's
system/**. - Run state smoke tests (014 suite +
tests/smoke/). - Publish
code/generated-state-016-post-trade-settlement-bankerxand add the catalog entry (feature-pack precedent of 015 applies until then).
Overlay Completeness (templates are upstream-pristine β 2026-10-12)β
The shared templates/web-front-end/angular tree is the speckit generation
base. It carries NO 016 settlement code: everything above is provided by this
pack's overlay, and package.json / tsconfig.json are unchanged from the
upstream merge commit. The overlay now also carries:
model/account.model.ts(name?:desk identifier) andmodel/trade.model.ts(price?:fill price) β type extensions the settle flow reads.service/position.service.tsβ the settlement-registry client (getSettlements/postSettlementsagainst/position-service/trades/settlements/, served by the adapter at port 8415 in the demo estate).
Two template-tree files predate this rule and stay where they are, documented
as estate-build sources only (angular-deploy/PATCH-NOTE.md): the
TradeTicket company-name normalization block (the 2026-09-30 hand-patch
port) β the generated trees are governed by 014's trade-ticket override, so
none of it reaches a generated baseline.
The 014 β 016 purity proofβ
tests/smoke/generated-tree-purity.test.mjs replays the generation
composition statically and asserts, in four gates: (Q0) no state pack other
than 016 ships settlement vocabulary; (Q1) the upstream bbd6408 web base
composed with 014's frontend-overrides is settlement-free; (Q2) composing
TODAY's templates tree with 014's overrides is byte-identical under main/app
to the upstream composition (no 016 delta survives into generated 014);
(Q3) adding this pack's overlay puts the settlement surface back exactly where
the overlay says. Run it with node tests/smoke/generated-tree-purity.test.mjs from the pack directory.