jonnifyagile agents
jonnify / Agile Agent Workflow / A4 · The spec layer / A4.7 / A4.7.3 · The closed spec

A4.7 · Workshop · dive 3

The closed spec

A spec is acceptable not when its author declares it done, but when it closes: every deliverable maps to a story, and the chain holds over the text.

The workshop's last move checks that closure on the produced Coverage line for F5.1 — Portal's engine-facade rung (the engine chapter's first rung, the seed of the F6 master invariant) against the real one. Match and complete, the spec is acceptable — the engine rung is ready for an Author. A missing story, and the readout names the gap. This is correct by definition, made operational on a real rung. Check the coverage on the right.

Check the coverage · drop a story to break it

D1 → US1 D2 → US2 D3 → US1 D4 → US1, US3 D5 → US1, US4 D6 → US3, US5 D7 → US4
Closed · acceptable — 7 of 7 deliverables covered. Every deliverable maps to at least one story; the chain holds and matches the real f5.1.stories.md. The engine rung is ready for an Author.

Closure is a rule, not a claim

The real f5.1.stories.md ends with one line, verbatim: Coverage: D1→US1 · D2→US2 · D3→US1 · D4→US1,US3 · D5→US1,US4 · D6→US3,US5 · D7→US4. Every deliverable D1 through D7 appears on the left of an arrow, so every deliverable is realized by at least one story. That is the closure condition: a spec is acceptable only when no deliverable is left without a covering story.

The hero figure runs that check. With all seven covered, the spec is closed. Drop one deliverable's story — simulate an incomplete .stories.md — and the readout names the uncovered deliverable: the spec is not closed, and the rung is not done. Completion is decided by the rule over the text, not by a claim that the work is finished.

This is the closure A1.05 named, made operational. “Done” is not an opinion — it is a property of the text: every deliverable mapped, every story accepted, no gate merely asserted.

Matching ground truth

Completeness is one half of closure; fidelity is the other. The workshop's output is acceptable only when it reproduces the real f5.1.stories.md — not merely a plausible-looking Coverage line. The second figure checks that. Switch between a faithful reproduction and a drifted one, where a single arrow is altered (D6 mapped to US3 only, dropping US5). The readout reports a match against ground truth, or names the divergence.

The two figures teach different moves. The hero tests whether every deliverable is covered — completeness. This one tests whether the produced line is the real line — fidelity. A spec passes only on both: covered everywhere, and true to the artifact it reproduces.

Produced vs real · switch the view

produced by the workshop D1→US1 · D2→US2 · D3→US1 · D4→US1,US3 D5→US1,US4 · D6→US3,US5 · D7→US4 real f5.1.stories.md D1→US1 · D2→US2 · D3→US1 · D4→US1,US3 D5→US1,US4 · D6→US3,US5 · D7→US4
Faithful — matches the real f5.1.stories.md line for line. Every arrow agrees; the produced spec is acceptable. Coverage is complete and true to ground truth.

A produced spec is acceptable on both counts: every deliverable covered, and the Coverage line true to the real f5.1.stories.md.

The closed spec on the Portal

On the Portal — the learning platform this course builds — the workshop's output is the real f5.1.md and f5.1.stories.md, and its Coverage line closes: every deliverable D1 through D7 maps to at least one story. So the engine chapter's first rung is acceptable as written — the contract an Author builds against in Part V, and an Operator accepts by proof.

The completion rule is the same one specs.approach.md states for every rung: done only when every deliverable maps to a story, every story's acceptance passes, every requirement is satisfied, and every invariant holds under test. “Correct by definition” is exactly this closure — there is no behaviour in the increment that is not pinned by a check or an invariant.

# f5.1.stories.md — the Coverage line, verbatim — every deliverable mapped:
Coverage: D1→US1 · D2→US2 · D3→US1 · D4→US1,US3 · D5→US1,US4 · D6→US3,US5 · D7→US4.

# The completion rule (from specs.approach.md), verbatim:
#   A rung is done only when every deliverable maps to a user story, every
#   story's acceptance passes, every requirement is satisfied, and every
#   invariant holds under test. "Correct by definition" means exactly this closure.
the principle

A spec closes by a rule over its text: every deliverable maps to a story, the chain holds, no gate is merely asserted. Completion is a closure, not a claim.

on the Portal

The produced Coverage line reproduces the real f5.1.stories.md (D1→US1 · D2→US2 · …); all seven deliverables are covered, so F5.1 is acceptable as written.

The workshop ends when the chain closes and matches ground truth — the engine chapter's first rung, correct by definition.

Recap — the workshop closes

A spec is acceptable when it closes on two counts: every deliverable maps to a covering story (completeness), and the produced Coverage line reproduces the real f5.1.stories.md (fidelity). The workshop's last move checks both on the F5.1 rung — and both hold, so the engine chapter's first spec is closed and acceptable, the contract Part V hands an Author. That closes A4: from examples-as-specification to a worked, closed spec of the Portal's engine, each technique landed on a real rung triad.

A4.7.3 closes the workshop and the chapter. Return to the A4.7 module hub to revisit the sequence, or to A4 · The spec layer for the chapter navigation. Part V then briefs an Author and builds the rung this spec defines.

References

Primary sources for completion as a closure over the text, and where this dive connects in the course.

Sources

Related in this course