What a Spec Is¶
A spec is an internal implementation artifact. Exactly one exists per feature. It carries the business rules, the evidence behind them, the acceptance criteria, and enough implementation anchoring that a planner does not have to invent it.
It is not a customer-facing document, and it is not the thing anyone signs off.
Why internal — the acceptance already happened¶
The design phase settles the business question before a spec exists. /vt-d-pd-3-prototype
builds something deployable, /vt-d-pd-4-validate puts it in front of real users, and that is where
the customer says yes or no. Only then does spec generation run.
The toolkit already names this: /vt-d-specs-from-prd sits under "Spec Generation (bridge between
design and development)" in Two Workflows. Everything before the bridge is
agreement; everything after it is construction.
A spec written for customer sign-off would therefore be the right document at the wrong time — and it would be shaped by the wrong reader. Writing for a customer pushes implementation detail out; writing for an implementer pulls it in. A spec that tries to do both does neither.
Scope. This describes the spec-driven Unified Product Development path. In the Knowledge Work workflow the deliverable is the artifact — a document, a policy, a report — and it is very often customer-facing. The distinction below applies to specs, not to deliverables.
Therefore: one spec, not two¶
The tempting failure is a second, "implementation-facing" spec that re-narrates the first. It shows
up wherever an external spec-first tool wants its own spec.md at the entry point, and it is always
a mistake for internal work.
Not because the second pass is worthless — it usually is not. In the case that produced this document, the re-narration resolved nine genuine engineering decisions, one of them by reading backend tests and finding a documented contract to be aspirational. That work is valuable.
It simply does not need a rival spec to live in. The toolkit already has homes for every part of it:
| What | Where | Produced by |
|---|---|---|
| Business rules, evidence, acceptance criteria, implementation anchors | spec.md — one |
/vt-d-specs-from-prd, /vt-d-spec-from-requirements |
| Engineering decisions — the gray areas resolved before planning | decisions.md |
/vt-d-shape |
| Approach and breakdown | plan.md, tasks.md |
/vt-d-2-plan |
| The evidence the spec cites | meeting records, change analyses | the project |
/vt-d-shape is defined as "identifies gray areas in a spec and locks implementation decisions
before planning begins". That is exactly the slot a second spec would occupy — and decisions.md
sits next to the spec instead of competing with it.
What "implementation-anchored" means¶
Concretely, and no further:
- Name the target. Which repo, which module, which entity will hold the data.
- Say where the decision is configuration rather than code. That single sentence redirects a planner who would otherwise open the wrong file.
- Keep the words fixed, not the tables. The spec prescribes the vocabulary every other artifact refers to; the schema belongs to the implementation. Renaming a field in the spec is a spec change; renaming a column is not.
Why a second spec goes stale, with numbers¶
The pattern is not hypothetical. In C010 an external implementer did the honest thing — his
generated spec carried a Source of truth: line pointing at ours, a line his template does not even
have. It was still worthless within three weeks:
| His copy | frozen at 2026-07-23 |
| The declared source since | three commits, one of them +61 / −31 lines |
| Consequence | his plan deferred four questions to a stakeholder walkthrough; three had been answered upstream weeks earlier |
A citation without a version is a citation nobody can check. Two artifacts holding the same truth will diverge, and the only reliable fix is not to create the second one.
Consequences for the toolkit¶
- Internal work needs no external spec-first tooling. The chain
spec → shape → plan → build → reviewcovers specify, clarify, plan and tasks already, and it does so without a second artifact. - Specs may name modules, classes and entities. That is not a leak of implementation detail into a business document — the spec is the implementation document.
- A spec handed to someone outside the workflow should carry a version, not just a path, if a copy is unavoidable during a transition.
Related¶
- Two Workflows — where the bridge sits
- Definition of Ready & Done — the quality bar a spec must clear; this document is about what kind of thing it is
- Project Lifecycle — the phases around it