As of when?
A cash-account balance is a question about time. The same trades give a different settled balance depending on the day you ask — and on the settlement rule that was in force then. When US equities moved from T+2 to T+1 on 28 May 2024, the rule changed underneath every spec that had assumed it. This example grounds a cash-snapshot spec on a settlement corpus, then supersedes the edition and re-grounds the spec with a propose → apply change.
A settlement cycle is a domain fact — external, dated, and changeable by a regulator. Ungrounded, a spec can only assume it (and models happily recall a rule that has since moved). Grounded, the decision cites KB-0001@edition — an id pinned to the exact edition read. That pin is not bookkeeping: a cash snapshot taken as-of 24 May 2024 must settle USD equities T+2; one taken 28 May onward, T+1. The corpus keeps both editions, so a point-in-time snapshot can ground each date against the rule that actually applied. Edition-pinning is point-in-time correctness.
The corpus
A finance-settlement pack — committed markdown, an Agent Skills folder. It holds more than this one spec needs: four documents ground a decision here; one (corporate actions) is adjacent — in the pack, waiting for a spec that needs it.
| ID | Document | Edition | Grounds |
|---|---|---|---|
| KB-0001 | US equities settlement cycle | @2024-05-28 ↳ @2017-09-05 | D-001 |
| KB-0002 | FX settlement risk & PvP | @2022-07-08 | D-004 |
| KB-0003 | Books of record — IBOR / ABOR / PBOR | @2024-01-15 | D-002 |
| KB-0004 | Cash-account snapshot semantics | @2024-01-15 | D-003 |
| KB-0005 | Corporate-action cash entitlements | @2023-06-01 | not cited here |
A corpus is a library, not a checklist. KB-0005 sits in the index un-cited — and that's correct: grounding is scoped to the domain facts a decision actually rests on, never a ritual where every requirement manufactures a citation.
Show me
Four USD-equity trades around the 28 May 2024 cutover. Slide the as-of date and watch two books diverge: IBOR (traded cash — every fill the front office sees) versus ABOR (settled cash — only what has actually changed hands). Each trade settles by the cycle in force on its trade date.
| Trade | Cash | Settles | Cycle | As of date |
|---|
A browser illustration of the snapshot engine. The real derivation is the 001-cash-snapshot spec — a T+2 trade grounds against KB-0001@2017-09-05, a T+1 trade against KB-0001@2024-05-28. Business days here skip weekends and Memorial Day (27 May 2024).
When the rule moved
The spec was authored in the T+2 era — D-001 cited KB-0001@2017-09-05. On 28 May 2024 the corpus superseded its edition; the old pin didn't rot — it flagged.
The edition supersedes
The T+1 rule is committed as KB-0001@2024-05-28; the T+2 edition moves to references/superseded/ — retained, never deleted, so the old pin still resolves.
Validate flags the stale pin
D-001 still points at @2017-09-05 while the current edition is @2024-05-28. A corpus-staleness warning — loud, never blocking.
Propose the change
/spectastic.propose writes a change with one typed delta — MODIFY the settlement requirement to T+1, effective 28 May 2024 — and an adversarial risk pass. Because a corpus is present, the critic adds a fourth angle: a live requirement that contradicts a committed domain fact.
What changes: USD equity settlement T+2 → T+1, effective 28 May 2024.
A live requirement still asserting T+2 now contradicts the committed domain fact.
KB-0001@2024-05-28 — "US equities settlement cycle" (supersedes KB-0001@2017-09-05, T+2).
Apply — and the pin catches up
spectastic apply patches the delta into the live spec, folds a task, appends a changelog line, flips the proposal approved → applied, and archives it. D-001 re-grounds to @2024-05-28; the staleness warning clears.
Read the decisions
The applied design, rendered by spectastic's own grounding CSS. One decision grounds a domain fact against the corpus; another stays honestly ASSUMED because it isn't one.
D-001 · Settlement date from a business-day calendar
- Grounding
- Context
- US equities settle T+1 (one business day) under SEC Rule 15c6-1, compliance date 28 May 2024. Grounded against
KB-0001@2024-05-28. - Decision
- Derive the settlement date as trade date + 1 business day, applying the cycle in force on the trade date.
D-005 · Snapshot refresh interval
- Grounding
- Context
- A cache TTL is a local product decision, not a domain fact — no corpus document governs it, and a product choice must not manufacture a citation.
- Decision
- Refresh snapshots on a 60-second TTL; revisit under load.
Both read as competent English. One points at a committed, hashed document; the other rests on judgment and says so. That honesty is the point — grounding grades what's grounded, and flags what isn't.
→ the T+2 edition lives on at references/superseded/…-2017.md (@2017-09-05), so a snapshot dated before the cutover still grounds cleanly. Content-hash is real (sha256 of the body).
The gates hold
The applied bundle — corpus, spec, design, and the archived proposal — is green. Every citation resolves to a committed, hashed document; a fabricated one is structurally impossible.
Typo the pin to an edition no committed document carries, and the build fails — a citation can't dangle.
The artifacts
A self-contained bundle: the finance-settlement corpus (five documents, one superseded edition) and the 001-cash-snapshot spec, design, and applied change. Every file passes spectastic validate.
These are the real, rendered artifacts — the same files spectastic validate checks; the excerpts above are drawn from them.