jonnifyagile agents
jonnify / Agile Agent Workflow / A4 · The spec layer / A4.4 · From stories to a .stories.md

A4.4 · The spec layer

From stories to a .stories.md

A spec lists what an increment delivers. The stories file answers a different question — who wants each deliverable, and how we will know it works.

The contract between the two files is one rule: every deliverable is realized by at least one story, and every story names the invariants it encodes. A .stories.md ends with a Coverage line that maps each deliverable to the stories that realize it — and a deliverable absent from that line has no covering story. Pick a deliverable on the right to build the map; three dives walk the move end to end.

Build the coverage map · pick a deliverable

F6.1 deliverables · each realized by ≥1 story D1 the endpoint & its plug stack → US1 D2 the supervision-tree split → US1, US3, US4 D3 the router & browser pipeline → US2 D4 the controller over the facade → US2, US3, US5 D5 the HEEx view from assigns → US2 D6 the liveness route → US1 D7 verification: boot, render, restart → US4, US5 seven deliverables, five stories · every deliverable maps — the map is closed
D1 is realized by US1. Covered: 7 of 7 deliverables map to a story — the map is closed.

The contract between a spec and its stories

A spec answers what we build and how we know it is right. Its Deliverables section lists the concrete artifacts the rung produces. The .stories.md answers a neighbouring question — who wants each deliverable, and how we will know it works — as Connextra user stories (as a … I want … so that …) with Given/When/Then acceptance and an INVEST line. Two files, two questions, one rung.

The rule that binds them is plain: every deliverable is realized by at least one story, and every story names the invariants it encodes. A stories file records this with a single Coverage line at its end — a map from each deliverable to the stories that realize it. A deliverable that does not appear in the Coverage line has no covering story, and the rung cannot yet be accepted as done. The hero figure builds that map over the real F6.1 file; the dives read it line by line.

the principle

A list of deliverables is turned into a map of stories that realize them: every deliverable is covered, and every story names the invariants it exercises.

on the Portal

F6.1's seven deliverables map to five stories, recorded in the Coverage line. Each story's INVEST line names the F6.1 invariants it encodes — for example US2 encodes the master invariant.

A spec lists deliverables; the stories file covers them — and the Coverage line is the record that no deliverable is left without a story.

The three dives

Each dive takes one move, in the arc build → record → read: build the deliverable→story map, read the Coverage line that records it, then read what each story carries on its INVEST line. Read them in order — A4.4.1 starts.

After A4.4, the next module — A4.5 · Invariants — separates a property that must always hold from an acceptance check that holds for one scenario. Return to the A4 chapter navigation to continue.

References

The user-story and coverage tradition this module draws on, and where it connects in the course.

Sources

Related in this course