A4.6 · The spec layer
Correct by definition
Completion is not a claim a person makes — it is a closure a rule verifies. The traceability chain is the ledger that makes “done” checkable from the text alone.
Every deliverable is realized by a story; every story is accepted by a check and encodes an invariant; every requirement is satisfied; every invariant holds under test. Step the chain on the right over the Portal's real F6.1 ids; when every link resolves, the rung is correct by definition. Three dives: the chain, the closure, and a broken link.
Step the F6.1 chain · deliverable to proof
What traceability is
A roadmap ordered the work; a spec defined it; stories accepted it; invariants pinned it. A4.6 closes the chapter's argument: completion is a closure, not a claim. Traceability is the property that every artifact carries a stable id and every id is reachable from intent to proof — so “done” can be read from the text, not asserted by a person.
The chain runs straight down. A deliverable is realized by a user story; the story is accepted by its Given/When/Then and encodes an invariant; the deliverable is also built by an agent story governed by a requirement, which is proven by an invariant or an acceptance test. This is the same idea A1.05 — Correct by definition named; A4.6 makes it operational over the Portal's real F6.1 ids.
# specs.approach.md — the traceability chain (verbatim). Deliverable (fN.M.md · FN.M-D#) └─ realized by → User story (fN.M.stories.md · FN.M-US#) ├─ accepted by → Acceptance criteria (Given/When/Then on the story) └─ encodes → Invariant (fN.M.md · FN.M-INV#) └─ built by → Agent story (fN.M.llms.md · FN.M-AS#) └─ governed by → Requirement (fN.M.llms.md · FN.M-R#) └─ proven by → Invariant (FN.M-INV#) or an acceptance test
Traceability turns “done” into a property you can read: every id reachable from intent to proof, the completion rule a closure rather than an opinion.
The three dives
Each dive takes one part of the closure, in the arc walk → close → break: the chain that links every id, the completion rule that closes it, and the broken link that opens it again and names the gap. Read them in order — A4.6.1 starts.
The chain
Walk every id from deliverable to story to acceptance and invariant to requirement, over the Portal's real F6.1 triad. The path is read from the text, not inferred.
The closure
The completion rule, clause by clause: deliverables covered, criteria pass, requirements satisfied, invariants hold — every gate run, not asserted. The closure A1.05 calls correct by definition.
A broken link
Remove one link — an uncovered deliverable, an unreachable invariant — and the rule reports not done and names the gap. Completion is verified, never asserted.
Break a link, read the gap
A walking chain is not yet a guarantee — the guarantee is that a missing link is caught. Two closures
make the chain checkable from the text: the stories file ends with a Coverage line
(D#→US# · …) mapping every deliverable to its stories, and each
story's INVEST line ends with encodes FN.M-INV#, so every invariant is reachable
from a story. Break either and the rung is not done.
Below is F6.1's intact Coverage line. Drop the stories that cover a deliverable, or a story's
encodes, and the readout reports not done and names the exact hole. Completion is a
closure: one broken link is enough to open it.
F6.1 coverage · break a link
Completion closes by a rule, not a claim: every deliverable traces to a story, an acceptance check, and an invariant. No behavior is unpinned, and no gate is merely asserted.
F6.1's Coverage line maps D1…D7 to US1…US5 and each story names the invariant it
encodes; the rung is done only when the chain closes — read it, do not
assert it.
A closure is only as strong as its links: remove one and the rule reports not done and names the gap — which is why completion is verified, never asserted.
The first dive — A4.6.1 · The chain — walks every id from deliverable to proof over the real F6.1 triad. Then A4.6.2 closes the four clauses, and A4.6.3 breaks a link.
References
The sources behind traceability and the completion closure, and where it connects in the course.
Sources
- Adzic, G. — Specification by Example — examples that double as the executable acceptance the chain ends in.
- Humble & Farley — Continuous Delivery — every gate run, not asserted; done means the checks have passed.
- Cohn, M. — User Stories Applied — the story as the unit a deliverable is realized by and accepted through.
Related in this course
- A4.6.1 · The chain — walk every id over F6.1.
- A4.6.2 · The closure — the completion rule, clause by clause.
- A4.6.3 · A broken link — the gap the rule names.
- A1.05 · Correct by definition — the idea A4.6 makes operational.
- A2.04 · Acceptance criteria — the Given/When/Then the chain is accepted by.
- F6 · The Portal on the web (Phoenix) — the real chapter F6.1's ids come from.