feat(strategies): convert speckit and enterprise to vBRIEF-centric outputs (#361, #362, #364)#376
Conversation
…tputs (#361, #362, #364) - speckit Phase 1: output changed from project.md to Principles narrative in vbrief/PROJECT-DEFINITION.vbrief.json - speckit Phase 2: output changed from specs/[feature]/spec.md to WHAT/WHY narratives in vbrief/specification.vbrief.json (ProblemStatement, Goals, UserStories, Requirements, SuccessMetrics, EdgeCases) - speckit Phase 3: output changed from specs/[feature]/plan.md to HOW narratives enriching vbrief/specification.vbrief.json (Architecture, TechDecisions, ImplementationPhases, PreImplementationGates) - speckit Phase 3: added post-phase task spec:render instruction for human review of rendered SPECIFICATION.md - speckit: removed all specs/ directory references and directory structure - speckit: updated Artifacts Summary and Directory Structure sections - speckit: updated mermaid diagram labels to reference vBRIEF files - enterprise Stage 1: PRD narratives now written to vbrief/specification.vbrief.json; task prd:render produces PRD.md as read-only export for Gate 1 approval - enterprise Stage 3: specification narratives enriched in vbrief/specification.vbrief.json; task spec:render produces SPECIFICATION.md as read-only export for Gate 3 approval - enterprise: updated Output Artifacts section -- specification.vbrief.json is primary, rendered .md files are read-only exports - enterprise: approval gates and ADRs in docs/adr/ preserved - Added 9 tests in tests/content/test_strategy_vbrief.py covering vBRIEF references, no-specs-dir assertion, render command references, gate preservation, and ADR independence - Added CHANGELOG.md entry under [Unreleased]
Greptile SummaryThis PR converts Confidence Score: 5/5Safe to merge — documentation-only conversion with no logic changes and passing test suite All strategy file content is internally consistent, path references match across all sections, and no old specs/ or standalone .md artifacts remain. The sole finding is a P2 observation about absence-only test assertions, which does not block merge. No files require special attention Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
subgraph speckit["SpecKit Strategy (vBRIEF-centric)"]
SK1["Phase 1: Principles\nvbrief/PROJECT-DEFINITION.vbrief.json"]
SK2["Phase 2: Specify WHAT/WHY\nvbrief/specification.vbrief.json"]
SK3["Phase 3: Plan HOW\nvbrief/specification.vbrief.json\n+ task spec:render → SPECIFICATION.md"]
SK4["Phase 4: Tasks\nvbrief/plan.vbrief.json"]
SK5["Phase 5: Implement\nCode + tests"]
SK1 --> SK2 --> SK3 --> SK4 --> SK5
end
subgraph enterprise["Enterprise Strategy (vBRIEF-centric)"]
EN1["Stage 1: PRD Narratives\nvbrief/specification.vbrief.json\n+ task prd:render → PRD.md"]
G1{"Gate 1:\nPRD Approval"}
EN2["Stage 2: ADRs\ndocs/adr/adr-NNN-*.md"]
G2{"Gate 2:\nADR Approval"}
EN3["Stage 3: Specification\nvbrief/specification.vbrief.json\n+ task spec:render → SPECIFICATION.md"]
G3{"Gate 3:\nSpec Approval"}
EN4["Stage 4: Build\nCode + tests"]
EN1 --> G1 --> EN2 --> G2 --> EN3 --> G3 --> EN4
end
style SK1 fill:#c4b5fd,stroke:#7c3aed
style SK2 fill:#fef08a,stroke:#ca8a04
style SK3 fill:#6ee7b7,stroke:#059669
style EN1 fill:#fef08a,stroke:#ca8a04
style EN3 fill:#6ee7b7,stroke:#059669
style G1 fill:#fca5a5,stroke:#dc2626
style G2 fill:#fca5a5,stroke:#dc2626
style G3 fill:#fca5a5,stroke:#dc2626
Prompt To Fix All With AIThis is a comment left during a code review.
Path: tests/content/test_strategy_vbrief.py
Line: 76-88
Comment:
**Absence-only assertions miss the positive regression guard**
`test_speckit_no_standalone_plan_md_input` and `test_speckit_no_project_md_principles_reference` each check that a very specific legacy string is absent, but neither asserts that the replacement content is present. If someone accidentally removed the Phase 4 input or Phase 5 Principles reference entirely, both tests would still pass.
Pairing each absence check with a presence check on the new vBRIEF path would give stronger regression protection:
```python
def test_speckit_no_standalone_plan_md_input(self) -> None:
assert "Approved `plan.md`" not in self._text
# Also verify the replacement content exists
assert "vbrief/specification.vbrief.json" in self._text # already covered by test_speckit_references_specification_vbrief
def test_speckit_no_project_md_principles_reference(self) -> None:
assert "project.md Principles" not in self._text
# Phase 5 must positively reference the vBRIEF path
assert "vbrief/PROJECT-DEFINITION.vbrief.json" in self._text # already covered by test_speckit_references_project_definition_vbrief
```
The existing `test_speckit_references_*` tests already provide the positive side, so the absence-only tests are not wrong — just worth noting that coverage of the positive assertion comes from a different test method.
How can I resolve this? If you propose a fix, please make it concise.Reviews (2): Last reviewed commit: "fix: address Greptile review findings (b..." | Re-trigger Greptile |
- speckit Phase 4 input: changed stale 'Approved plan.md' reference to 'Approved HOW narratives in vbrief/specification.vbrief.json' (P1) - speckit Phase 5 guideline: changed stale 'Follow project.md Principles' to 'Follow the Principles narrative in vbrief/PROJECT-DEFINITION.vbrief.json' (P1) - Added 2 regression tests: test_speckit_no_standalone_plan_md_input and test_speckit_no_project_md_principles_reference to guard against stale pre-vBRIEF artifact references - MCP unavailable in this session -- used gh api fallback for review comments
Summary
Convert speckit and enterprise strategies to vBRIEF-centric outputs, replacing hand-authored markdown artifacts with vBRIEF narratives and render commands.
speckit.md (#361, #362)
enterprise.md (#364)
Tests
Checklist
Closes #361
Closes #362
Closes #364
Parent: #338