* test(#4011): TDD gate keys on TDD_MODE alone, not the MVP intersection Contract updates: no shipped line may conjoin MVP_MODE with TDD_MODE as a gate condition, the end-of-phase escalation must not require MVP, the executor agent's gate section triggers on TDD_MODE alone, and the gate semantics reference loads without MVP_MODE. * fix(#4011): key the TDD runtime gate on TDD_MODE alone The RED-commit gate shipped as #76's MVP slice kept the paired invocation's conjunct, so workflow.tdd_mode=true was silently inert on every non-MVP phase, contradicting references/tdd.md's own contract. Drops the MVP conjunct from the per-task gate and the end-of-phase review escalation; rescopes execute-mvp-tdd.md's load condition, gsd-executor's gate section, and mvp-concepts' intersection claim. MVP remains free to imply TDD; the file is not renamed (stated assumption in the PR body). * test(#4011): scope no-conjunct detector to shell conditions; clean stale MVP+TDD phrasing Review follow-ups: the detector now only inspects if/[ condition lines so explanatory prose mentioning both flags cannot trip it; remaining 'under/outside MVP+TDD' phrases in execute-phase.md, the gate reference, and docs/INVENTORY.md now describe TDD-mode semantics. Emitted-Drift-Ack-Growth: execute-phase.md — TDD-gate decoupling comment + escalation rescoping (#4011) Emitted-Drift-Ack-Growth: gsd-executor.md — gate section trigger rescoped to TDD_MODE alone (#4011) * chore(#4011): backfill changeset pr number --------- Co-authored-by: sim <sim@local>
4.8 KiB
4.8 KiB
MVP Concepts — index
Cross-reference for the six MVP-related reference files. Each file has a single, narrow purpose. This index exists so future readers (and agents resolving @-refs) can find the right file without grepping the directory.
Canonical domain terms for the concepts named below live in CONTEXT.md under "Domain terms" — start there if you need a precise definition.
File map
| File | Purpose | Loaded by |
|---|---|---|
gsd-core/references/planner-mvp-mode.md |
Rules. Vertical-slice planning rules, slice ordering, Walking Skeleton constraints. | gsd-planner agent when MVP_MODE=true |
gsd-core/references/skeleton-template.md |
Template. Shape of SKELETON.md for new-project Phase 1 under --mvp. |
gsd-planner agent when the Walking Skeleton gate fires |
gsd-core/references/user-story-template.md |
Template. Format and slot definitions for As a / I want to / So that. |
gsd-mvp-phase workflow during interactive prompting; gsd-planner when emitting the ## Phase Goal header |
gsd-core/references/spidr-splitting.md |
Splitting discipline. Five-axis decomposition (Spike, Paths, Interfaces, Data, Rules) for stories too large for one phase. | gsd-mvp-phase workflow when the user story exceeds size threshold |
gsd-core/references/execute-mvp-tdd.md |
Gate. TDD runtime gate semantics: when it fires, what it checks, halt-and-report protocol, end-of-phase blocking escalation, Behavior-Adding Task definition. | gsd-executor agent when TDD_MODE=true (#4011) |
gsd-core/references/verify-mvp-mode.md |
UAT framing. Three-section UAT structure (user-flow → technical → coverage), anti-patterns, User Flow Coverage section in VERIFICATION.md. |
gsd-verifier agent when the phase under verification has mode: mvp |
Concept-to-file map
If you're looking for the canonical statement of a concept, this is where to find it:
- MVP Mode resolution chain —
workflows/plan-phase.mdStep 1 (CLI flag → roadmap → config → false). Mirrored inexecute-phase.mdandverify-work.md. **Mode:** mvpparser —gsd-core/bin/lib/roadmap.cjs(searchPhaseInContent+cmdRoadmapAnalyze). Workflows compare against the parser output, never re-parse.- User Story regex —
/^As a .+, I want to .+, so that .+\.$/— applied at runtime bygsd-verifier(the user-story-format guard) andgsd-mvp-phase(interactive validation). - Behavior-Adding Task predicate —
gsd-core/references/execute-mvp-tdd.md(the canonical three-check definition). Applied at runtime bygsd-executor. - Walking Skeleton gate condition —
workflows/plan-phase.md(Phase 1 + new project +--mvp+ no prior summaries → emitSKELETON.md). - MVP+TDD Gate (RED→GREEN enforcement) —
gsd-core/references/execute-mvp-tdd.md. - MVP-mode UAT framing (user-flow first, technical deferred) —
gsd-core/references/verify-mvp-mode.md. - Per-phase mode authoring —
workflows/mvp-phase.md(writes**Mode:** mvpto ROADMAP.md after collecting the user story). - Project-wide mode prompt at init —
workflows/new-project.md(Vertical MVP vs Horizontal Layers question).
Interactions worth knowing
--mvpand--prd <file>together on Phase 1. Both paths converge at the planner spawn. The PRD express path createsCONTEXT.mdfrom the PRD file and continues to the research step; the Walking Skeleton gate fires independently when Phase 1 + new project +--mvp. The planner therefore receives bothWALKING_SKELETON=trueand PRD-derived context. This is intentional: the PRD informs what the skeleton should prove.MVP_MODEis all-or-nothing per phase, not per task. A phase is either MVP-mode or standard. Mixed-mode phases are not supported (PRD #2826 Q1).TDD_MODEis independent ofMVP_MODE. TDD can be on without MVP, MVP can be on without TDD. The TDD runtime gate activates onTDD_MODEalone (#4011); MVP mode remains free to imply TDD without being required by it.- The
gsd-roadmapperagent makes the MVP/standard decision once at project init based onPROJECT_MODE. Per-phase opt-in/out happens later via/gsd:mvp-phaseor/gsd-edit-phase.
Tests
Structural contract tests for each integration site live under tests/:
plan-phase-mvp-flag.test.cjs— plan-phase MVP_MODE resolution chainplanner-mvp-mode.test.cjs— gsd-planner agent MVP sectionmvp-phase-command.test.cjs,mvp-phase-integration.test.cjs,mvp-phase-spidr.test.cjs—/gsd:mvp-phaseexecute-mvp-tdd-gate.test.cjs,executor-mvp-tdd-section.test.cjs— MVP+TDD Gateverifier-mvp-section.test.cjs,verify-mvp-uat.test.cjs— verifier UAT framingnew-project-mvp-prompt.test.cjs— mode prompt at initprogress-mvp-display.test.cjs,stats-mvp-display.test.cjs,graphify-mvp-viz.test.cjs— discovery surfaces