The task spec
Scoping a task means filling four fields. Not a template with twelve sections nobody reads — four questions a human can answer in minutes, each one load-bearing:
| Field | The question it answers | Why the gate needs it |
|---|---|---|
| Goal | What does this do? | The claim the review judges the diff against |
| Non-goals | What must this not do? | The tripwire — scope creep is visible the moment it happens |
| Affected zones | Which zones does it touch? | Becomes the grant: these zones open, nothing else does |
| Acceptance criteria | How do I know it worked? | What the quality gate checks before Done |
The vocabulary is deliberately borrowed, not invented: Goal / Non-goals from the design-doc tradition, acceptance criteria from agile, affected zones from change management’s “impacted areas”. If you have written a design doc, you have written this spec.
How the gate reads it
Section titled “How the gate reads it”Moving a task from Todo to In Progress mints a grant for exactly the zones in Affected zones, bound to a branch. In governance mode, a write into a protected zone outside them is denied with the reason and the way forward — not because the agent is untrusted, but because the task never claimed that territory. If the territory turns out to be needed, that’s an access request, not a workaround.
At close, the closing gate runs the check in reverse: diff ⊆ declared zones, plus the evidence the quality gate asks for.
The spec stays editable after the gate, with one exception: once the task has left Todo, its affected zones, its quality gate and its mode are fixed, because they are what the gate passed and what the close will judge (CC-1313). Correcting the goal or the criteria is still a cycle scope away.
A real one
Section titled “A real one”This documentation scaffold went through the gate as CC-75. Its actual spec, verbatim from the board:
Goal — Stand up the documentation site at /docs inside apps/web on Astro Starlight, themed to the CC design system, with the sidebar mirroring the 12-task IA and honest starter content.
Non-goals — Not the 12 content tasks themselves — they stay in Triage as the writing backlog. Not a second Astro app or a second Worker. No new UI library.
Affected zones — none:
apps/web/**is unprotected, which is the correct default for a surface that shares nothing with the enforcement core.Acceptance criteria — build passes with /docs and the landing coexisting; themed in light and dark; stubs name the board task that fills them; existing routes untouched and verified.
The scaffold under this page is that task’s output, and the spec above is what its review is judged against — a review still open on the board on 2026-10-18.