---
title: "The task spec: four fields the gate enforces | CommitCycle"
description: "Four fields — Goal, Non-goals, Affected zones, Acceptance criteria — borrowed from design docs and agile, and how the gate holds the work to them."
url: https://commitcycle.com/docs/concepts/task-spec/
language: en
---

# The task spec

> Four fields — Goal, Non-goals, Affected zones, Acceptance criteria — borrowed from design docs and agile, and how the gate holds the work to them.

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

Moving a task from Todo to **In Progress** mints a [grant](https://commitcycle.com/docs/concepts/grants/) 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](https://commitcycle.com/docs/concepts/grants/), not a workaround.

At close, the [closing gate](https://commitcycle.com/docs/operations/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

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.
