paqad-ai
Version:
Spec-driven development framework — AI agents that think before they type
49 lines (28 loc) • 2.13 kB
Markdown
# Step Classification Guide
verified: 2026-11-02
Use this guide when classifying each step of a proposed solution.
## ac-satisfying
The step is required to make a specific acceptance criterion observable. Removing the step would mean a stated AC cannot be verified. Cite the AC id (`AC-1.1`, `AC-2.3`) on every entry.
Example: a story for AC-1.1 "creates an invite" must include the database insert step. That step is `ac-satisfying`.
## necessary-setup
The step does not directly satisfy an AC, but another step (which IS `ac-satisfying`) cannot work without it. Examples: schema migration before query code, shared type before consumer, configuration value before the feature reads it.
A step is only `necessary-setup` when:
- another step in the same plan depends on it, AND
- removing it would break that other step at compile or run time.
If both conditions are not true, classify as `scaffolding` or `over-build`.
## scaffolding
The step adds defensive code, abstraction, or structure that the spec did not ask for. Common scaffolding patterns:
- `try/catch` around an internal call whose failure cannot occur or is already surfaced
- Null guards on values from typed sources where the type already excludes null
- Extra abstraction layer used in only one place
- Logging or metrics not requested by an AC or NFR
Recommend a leaner alternative or a deletion. Do NOT classify as scaffolding if the project's canonical module docs declare the pattern as a project convention.
## over-build
The step adds a feature, optimization, or generality that no AC requested and no other step requires. Examples:
- New `Repository` class for one query
- Pagination added to an endpoint when no AC mentions list-size limits
- Caching layer when no NFR mentions latency
- Configurable strategy where the spec demands one fixed behavior
Recommend deletion or splitting into a separate, explicitly out-of-scope story.
## When in doubt
If a step is genuinely ambiguous, do not guess: emit it under `Open Questions` with a one-line description of the ambiguity. Do not invent justification for keeping or dropping a step.