Summary
In deft/strategies/speckit.md, Phase 3 ("Plan / HOW") declares a ! MUST step:
Post-Phase 3: Render for Review
- ! Run
task spec:render to produce SPECIFICATION.md as a read-only rendered export
- !
SPECIFICATION.md is for human review only -- vbrief/specification.vbrief.json remains the source of truth
But nothing in the workflow contract prevents the agent from advancing directly to Phase 4 (Tasks) without invoking task spec:render. There is no transition criterion that gates Phase 3 -> Phase 4 on the render having occurred.
In auto-pilot / yolo mode this gap is invisible to the user: the agent silently writes vbrief/specification.vbrief.json, writes vbrief/plan.vbrief.json, and reports "documents complete" -- with no SPECIFICATION.md ever produced.
Reproduction
- Greenfield project with
vbrief/PROJECT-DEFINITION.vbrief.json declaring Strategy: speckit.
- Run an agent through speckit Phases 1-4 in yolo mode.
- Observe:
vbrief/specification.vbrief.json and vbrief/plan.vbrief.json are written, but SPECIFICATION.md does not exist anywhere.
- The agent reports completion with no warning.
Why #398 does not catch this
PR #400 / issue #398 added auto-render hooks (task check staleness warning, deft-directive-pre-pr quality-loop render). Both have explicit "skip silently if absent" semantics:
"Warn if present, ignore if absent." -- the files don't exist, the user hasn't opted into them, no nag.
That was a deliberate design choice for solo-iteration ergonomics (#398 Recommendation), not an oversight. But it means the first render is always a manual step, and speckit.md puts that step on the agent, and nothing enforces the agent doing it.
Proposed fix (sketch)
Pick one or combine:
-
Phase 3 transition criterion (cheapest): add to speckit.md Phase 3 Transition Criteria a ! clause: "SPECIFICATION.md exists and its hash matches the current vbrief/specification.vbrief.json narratives". The deft-directive-build / Phase 4 entry would refuse to proceed otherwise.
-
Skill enforcement: have deft-directive-setup (or whatever skill drives speckit) call task spec:render itself at the Phase 3 -> Phase 4 boundary instead of asking the agent to remember.
-
Workflow doc clarification: change the "Post-Phase 3: Render for Review" section from agent-instruction prose into a numbered transition gate, mirroring how Phase 2's approval gate is structured.
Related
Severity
Workflow-correctness bug in the speckit strategy. Doesn't corrupt data (vBRIEF is source of truth) but defeats Phase 3's stated review intent. Reproducible 100% on greenfield + yolo.
Discovered
During greenfield walkthrough of speckit Phase 1-4 in agentic mode.
Summary
In
deft/strategies/speckit.md, Phase 3 ("Plan / HOW") declares a!MUST step:But nothing in the workflow contract prevents the agent from advancing directly to Phase 4 (Tasks) without invoking
task spec:render. There is no transition criterion that gates Phase 3 -> Phase 4 on the render having occurred.In auto-pilot / yolo mode this gap is invisible to the user: the agent silently writes
vbrief/specification.vbrief.json, writesvbrief/plan.vbrief.json, and reports "documents complete" -- with noSPECIFICATION.mdever produced.Reproduction
vbrief/PROJECT-DEFINITION.vbrief.jsondeclaringStrategy: speckit.vbrief/specification.vbrief.jsonandvbrief/plan.vbrief.jsonare written, butSPECIFICATION.mddoes not exist anywhere.Why #398 does not catch this
PR #400 / issue #398 added auto-render hooks (
task checkstaleness warning,deft-directive-pre-prquality-loop render). Both have explicit "skip silently if absent" semantics:That was a deliberate design choice for solo-iteration ergonomics (#398 Recommendation), not an oversight. But it means the first render is always a manual step, and speckit.md puts that step on the agent, and nothing enforces the agent doing it.
Proposed fix (sketch)
Pick one or combine:
Phase 3 transition criterion (cheapest): add to speckit.md Phase 3 Transition Criteria a
!clause: "SPECIFICATION.mdexists and its hash matches the currentvbrief/specification.vbrief.jsonnarratives". Thedeft-directive-build/ Phase 4 entry would refuse to proceed otherwise.Skill enforcement: have
deft-directive-setup(or whatever skill drives speckit) calltask spec:renderitself at the Phase 3 -> Phase 4 boundary instead of asking the agent to remember.Workflow doc clarification: change the "Post-Phase 3: Render for Review" section from agent-instruction prose into a numbered transition gate, mirroring how Phase 2's approval gate is structured.
Related
task prd:render.Severity
Workflow-correctness bug in the speckit strategy. Doesn't corrupt data (vBRIEF is source of truth) but defeats Phase 3's stated review intent. Reproducible 100% on greenfield + yolo.
Discovered
During greenfield walkthrough of speckit Phase 1-4 in agentic mode.