@deftai/directive-content 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/deft/SKILL.md +6 -0
- package/.agents/skills/deft-directive-article-review/SKILL.md +11 -0
- package/.agents/skills/deft-directive-build/SKILL.md +10 -0
- package/.agents/skills/deft-directive-cost/SKILL.md +12 -0
- package/.agents/skills/deft-directive-debug/SKILL.md +13 -0
- package/.agents/skills/deft-directive-gh-arch/SKILL.md +11 -0
- package/.agents/skills/deft-directive-gh-slice/SKILL.md +10 -0
- package/.agents/skills/deft-directive-glossary/SKILL.md +10 -0
- package/.agents/skills/deft-directive-interview/SKILL.md +9 -0
- package/.agents/skills/deft-directive-pre-pr/SKILL.md +9 -0
- package/.agents/skills/deft-directive-refinement/SKILL.md +10 -0
- package/.agents/skills/deft-directive-release/SKILL.md +12 -0
- package/.agents/skills/deft-directive-review-cycle/SKILL.md +10 -0
- package/.agents/skills/deft-directive-setup/SKILL.md +10 -0
- package/.agents/skills/deft-directive-swarm/SKILL.md +10 -0
- package/.agents/skills/deft-directive-sync/SKILL.md +9 -0
- package/.agents/skills/deft-directive-triage/SKILL.md +9 -0
- package/.agents/skills/deft-directive-write-skill/SKILL.md +9 -0
- package/LICENSE.md +22 -0
- package/QUICK-START.md +167 -0
- package/UPGRADING.md +517 -0
- package/coding/build-output.md +28 -0
- package/coding/coding.md +235 -0
- package/coding/debugging.md +110 -0
- package/coding/holzmann.md +96 -0
- package/coding/hygiene.md +127 -0
- package/coding/security.md +158 -0
- package/coding/testing.md +162 -0
- package/coding/toolchain.md +44 -0
- package/commands.md +300 -0
- package/context/context.md +57 -0
- package/context/deterministic-split.md +67 -0
- package/context/examples.md +26 -0
- package/context/fractal-summaries.md +69 -0
- package/context/long-horizon.md +46 -0
- package/context/spec-deltas.md +177 -0
- package/context/tool-design.md +34 -0
- package/context/working-memory.md +62 -0
- package/contracts/boundary-maps.md +65 -0
- package/contracts/deterministic-questions.md +59 -0
- package/contracts/hierarchy.md +77 -0
- package/conventions/content-manifest.json +399 -0
- package/conventions/machine-generated-banner.md +130 -0
- package/conventions/references.md +120 -0
- package/conventions/rule-ownership.json +382 -0
- package/conventions/task-caching.md +43 -0
- package/conventions/vbrief-filenames.md +70 -0
- package/deployments/README.md +37 -0
- package/deployments/agentuity/README.md +138 -0
- package/deployments/agentuity/via-cli.md +380 -0
- package/deployments/agentuity/via-cloud.md +425 -0
- package/deployments/agentuity/via-github-actions.md +664 -0
- package/deployments/agentuity/via-gravity-network.md +606 -0
- package/deployments/agentuity/via-vpc.md +607 -0
- package/deployments/aws/README.md +38 -0
- package/deployments/aws/via-app-runner.md +612 -0
- package/deployments/aws/via-ecs-fargate.md +561 -0
- package/deployments/aws/via-elastic-beanstalk.md +628 -0
- package/deployments/aws/via-lambda.md +649 -0
- package/deployments/azure/README.md +37 -0
- package/deployments/azure/via-aks.md +390 -0
- package/deployments/azure/via-app-service.md +564 -0
- package/deployments/azure/via-container-apps.md +599 -0
- package/deployments/azure/via-functions.md +552 -0
- package/deployments/cloud-gov/README.md +63 -0
- package/deployments/cloud-gov/agents/compliance-docs.md +154 -0
- package/deployments/cloud-gov/agents.md +39 -0
- package/deployments/cloud-gov/cicd.md +64 -0
- package/deployments/cloud-gov/deployment.md +150 -0
- package/deployments/cloud-gov/logging.md +43 -0
- package/deployments/cloud-gov/manifest.md +121 -0
- package/deployments/cloud-gov/overview.md +58 -0
- package/deployments/cloud-gov/security.md +46 -0
- package/deployments/cloud-gov/services.md +72 -0
- package/deployments/cloud-gov/upstream/README.md +18 -0
- package/deployments/cloudflare/README.md +33 -0
- package/deployments/cloudflare/via-dashboard.md +83 -0
- package/deployments/cloudflare/via-git.md +90 -0
- package/deployments/cloudflare/via-github-actions.md +185 -0
- package/deployments/cloudflare/via-terraform.md +157 -0
- package/deployments/cloudflare/via-wrangler.md +165 -0
- package/deployments/fly-io/README.md +37 -0
- package/deployments/fly-io/via-dockerfile.md +648 -0
- package/deployments/fly-io/via-flyctl.md +653 -0
- package/deployments/fly-io/via-github-actions.md +695 -0
- package/deployments/fly-io/via-multi-region.md +598 -0
- package/deployments/google/README.md +34 -0
- package/deployments/google/via-app-engine.md +42 -0
- package/deployments/google/via-cloud-functions.md +23 -0
- package/deployments/google/via-cloud-run.md +330 -0
- package/deployments/google/via-gke.md +23 -0
- package/deployments/netlify/README.md +99 -0
- package/deployments/netlify/via-cli.md +17 -0
- package/deployments/netlify/via-functions.md +19 -0
- package/deployments/netlify/via-git.md +25 -0
- package/deployments/vercel/README.md +90 -0
- package/deployments/vercel/via-api.md +16 -0
- package/deployments/vercel/via-cli.md +17 -0
- package/deployments/vercel/via-git.md +24 -0
- package/docs/BROWNFIELD.md +179 -0
- package/docs/getting-started.md +137 -0
- package/docs/good-agents-md.md +137 -0
- package/events/README.md +89 -0
- package/events/event-record.schema.json +26 -0
- package/events/registry.json +166 -0
- package/events/registry.schema.json +71 -0
- package/glossary.md +145 -0
- package/incidents/README.md +81 -0
- package/incidents/_template.md +38 -0
- package/interfaces/cli.md +104 -0
- package/interfaces/rest.md +212 -0
- package/interfaces/tui.md +242 -0
- package/interfaces/web.md +123 -0
- package/languages/6502-DASM.md +132 -0
- package/languages/c.md +235 -0
- package/languages/commands.md +23 -0
- package/languages/cpp.md +132 -0
- package/languages/csharp.md +259 -0
- package/languages/dart.md +183 -0
- package/languages/delphi.md +218 -0
- package/languages/elixir.md +208 -0
- package/languages/go.md +78 -0
- package/languages/java.md +278 -0
- package/languages/javascript.md +163 -0
- package/languages/julia.md +175 -0
- package/languages/kotlin.md +193 -0
- package/languages/markdown.md +168 -0
- package/languages/mermaid.md +146 -0
- package/languages/officejs.md +392 -0
- package/languages/python.md +209 -0
- package/languages/r.md +163 -0
- package/languages/rust.md +216 -0
- package/languages/sql.md +216 -0
- package/languages/swift.md +153 -0
- package/languages/typescript.md +132 -0
- package/languages/vba.md +279 -0
- package/languages/vhdl.md +180 -0
- package/languages/visual-basic.md +151 -0
- package/languages/zig.md +196 -0
- package/meta/SOUL.md +27 -0
- package/meta/code-field.md +44 -0
- package/meta/morals.md +40 -0
- package/meta/philosophy.md +39 -0
- package/meta/project.md +49 -0
- package/meta/ralph.md +223 -0
- package/meta/security.md +80 -0
- package/meta/versioning.md +326 -0
- package/package.json +22 -0
- package/packs/lessons/lessons-pack-0.1.json +553 -0
- package/packs/patterns/patterns-pack-0.1.json +57 -0
- package/packs/rules/rules-pack-0.1.json +4767 -0
- package/packs/skills/skills-pack-0.1.json +262 -0
- package/packs/strategies/strategies-pack-0.1.json +167 -0
- package/packs/swarm-spec/swarm-spec-pack-0.1.json +17 -0
- package/patterns/executor-layer-credentials.md +227 -0
- package/patterns/llm-app.md +156 -0
- package/patterns/multi-agent.md +278 -0
- package/patterns/prompt-assembly-layer-ordering.md +154 -0
- package/patterns/role-as-overlay.md +179 -0
- package/platforms/2600.md +137 -0
- package/platforms/unity.md +329 -0
- package/references/composer-skill-porting.md +152 -0
- package/references/cost-models.md +163 -0
- package/references/ip-risk.md +246 -0
- package/references/plain-english-ux.md +275 -0
- package/resilience/context-pruning.md +67 -0
- package/resilience/continue-here.md +62 -0
- package/scm/changelog.md +276 -0
- package/scm/git.md +139 -0
- package/scm/github.md +265 -0
- package/secrets/.gitkeep +0 -0
- package/skills/deft-build/SKILL.md +20 -0
- package/skills/deft-directive-article-review/SKILL.md +156 -0
- package/skills/deft-directive-build/SKILL.md +302 -0
- package/skills/deft-directive-cost/SKILL.md +201 -0
- package/skills/deft-directive-debug/SKILL.md +140 -0
- package/skills/deft-directive-decompose/SKILL.md +96 -0
- package/skills/deft-directive-gh-arch/SKILL.md +160 -0
- package/skills/deft-directive-gh-slice/SKILL.md +199 -0
- package/skills/deft-directive-glossary/SKILL.md +118 -0
- package/skills/deft-directive-interview/SKILL.md +528 -0
- package/skills/deft-directive-pre-pr/SKILL.md +131 -0
- package/skills/deft-directive-probe/SKILL.md +127 -0
- package/skills/deft-directive-refinement/SKILL.md +403 -0
- package/skills/deft-directive-release/SKILL.md +266 -0
- package/skills/deft-directive-review-cycle/SKILL.md +401 -0
- package/skills/deft-directive-setup/SKILL.md +717 -0
- package/skills/deft-directive-swarm/SKILL.md +989 -0
- package/skills/deft-directive-sync/SKILL.md +288 -0
- package/skills/deft-directive-triage/SKILL.md +137 -0
- package/skills/deft-directive-write-skill/SKILL.md +169 -0
- package/skills/deft-interview/SKILL.md +16 -0
- package/skills/deft-pre-pr/SKILL.md +16 -0
- package/skills/deft-review-cycle/SKILL.md +16 -0
- package/skills/deft-roadmap-refresh/SKILL.md +16 -0
- package/skills/deft-setup/SKILL.md +20 -0
- package/skills/deft-swarm/SKILL.md +16 -0
- package/skills/deft-sync/SKILL.md +16 -0
- package/strategies/README.md +83 -0
- package/strategies/artifact-guards.md +85 -0
- package/strategies/bdd.md +115 -0
- package/strategies/brownfield.md +7 -0
- package/strategies/discuss.md +129 -0
- package/strategies/emit-hints.md +69 -0
- package/strategies/enterprise.md +193 -0
- package/strategies/interview.md +551 -0
- package/strategies/map.md +179 -0
- package/strategies/probe.md +151 -0
- package/strategies/rapid.md +155 -0
- package/strategies/research.md +155 -0
- package/strategies/roadmap.md +9 -0
- package/strategies/speckit.md +437 -0
- package/strategies/v0-20-contract.md +134 -0
- package/strategies/yolo.md +169 -0
- package/swarm/swarm.md +300 -0
- package/templates/COST-ESTIMATE.md +114 -0
- package/templates/PULL_REQUEST_TEMPLATE.md +35 -0
- package/templates/agent-prompt-preamble.md +409 -0
- package/templates/agents-entry.md +211 -0
- package/templates/agents-entry.placeholders.md +75 -0
- package/templates/embed.go +20 -0
- package/templates/embed_test.go +36 -0
- package/templates/make-spec-example.md +9 -0
- package/templates/make-spec.md +246 -0
- package/templates/project.md.template +52 -0
- package/templates/specification.md +1 -0
- package/templates/swarm-greptile-poller-prompt.md +556 -0
- package/templates/user.md.template +31 -0
- package/tools/RWLDL.md +80 -0
- package/tools/greptile.md +141 -0
- package/tools/installer.md +23 -0
- package/tools/taskfile-migration.md +32 -0
- package/tools/taskfile.md +185 -0
- package/tools/telemetry.md +285 -0
- package/vbrief/schemas/cache-meta.schema.json +137 -0
- package/vbrief/schemas/candidates.schema.json +130 -0
- package/vbrief/schemas/codebase-map.schema.json +213 -0
- package/vbrief/schemas/lessons-pack.schema.json +134 -0
- package/vbrief/schemas/patterns-pack.schema.json +84 -0
- package/vbrief/schemas/rules-pack.schema.json +105 -0
- package/vbrief/schemas/skills-pack.schema.json +94 -0
- package/vbrief/schemas/slices.schema.json +87 -0
- package/vbrief/schemas/strategies-pack.schema.json +89 -0
- package/vbrief/schemas/swarm-spec-pack.schema.json +84 -0
- package/vbrief/schemas/vbrief-core.schema.json +1022 -0
- package/vbrief/vbrief.md +684 -0
- package/verification/integration.md +76 -0
- package/verification/plan-checking.md +85 -0
- package/verification/uat.md +60 -0
- package/verification/verification.md +117 -0
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
<!-- AUTO-GENERATED by task packs:render -- DO NOT EDIT MANUALLY -->
|
|
2
|
+
<!-- Purpose: rendered strategy -->
|
|
3
|
+
<!-- Source of truth: packs/strategies/strategies-pack-0.1.json -->
|
|
4
|
+
<!-- Regenerate with: task packs:render -->
|
|
5
|
+
<!-- Edit the source, not this file. Slice instead of loading every strategy: task packs:slice strategies by-trigger --trigger <kw> (or list) -->
|
|
6
|
+
|
|
7
|
+
# SpecKit Strategy
|
|
8
|
+
|
|
9
|
+
A spec-driven development workflow inspired by [GitHub's spec-kit](https://github.com/github/spec-kit), with a Phase 4.5 readiness layer for decomposing broad implementation scopes into swarm-safe stories. Fully migrated to v0.20 (phases + stories emitted as date-prefixed vBRIEFs in proposed/; no legacy specification.vbrief.json).
|
|
10
|
+
|
|
11
|
+
**v0.20 note (s5-migrate-speckit-rapid-enterprise / #1166):** Speckit now emits only the canonical v0.20 shape (date-prefixed phase/epic + story vBRIEFs in proposed/, full PROJECT-DEFINITION.vbrief.json via task project:render or spec:render post, seeded lifecycle folders, no legacy specification.vbrief.json). Phase 4/4.5 scopes go to proposed/ (not pending/). See the dedicated ## v0.20 Output Shape section, the Artifacts Summary updated to the contract table, and the canonical contract `strategies/v0-20-contract.md` (s1-contract of #1166).
|
|
12
|
+
|
|
13
|
+
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
14
|
+
|
|
15
|
+
**⚠️ See also**: [strategies/interview.md](./interview.md) | [strategies/discuss.md](./discuss.md) | [core/glossary.md](../glossary.md) | [strategies/v0-20-contract.md](./v0-20-contract.md) | [artifact-guards.md](./artifact-guards.md) | [vbrief/vbrief.md](../vbrief/vbrief.md)
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
- ~ Large or complex projects with multiple contributors
|
|
20
|
+
- ~ Projects requiring formal specification review
|
|
21
|
+
- ~ When parallel agent development is planned
|
|
22
|
+
- ~ Enterprise environments with compliance requirements
|
|
23
|
+
- ? Skip Phase 1 if PROJECT-DEFINITION.vbrief.json Principles narrative already defined
|
|
24
|
+
|
|
25
|
+
## Workflow Overview
|
|
26
|
+
|
|
27
|
+
```mermaid
|
|
28
|
+
flowchart LR
|
|
29
|
+
subgraph speckit ["SpecKit Strategy (v0.20)"]
|
|
30
|
+
P["📜 Principles<br/><i>PROJECT-DEFINITION.vbrief.json</i>"]
|
|
31
|
+
S["📝 Specify<br/><i>WHAT/WHY → proposed/YYYY-MM-DD-*.vbrief.json</i>"]
|
|
32
|
+
PL["🏗️ Plan<br/><i>HOW → proposed/YYYY-MM-DD-*.vbrief.json</i>"]
|
|
33
|
+
T["✅ Scope<br/><i>Phase/epic vBRIEFs in proposed/</i>"]
|
|
34
|
+
D["🧩 Decompose<br/><i>Story vBRIEFs in proposed/</i>"]
|
|
35
|
+
I["🔨 Implement<br/><i>Execute</i>"]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
P -->|"Established"| S
|
|
39
|
+
S -->|"Approved"| PL
|
|
40
|
+
PL -->|"Reviewed"| T
|
|
41
|
+
T -->|"Approved"| D
|
|
42
|
+
D -->|"Ready stories"| I
|
|
43
|
+
|
|
44
|
+
style P fill:#c4b5fd,stroke:#7c3aed,color:#000
|
|
45
|
+
style S fill:#fef08a,stroke:#ca8a04,color:#000
|
|
46
|
+
style PL fill:#6ee7b7,stroke:#059669,color:#000
|
|
47
|
+
style T fill:#7dd3fc,stroke:#0284c7,color:#000
|
|
48
|
+
style D fill:#fde68a,stroke:#d97706,color:#000
|
|
49
|
+
style I fill:#f0abfc,stroke:#a855f7,color:#000
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
(See ## v0.20 Output Shape for exact artifact rules, the mandatory `task project:render` / `task spec:render` post calls, and citation of strategies/v0-20-contract.md.)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Phase 1: Principles
|
|
57
|
+
|
|
58
|
+
**Goal:** Establish immutable project principles before any specification.
|
|
59
|
+
|
|
60
|
+
**Output:** `Principles` narrative in `vbrief/PROJECT-DEFINITION.vbrief.json` (v0.20: plus any early proposed/ context vBRIEFs if needed)
|
|
61
|
+
|
|
62
|
+
! Before writing output artifacts, follow the guards in [artifact-guards.md](./artifact-guards.md) (Preparatory Guard for proposed/ items; Spec-Generating Guard for PROJECT-DEFINITION).
|
|
63
|
+
|
|
64
|
+
### Process
|
|
65
|
+
|
|
66
|
+
- ! Define 3-5 non-negotiable principles
|
|
67
|
+
- ! Include at least one anti-principle (⊗)
|
|
68
|
+
- ! Write principles as the `Principles` narrative in `vbrief/PROJECT-DEFINITION.vbrief.json`
|
|
69
|
+
- ~ Interview stakeholders about architectural constraints
|
|
70
|
+
- ⊗ Proceed without defined principles
|
|
71
|
+
- ⊗ Create a standalone `project.md` -- principles belong in PROJECT-DEFINITION.vbrief.json
|
|
72
|
+
|
|
73
|
+
### Transition Criteria
|
|
74
|
+
|
|
75
|
+
- ! `Principles` narrative in `vbrief/PROJECT-DEFINITION.vbrief.json` is complete
|
|
76
|
+
- ! All stakeholders have reviewed principles
|
|
77
|
+
- ~ No `[NEEDS CLARIFICATION]` markers remain
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Phase 2: Specify (WHAT/WHY)
|
|
82
|
+
|
|
83
|
+
**Goal:** Document WHAT to build and WHY, without implementation details.
|
|
84
|
+
|
|
85
|
+
**Output:** WHAT/WHY narratives in date-prefixed vBRIEF(s) in `vbrief/proposed/YYYY-MM-DD-*.vbrief.json` (v0.20; no singular specification.vbrief.json)
|
|
86
|
+
|
|
87
|
+
! Before writing output artifacts, follow the guards in [artifact-guards.md](./artifact-guards.md) (Preparatory Guard for proposed/ scope items; Spec-Generating Guard for PROJECT-DEFINITION).
|
|
88
|
+
|
|
89
|
+
Write the following narrative keys into the proposed/ vBRIEF `plan.narratives`
|
|
90
|
+
|
|
91
|
+
- `ProblemStatement` -- what problem this solves
|
|
92
|
+
- `Goals` -- desired outcomes
|
|
93
|
+
- `UserStories` -- user scenarios with priorities (P1, P2, P3) and acceptance scenarios (Given/When/Then)
|
|
94
|
+
- `Requirements` -- numbered functional (FR-001) and non-functional (NFR-001) requirements
|
|
95
|
+
- `SuccessMetrics` -- measurable success criteria (SC-001)
|
|
96
|
+
- `EdgeCases` -- boundary conditions and error handling
|
|
97
|
+
|
|
98
|
+
### Guidelines
|
|
99
|
+
|
|
100
|
+
- ! Focus on WHAT users need and WHY
|
|
101
|
+
- ! Use `[NEEDS CLARIFICATION: question]` for any ambiguity
|
|
102
|
+
- ! Number all requirements (FR-001, NFR-001) for traceability
|
|
103
|
+
- ! Prioritize user stories (P1, P2, P3)
|
|
104
|
+
- ⊗ Include HOW to implement (no tech stack, APIs, code)
|
|
105
|
+
- ⊗ Guess when uncertain -- mark it instead
|
|
106
|
+
- ⊗ Create `specs/` directories or standalone `spec.md` files -- all content goes in the proposed/ date-prefixed vBRIEF(s)
|
|
107
|
+
|
|
108
|
+
### Transition Criteria
|
|
109
|
+
|
|
110
|
+
- ! No `[NEEDS CLARIFICATION]` markers remain in narratives
|
|
111
|
+
- ! All user stories have acceptance scenarios
|
|
112
|
+
- ! Requirements are testable and unambiguous
|
|
113
|
+
- ! Stakeholders have approved specification narratives
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Phase 3: Plan (HOW)
|
|
118
|
+
|
|
119
|
+
**Goal:** Document HOW to build it with technical decisions.
|
|
120
|
+
|
|
121
|
+
**Input:** Approved WHAT/WHY narratives in the proposed/ date-prefixed vBRIEF(s) from Phase 2
|
|
122
|
+
|
|
123
|
+
**Output:** HOW narratives enriching the proposed/ vBRIEF(s) (v0.20; no singular specification.vbrief.json)
|
|
124
|
+
|
|
125
|
+
Add the following narrative keys to the proposed/ vBRIEF `plan.narratives`:
|
|
126
|
+
|
|
127
|
+
- `Architecture` -- high-level system design (components, data model, API contracts)
|
|
128
|
+
- `TechDecisions` -- technology choices with rationale
|
|
129
|
+
- `ImplementationPhases` -- phased delivery plan with dependencies
|
|
130
|
+
- `PreImplementationGates` -- simplicity gate, test-first gate
|
|
131
|
+
|
|
132
|
+
### Guidelines
|
|
133
|
+
|
|
134
|
+
- ! Reference spec requirements (FR-001, etc.) from Phase 2 narratives
|
|
135
|
+
- ! Document rationale for every technology choice
|
|
136
|
+
- ! Pass all pre-implementation gates before proceeding
|
|
137
|
+
- ⊗ Write implementation code
|
|
138
|
+
- ⊗ Create `specs/` directories or standalone `plan.md` files -- all content goes in the proposed/ date-prefixed vBRIEF(s)
|
|
139
|
+
|
|
140
|
+
### Post-Phase 3 Transition Gate: Render for Review
|
|
141
|
+
|
|
142
|
+
! Phase 3 -> Phase 4 is gated on an explicit render-and-review step, mirroring the Phase 2 approval gate. Complete the steps below **in order** before advancing. [skills/deft-directive-setup/SKILL.md](../skills/deft-directive-setup/SKILL.md) is required to invoke `task spec:render` at this boundary when running speckit interactively; the gate fails silently otherwise (yolo-mode agents used to skip it -- that is what this gate exists to prevent).
|
|
143
|
+
|
|
144
|
+
1. ! Run `task spec:render` (or `task project:render`) to (re-)produce derivative views from the proposed/ vBRIEFs + PROJECT-DEFINITION if needed for human review.
|
|
145
|
+
2. ! Confirm any rendered `SPECIFICATION.md` (if emitted as derivative) exists at the project root and contains the `<!-- deft:deprecated-redirect -->` sentinel.
|
|
146
|
+
3. ! The proposed/ vBRIEFs + PROJECT-DEFINITION are the source of truth. Derivatives are read-only exports.
|
|
147
|
+
4. ! Human reviewer approves (or requests changes). On approval, proceed to Phase 4.
|
|
148
|
+
|
|
149
|
+
### Transition Criteria
|
|
150
|
+
|
|
151
|
+
- ! All gates pass (or exceptions documented)
|
|
152
|
+
- ! Every spec requirement maps to a plan element
|
|
153
|
+
- ! Architecture reviewed and approved
|
|
154
|
+
- ! **Phase 3 -> Phase 4 transition criterion:** The proposed/ date-prefixed vBRIEF(s) + PROJECT-DEFINITION represent the approved spec (agents MUST NOT advance to Phase 4 without review of the v0.20 artifacts).
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Phase 4: Implementation Phase / Epic Scope Emission (v0.20)
|
|
159
|
+
|
|
160
|
+
**Goal:** Emit one broad scope vBRIEF per implementation phase or epic (plus stories via 4.5) so downstream tooling (`task roadmap:render`, `task project:render`, and Phase 4.5 decomposition) can operate against the lifecycle model described in [vbrief/vbrief.md](../vbrief/vbrief.md). All emitted to `proposed/` per v0.20 contract.
|
|
161
|
+
|
|
162
|
+
**Input:** Approved HOW narratives in the proposed/ date-prefixed vBRIEF(s) from Phase 3 (`ImplementationPhases` narrative describes IP-1..IP-N).
|
|
163
|
+
|
|
164
|
+
**Output:** N phase/epic scope vBRIEFs in `./vbrief/proposed/`, one per implementation phase or epic, using the filename convention `YYYY-MM-DD-ip<NNN>-<slug>.vbrief.json` (NNN = 3-digit zero-padded, 001..N). See [vbrief/vbrief.md — speckit Phase 4 scope vBRIEFs](../vbrief/vbrief.md#speckit-phase-4-scope-vbriefs) for the canonical convention. (v0.20: proposed/ not pending/.)
|
|
165
|
+
|
|
166
|
+
Phase 4 scopes are planning containers. They MAY keep broad acceptance in `plan.narratives.Acceptance` and MAY have `plan.items: []`. They are not valid concurrent swarm worker inputs unless explicitly marked as a single-story scope. Broad phase/epic scopes MUST pass through Phase 4.5 before swarm allocation.
|
|
167
|
+
|
|
168
|
+
! After emitting the phase/epic scope vBRIEF(s) to `vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
|
|
169
|
+
|
|
170
|
+
### Scope vBRIEF Shape
|
|
171
|
+
|
|
172
|
+
For each implementation phase IP-N, write a scope vBRIEF with:
|
|
173
|
+
|
|
174
|
+
- ! `vBRIEFInfo.version` — current `scripts/_vbrief_build.py::EMITTED_VBRIEF_VERSION`
|
|
175
|
+
- ! `plan.title` — phase title (e.g. "IP-3: Implement data layer")
|
|
176
|
+
- ! `plan.status` — `pending` (or proposed per lifecycle)
|
|
177
|
+
- ! `plan.narratives.Description` — short human summary of the phase
|
|
178
|
+
- ! `plan.narratives.Acceptance` — acceptance criteria copied from the spec
|
|
179
|
+
- ! `plan.narratives.Traces` — FR/NFR/IP IDs the phase covers (e.g. `FR-001, FR-003, NFR-002, IP-3`)
|
|
180
|
+
- ! `plan.references` — link back to the parent proposed/ vBRIEF from Phase 3 (`type: x-vbrief/plan`, `TrustLevel: internal`)
|
|
181
|
+
- ! `plan.metadata.kind` — `phase` or `epic`
|
|
182
|
+
- ! `plan.metadata.dependencies` — array of IP IDs this phase depends on / is blocked by (plan-level; mirrors the `edges[].blocks` structure used in earlier drafts)
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"vBRIEFInfo": { "version": "<EMITTED_VBRIEF_VERSION>" },
|
|
187
|
+
"plan": {
|
|
188
|
+
"title": "IP-3: Implement data layer",
|
|
189
|
+
"status": "pending",
|
|
190
|
+
"narratives": {
|
|
191
|
+
"Description": "Stand up the data layer described in the Phase 3 proposed/ vBRIEF Architecture.",
|
|
192
|
+
"Acceptance": "Repository interfaces defined; CRUD round-trips pass integration tests.",
|
|
193
|
+
"Traces": "FR-001, FR-003, NFR-002, IP-3"
|
|
194
|
+
},
|
|
195
|
+
"metadata": {
|
|
196
|
+
"kind": "phase",
|
|
197
|
+
"dependencies": ["ip-1", "ip-2"]
|
|
198
|
+
},
|
|
199
|
+
"references": [
|
|
200
|
+
{ "type": "x-vbrief/plan", "uri": "2026-05-26-ip002-plan.vbrief.json", "TrustLevel": "internal" }
|
|
201
|
+
],
|
|
202
|
+
"items": []
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### plan.vbrief.json — Session Tracker Only
|
|
208
|
+
|
|
209
|
+
- ! `plan.vbrief.json` reverts to its canonical session-todo role defined in [vbrief/vbrief.md — plan.vbrief.json](../vbrief/vbrief.md#planvbriefjson). It is the agent-private tactical plan for the current session, not the project-wide IP list.
|
|
210
|
+
- ! While working on a specific scope vBRIEF, `plan.vbrief.json` MUST carry a `planRef` to that scope vBRIEF in `vbrief/proposed/` or `vbrief/active/`.
|
|
211
|
+
- ⊗ Emit the project-wide Phase 4 task list to `plan.vbrief.json` — write per-IP scope vBRIEFs to `vbrief/proposed/` instead.
|
|
212
|
+
|
|
213
|
+
### Migrating Legacy speckit Projects
|
|
214
|
+
|
|
215
|
+
- ~ Projects that already emitted a speckit-shaped `plan.vbrief.json` (project-wide IP list) can convert to the new model with:
|
|
216
|
+
```
|
|
217
|
+
python scripts/migrate_vbrief.py --speckit-plan vbrief/plan.vbrief.json
|
|
218
|
+
```
|
|
219
|
+
The translator emits one scope vBRIEF per IP into `vbrief/proposed/` (3-digit padded filenames, bilingual `edges` reader so both `from/to` and legacy `source/target` translate correctly) and writes the remaining session-level scaffold back to `plan.vbrief.json`.
|
|
220
|
+
|
|
221
|
+
### Guidelines
|
|
222
|
+
|
|
223
|
+
- ! Derive one scope vBRIEF per implementation phase from `ImplementationPhases`
|
|
224
|
+
- ! Populate `Description`, `Acceptance`, and `Traces` narratives per [vbrief/vbrief.md — canonical narrative keys](../vbrief/vbrief.md#scope-vbrief-narrative-keys)
|
|
225
|
+
- ! Use `plan.metadata.dependencies` (plan-level) rather than item-level `blocks` edges for cross-scope dependencies
|
|
226
|
+
- ! Use `plan.metadata.kind = "phase"` or `"epic"` for broad implementation scopes
|
|
227
|
+
- ~ Size each phase for 1-4 hours of work so the swarm allocator can distribute cleanly
|
|
228
|
+
- ⊗ Create phases not traceable to a spec requirement
|
|
229
|
+
- ⊗ Allocate Phase 4 phase/epic scope vBRIEFs directly to concurrent swarm workers
|
|
230
|
+
|
|
231
|
+
### Transition Criteria
|
|
232
|
+
|
|
233
|
+
- ! Every implementation phase from `ImplementationPhases` has a matching scope vBRIEF in `./vbrief/proposed/`
|
|
234
|
+
- ! Each scope vBRIEF has `Description`, `Acceptance`, and `Traces` narratives
|
|
235
|
+
- ! Each scope vBRIEF carries a `references` entry linking back to the parent Phase 3 proposed/ vBRIEF with `TrustLevel: internal`
|
|
236
|
+
- ! Cross-scope dependencies in `plan.metadata.dependencies` form a valid DAG (no cycles)
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Phase 4.5: Story Decomposition / Swarm Readiness
|
|
241
|
+
|
|
242
|
+
**Goal:** Convert approved Phase 4 phase/epic scopes into child story vBRIEFs suitable for parallel agents.
|
|
243
|
+
|
|
244
|
+
**Input:** Phase 4 phase/epic vBRIEFs in `./vbrief/pending/` or `./vbrief/active/`.
|
|
245
|
+
|
|
246
|
+
**Output:** Story-level child vBRIEFs whose executable acceptance criteria live in `plan.items` and whose `plan.metadata.swarm` contract proves they are safe to allocate.
|
|
247
|
+
|
|
248
|
+
! After emitting the story vBRIEF(s) to `vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
|
|
249
|
+
|
|
250
|
+
### Process
|
|
251
|
+
|
|
252
|
+
1. ! Inspect approved specification narratives and Phase 4 scope vBRIEFs.
|
|
253
|
+
2. ! Identify `plan.metadata.kind = "phase"` or `"epic"` scopes that are too broad for direct implementation.
|
|
254
|
+
3. ! Draft a deterministic decomposition proposal: stories, dependencies, expected file scope, verification commands, traces, and conflict groups.
|
|
255
|
+
4. ! Store the temporary proposal artifact under `vbrief/.eval/decompositions/<parent-slug>.json`; derive `<parent-slug>` from the parent vBRIEF filename by removing `.vbrief.json` and any leading `YYYY-MM-DD-` date prefix.
|
|
256
|
+
5. ! Ask for explicit user approval before writing child story vBRIEFs.
|
|
257
|
+
6. ! Validate the approved draft with `task scope:decompose -- <parent.vbrief.json> --draft vbrief/.eval/decompositions/<parent-slug>.json --check`, then apply it without `--check`.
|
|
258
|
+
7. ! Run `task swarm:readiness -- vbrief/active/*.vbrief.json` before concurrent allocation, or point it at the candidate child story files for a dry readiness review before activation.
|
|
259
|
+
|
|
260
|
+
### Story vBRIEF Requirements
|
|
261
|
+
|
|
262
|
+
Each Phase 4.5 child story vBRIEF MUST include:
|
|
263
|
+
|
|
264
|
+
- ! `plan.metadata.kind = "story"`
|
|
265
|
+
- ! non-empty `plan.items`
|
|
266
|
+
- ! `plan.narratives.Description` with at least two concrete sentences
|
|
267
|
+
- ! `plan.narratives.ImplementationPlan` with at least two concrete implementation steps
|
|
268
|
+
- ! executable acceptance in each story's `plan.items`
|
|
269
|
+
- ! `plan.narratives.UserStory` in the form `As a <role>, I want <capability>, so that <outcome>.`
|
|
270
|
+
- ! 2-5 concrete, observable acceptance criteria unless explicitly justified
|
|
271
|
+
- ! explicit dependencies in `plan.metadata.swarm.depends_on`
|
|
272
|
+
- ! traceability back to requirements via `Traces` narratives or explicit trace justification
|
|
273
|
+
- ! expected file scope in `plan.metadata.swarm.file_scope`
|
|
274
|
+
- ! verify commands in `plan.metadata.swarm.verify_commands`
|
|
275
|
+
- ! expected outputs/evidence in `plan.metadata.swarm.expected_outputs`
|
|
276
|
+
- ! swarm readiness metadata in `plan.metadata.swarm`
|
|
277
|
+
- ! `planRef` pointing to the parent phase/epic scope
|
|
278
|
+
- ! parent phase/epic `references` updated to point to every child story
|
|
279
|
+
|
|
280
|
+
### Decomposition Command
|
|
281
|
+
|
|
282
|
+
Use the deterministic command surface:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
task scope:decompose -- vbrief/pending/2026-05-12-ip001-auth.vbrief.json --draft vbrief/.eval/decompositions/ip001-auth.json --check
|
|
286
|
+
task scope:decompose -- vbrief/pending/2026-05-12-ip001-auth.vbrief.json --draft vbrief/.eval/decompositions/ip001-auth.json
|
|
287
|
+
task scope:decompose -- --check
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
The draft JSON is a temporary proposal artifact, not a vBRIEF. Agents SHOULD write draft proposals under `vbrief/.eval/decompositions/`, which is gitignored specifically for local decomposition scratch. Derive `<parent-slug>` from the parent vBRIEF filename by removing `.vbrief.json` and any leading `YYYY-MM-DD-` date prefix. Agents MUST NOT leave decomposition draft JSON files at the workspace root. The command validates and applies a proposed decomposition rather than freely inventing one. It creates generated child story vBRIEFs as lifecycle artifacts, defaulting to `vbrief/pending/`, preserves origin/provenance references, sets each child `planRef` to the parent scope, updates parent references to include children, validates the dependency DAG, rejects dependency cycles, and rejects ready stories missing user-story shape, concrete observable acceptance, narrow file scope, focused verify commands, or traces. Parent `plan.items` are input signals, not automatic child stories.
|
|
291
|
+
|
|
292
|
+
Parent phase/epic acceptance MAY remain in `plan.narratives.Acceptance` as context. Executable acceptance for swarm work MUST be redistributed into child story `plan.items`.
|
|
293
|
+
|
|
294
|
+
### Swarm Readiness Command
|
|
295
|
+
|
|
296
|
+
Use the readiness gate before swarm allocation:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
task swarm:readiness -- vbrief/active/*.vbrief.json
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
The readiness report lists ready stories, blocked stories, decomposition-needed epics/phases, dependency waves, conflict groups, a file-overlap matrix, and missing fields. It exits non-zero when candidate work is not swarm-ready for concurrent allocation. `readiness=ready` means ready for concurrent allocation; sequential-safe or low-confidence work MUST use another state such as `sequential` or `needs_refinement` and will fail this gate until refined or scheduled outside concurrent swarm allocation.
|
|
303
|
+
|
|
304
|
+
### Transition Criteria
|
|
305
|
+
|
|
306
|
+
- ! Candidate swarm work consists only of `kind=story` vBRIEFs
|
|
307
|
+
- ! Every candidate story has non-empty `plan.items`
|
|
308
|
+
- ! Every candidate story has a product-shaped `UserStory`, 2-5 observable acceptance criteria unless justified, file scope, verify commands, traces or trace justification, and readiness metadata.
|
|
309
|
+
- ! Dependencies resolve and form a DAG
|
|
310
|
+
- ! No unsafe file-scope overlap exists among parallel stories
|
|
311
|
+
- ! No `size=large` story is marked `parallel_safe=true`
|
|
312
|
+
- ! No ready story uses broad file globs, only generic verification such as `task check`, `parallel_safe=false`, or `file_scope_confidence=low`
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## Phase 5: Implement
|
|
317
|
+
|
|
318
|
+
**Goal:** Execute scope vBRIEFs following test-first discipline.
|
|
319
|
+
|
|
320
|
+
**Input:** Story-level scope vBRIEFs in `./vbrief/pending/` (promote to `./vbrief/active/` via `task scope:activate` when work begins). `./vbrief/plan.vbrief.json` holds the current session's tactical todo list and carries a `planRef` to the active scope. Concurrent swarm implementation requires Phase 4.5-ready stories.
|
|
321
|
+
|
|
322
|
+
### Process
|
|
323
|
+
|
|
324
|
+
- ! Write tests BEFORE implementation (Red)
|
|
325
|
+
- ! Implement minimal code to pass tests (Green)
|
|
326
|
+
- ! Refactor while keeping tests green (Refactor)
|
|
327
|
+
- ! Update scope vBRIEF `plan.status` and folder via `task scope:*` commands as work progresses (`pending` → `running` → `completed`)
|
|
328
|
+
- ! Update `./vbrief/plan.vbrief.json` session todos as tactical steps progress (session-scoped; do NOT put the project-wide IP list here)
|
|
329
|
+
- ~ Work on story vBRIEFs whose `plan.metadata.swarm.depends_on` entries are already completed in parallel when possible
|
|
330
|
+
|
|
331
|
+
### File Creation Order
|
|
332
|
+
|
|
333
|
+
1. Create contract/API specifications
|
|
334
|
+
2. Create test files (contract → integration → unit)
|
|
335
|
+
3. Create source files to make tests pass
|
|
336
|
+
4. Refactor and document
|
|
337
|
+
|
|
338
|
+
### Guidelines
|
|
339
|
+
|
|
340
|
+
- ! Follow the `Principles` narrative in `vbrief/PROJECT-DEFINITION.vbrief.json` throughout
|
|
341
|
+
- ! Move scope vBRIEFs through lifecycle folders using `task scope:activate|complete|cancel|block|unblock`
|
|
342
|
+
- ⊗ Implement without failing tests first
|
|
343
|
+
- ⊗ Skip refactoring phase
|
|
344
|
+
- ⊗ Write the project-wide IP list to `plan.vbrief.json` — use `vbrief/pending/` scope vBRIEFs as the durable task tracker
|
|
345
|
+
- ⊗ Allocate broad `kind=epic` or `kind=phase` scopes to concurrent swarm workers before decomposition
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Artifacts Summary (pre-v0.20, for reference only during migration)
|
|
350
|
+
|
|
351
|
+
| Phase | Artifact | Purpose |
|
|
352
|
+
|-------|----------|---------|
|
|
353
|
+
| 1. Principles | `vbrief/PROJECT-DEFINITION.vbrief.json` | Governing rules (Principles narrative) |
|
|
354
|
+
| 2. Specify | date-prefixed in `vbrief/proposed/` | WHAT/WHY narratives (v0.20) |
|
|
355
|
+
| 3. Plan | date-prefixed in `vbrief/proposed/` | HOW narratives (enriches Phase 2; v0.20) |
|
|
356
|
+
| 3b. Render (derivative) | `SPECIFICATION.md` (via `task spec:render`, sentinel only) | Read-only human review export (optional) |
|
|
357
|
+
| 3c. Render PRD (derivative) | `PRD.md` (via `task prd:render`, sentinel only) | Optional stakeholder-review export |
|
|
358
|
+
| 4. Tasks | `./vbrief/proposed/YYYY-MM-DD-ip<NNN>-<slug>.vbrief.json` (one per IP/epic) | Phase/epic scope vBRIEFs (v0.20: proposed/) drive roadmap/project render + decomposition |
|
|
359
|
+
| 4.5. Story decomposition | Child story vBRIEFs with `plan.metadata.swarm` in proposed/ | Swarm-ready executable units (v0.20) |
|
|
360
|
+
| 4b. Session todos | `./vbrief/plan.vbrief.json` | Session-level tactical plan (carries `planRef` to active scope) |
|
|
361
|
+
| 5. Implement | Code + tests | Working software, optionally via swarm |
|
|
362
|
+
|
|
363
|
+
## Directory Structure (v0.20)
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
project/
|
|
367
|
+
├── vbrief/
|
|
368
|
+
│ ├── PROJECT-DEFINITION.vbrief.json # Phase 1: Principles narrative
|
|
369
|
+
│ ├── proposed/ # Phase 2+: date-prefixed WHAT/WHY/HOW + IP scopes + stories
|
|
370
|
+
│ │ └── YYYY-MM-DD-*.vbrief.json
|
|
371
|
+
│ │ └── YYYY-MM-DD-ip001-....vbrief.json
|
|
372
|
+
│ ├── plan.vbrief.json # Phase 4b: session todos (planRef to active scope)
|
|
373
|
+
│ └── pending/ active/ etc. # Lifecycle (seeded empty or with promoted)
|
|
374
|
+
├── SPECIFICATION.md # Optional derivative (task spec:render; sentinel only)
|
|
375
|
+
├── PRD.md # Optional derivative (task prd:render; sentinel only)
|
|
376
|
+
└── src/ # Phase 5
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
(See ## v0.20 Output Shape and `strategies/v0-20-contract.md` for the authoritative table row for speckit.)
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## v0.20 Output Shape (s5-migrate-speckit-rapid-enterprise / #1166)
|
|
384
|
+
|
|
385
|
+
This strategy has been migrated to the full v0.20 output shape so speckit-generated projects are accepted by the build skill Pre-Cutover Detection Guard with zero errors on first attempt (resolves the speckit row from the #1166 inconsistency table and the s5 story acceptance criteria, including story-level vBRIEFs in proposed/ instead of only phase/epic in pending/).
|
|
386
|
+
|
|
387
|
+
- ! Seed the five lifecycle folders under `vbrief/` if any are missing: `proposed/`, `pending/`, `active/`, `completed/`, `cancelled/`.
|
|
388
|
+
- ! Emit all scope items (principles context, spec phases/stories, implementation phases/epics) exclusively as date-prefixed scope vBRIEFs in `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.json` (or the ipNNN convention for phases per vbrief.md). For speckit, phases use `YYYY-MM-DD-ip<NNN>-<slug>.vbrief.json` in proposed/; stories from Phase 4.5 also in proposed/. Decompose plans into focused, buildable vBRIEFs (v0.6 schema) rather than a monolithic legacy spec.
|
|
389
|
+
- ! After the proposed/ vBRIEFs are written (or at Phase 3/4 boundaries), invoke `task project:render` (or `task spec:render` post) from the repo root to generate/refresh the complete `vbrief/PROJECT-DEFINITION.vbrief.json` (items registry derived from the lifecycle folders).
|
|
390
|
+
- ⊗ Never emit `vbrief/specification.vbrief.json` (or any legacy dual-write).
|
|
391
|
+
- ~ `SPECIFICATION.md` / `PRD.md` at the project root, if produced at all, must be only read-only derivatives that include the v0.20 deprecated-redirect sentinel. The source of truth is the vbrief/ lifecycle (proposed/ phases + stories) + PROJECT-DEFINITION.
|
|
392
|
+
- ! Before writing any proposed/ vBRIEFs or PROJECT-DEFINITION, follow the guards in [artifact-guards.md](./artifact-guards.md) (Preparatory Guard for scope items in proposed/; Spec-Generating Guard for PROJECT-DEFINITION).
|
|
393
|
+
- ! Final output tree must pass the deterministic v0.20 strategy output validation gate (s2-deterministic-gate) and the build Pre-Cutover Detection Guard with zero warnings/errors. See full acceptance in the s5 vBRIEF (a1: date-prefixed stories in proposed/ + deterministic gate; a2: speckit story-level in proposed/ not only pending phases; a3: no legacy specification.vbrief.json) and the 1166 decomposition.
|
|
394
|
+
- ! Cite the canonical contract `strategies/v0-20-contract.md` (s1-contract) for the exact shape and the per-strategy table row (speckit: Yes lifecycle; Yes PROJECT-DEFINITION Phase 1+; proposed/ (phases + stories date-prefixed); Never specification.vbrief.json; Omit (use task spec:render post) for SPEC/PRD).
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## Artifacts Summary (v0.20)
|
|
399
|
+
|
|
400
|
+
**Speckit (full 5-phase with Phase 4/4.5):**
|
|
401
|
+
|
|
402
|
+
| Artifact | Purpose | Created By |
|
|
403
|
+
|----------|---------|------------|
|
|
404
|
+
| `vbrief/PROJECT-DEFINITION.vbrief.json` | Principles + full items registry | Speckit Phase 1 + `task project:render` |
|
|
405
|
+
| `vbrief/proposed/YYYY-MM-DD-*.vbrief.json` + `YYYY-MM-DD-ipNNN-*.vbrief.json` | All spec (WHAT/WHY/HOW) + phases/epics/stories (date-prefixed; per v0.20 contract and vbrief.md speckit convention) | Speckit Phases 2-4.5 |
|
|
406
|
+
| `vbrief/{proposed,pending,active,completed,cancelled}/` | All five lifecycle folders seeded | Speckit |
|
|
407
|
+
| (optional derivative) `SPECIFICATION.md` / `PRD.md` | Human-readable (includes deprecated-redirect sentinel only) | `task spec:render` / `task prd:render` (post) |
|
|
408
|
+
| `vbrief/plan.vbrief.json` | Session-level tactical plan (planRef to active) | Speckit (internal) |
|
|
409
|
+
|
|
410
|
+
**Pre-v0.20 / legacy artifacts that MUST NOT be produced by this strategy:**
|
|
411
|
+
|
|
412
|
+
- `vbrief/specification.vbrief.json`
|
|
413
|
+
- Primary handoff `SPECIFICATION.md` or `PRD.md` at project root (without sentinel)
|
|
414
|
+
- Phase/epic scopes in `pending/` (use `proposed/`)
|
|
415
|
+
|
|
416
|
+
See the full table and rules in `strategies/v0-20-contract.md` (speckit row reproduced above).
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## Invoking This Strategy
|
|
421
|
+
|
|
422
|
+
Set in PROJECT-DEFINITION.vbrief.json narratives:
|
|
423
|
+
```json
|
|
424
|
+
"Strategy": "strategies/speckit.md"
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Or explicitly:
|
|
428
|
+
```
|
|
429
|
+
Use the speckit strategy for this project.
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
Start with:
|
|
433
|
+
```
|
|
434
|
+
I want to build [project] with features:
|
|
435
|
+
1. [feature]
|
|
436
|
+
2. [feature]
|
|
437
|
+
```
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<!-- AUTO-GENERATED by task packs:render -- DO NOT EDIT MANUALLY -->
|
|
2
|
+
<!-- Purpose: rendered strategy -->
|
|
3
|
+
<!-- Source of truth: packs/strategies/strategies-pack-0.1.json -->
|
|
4
|
+
<!-- Regenerate with: task packs:render -->
|
|
5
|
+
<!-- Edit the source, not this file. Slice instead of loading every strategy: task packs:slice strategies by-trigger --trigger <kw> (or list) -->
|
|
6
|
+
|
|
7
|
+
# v0.20 Strategy Output Contract
|
|
8
|
+
|
|
9
|
+
Canonical contract for the artifacts that every spec-generating strategy MUST produce to be v0.20-conformant.
|
|
10
|
+
|
|
11
|
+
**Legend (from RFC2119):** !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
12
|
+
|
|
13
|
+
**⚠️ See also**: [vbrief/vbrief.md](../vbrief/vbrief.md) | [strategies/README.md](./README.md) | [strategies/artifact-guards.md](./artifact-guards.md) | [skills/deft-directive-build/SKILL.md](../skills/deft-directive-build/SKILL.md) (Pre-Cutover Detection Guard) | [scripts/migrate_vbrief.py](../../scripts/migrate_vbrief.py) | [conventions/machine-generated-banner.md](../conventions/machine-generated-banner.md)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Purpose
|
|
18
|
+
|
|
19
|
+
Spec-generating strategies (interview, yolo, speckit, rapid, enterprise) historically produced inconsistent artifacts:
|
|
20
|
+
|
|
21
|
+
- Some wrote only the legacy `vbrief/specification.vbrief.json` + root `SPECIFICATION.md`
|
|
22
|
+
- Some wrote scope vBRIEFs without date prefixes and still dual-wrote the old singular spec file
|
|
23
|
+
- None consistently seeded the full v0.20 lifecycle folders + `PROJECT-DEFINITION.vbrief.json` + date-prefixed proposed/ items
|
|
24
|
+
|
|
25
|
+
This caused immediate build failures via the Pre-Cutover Detection Guard for any project generated through those strategies.
|
|
26
|
+
|
|
27
|
+
This contract is the single source of truth. All future strategy implementations and migrations target exactly these artifacts. The build skill, vbrief validators, and (post-s2) deterministic shape gate enforce it.
|
|
28
|
+
|
|
29
|
+
## When to Use
|
|
30
|
+
|
|
31
|
+
Use this contract when authoring, reviewing, or migrating a spec-generating strategy that creates project definition artifacts, scope vBRIEFs, rendered views, or migration handoff material. It also applies when a guard, validator, or setup path needs to decide whether a project is current v0.20 output or legacy pre-cutover content.
|
|
32
|
+
|
|
33
|
+
## Workflow
|
|
34
|
+
|
|
35
|
+
1. Identify whether the strategy is spec-generating or preparatory.
|
|
36
|
+
2. Apply the matching row in the per-strategy summary table.
|
|
37
|
+
3. Create the required lifecycle folders before writing scope artifacts.
|
|
38
|
+
4. Write authoritative vBRIEF content to `vbrief/PROJECT-DEFINITION.vbrief.json` and date-prefixed `vbrief/proposed/*.vbrief.json` files.
|
|
39
|
+
5. Omit root `SPECIFICATION.md` / `PROJECT.md`, or write only deprecation redirect stubs when transitional UX requires them.
|
|
40
|
+
6. Run the validator and content gates before treating the strategy output as v0.20-conformant.
|
|
41
|
+
|
|
42
|
+
## Canonical v0.20 Output Shape
|
|
43
|
+
|
|
44
|
+
For a project that has completed any spec-generating strategy (or the full speckit flow), the following MUST exist and be the only authoritative sources:
|
|
45
|
+
|
|
46
|
+
### Required Directory Structure
|
|
47
|
+
- `vbrief/proposed/`
|
|
48
|
+
- `vbrief/pending/`
|
|
49
|
+
- `vbrief/active/`
|
|
50
|
+
- `vbrief/completed/`
|
|
51
|
+
- `vbrief/cancelled/`
|
|
52
|
+
|
|
53
|
+
All five lifecycle folders MUST be present (even if empty). This is the cutover signal used by pre-cutover guards.
|
|
54
|
+
|
|
55
|
+
### Required Root-Level vBRIEF Artifact
|
|
56
|
+
- `vbrief/PROJECT-DEFINITION.vbrief.json` (complete: narratives + items registry populated from the strategy session)
|
|
57
|
+
|
|
58
|
+
`task project:render` MAY be invoked by the strategy or left to the user; the end state after strategy + any render MUST have a non-skeleton PROJECT-DEFINITION.
|
|
59
|
+
|
|
60
|
+
### Scope vBRIEF Placement & Naming (Strict)
|
|
61
|
+
- All new scope vBRIEFs (user stories, phases, epics from speckit Phase 4/4.5, etc.) MUST be written **only** to `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.json`
|
|
62
|
+
- Filenames MUST be date-prefixed using the creation date (immutable per vbrief.md conventions)
|
|
63
|
+
- Bare names (e.g. `scaffold.vbrief.json`) or names without date prefix are FORBIDDEN in v0.20
|
|
64
|
+
- The old singular `vbrief/specification.vbrief.json` MUST NOT be written or updated by v0.20 strategies (it is a legacy container; new work uses the lifecycle folders + PROJECT-DEFINITION)
|
|
65
|
+
|
|
66
|
+
### SPECIFICATION.md & PROJECT.md (Derivative / Deprecated)
|
|
67
|
+
- Strategies SHOULD OMIT writing `SPECIFICATION.md` and `PROJECT.md` entirely. These are **rendered views** only.
|
|
68
|
+
- If a strategy does emit them (for UX continuity during transition), they MUST be written **exclusively** as deprecation-redirect stubs:
|
|
69
|
+
- Start with the canonical 4-line machine-generated banner (see conventions/machine-generated-banner.md)
|
|
70
|
+
- Fifth line: `<!-- deft:deprecated-redirect -->`
|
|
71
|
+
- Short explanatory body pointing to `vbrief/PROJECT-DEFINITION.vbrief.json` and the lifecycle folders
|
|
72
|
+
- Never contain real spec or project content
|
|
73
|
+
- Real content in these files (without the sentinel) triggers the build/setup/sync pre-cutover guards and forces migration.
|
|
74
|
+
|
|
75
|
+
### Legacy `specification.vbrief.json`
|
|
76
|
+
- ⊗ No v0.20 strategy may create or dual-write `vbrief/specification.vbrief.json` alongside the new model artifacts.
|
|
77
|
+
- Existing legacy files are handled only by `task migrate:vbrief` (which ingests them into scope vBRIEFs + PROJECT-DEFINITION and leaves a redirect stub at root if needed).
|
|
78
|
+
|
|
79
|
+
### plan.vbrief.json and continue.vbrief.json
|
|
80
|
+
- Session/tactical state files are permitted at vbrief/ root (they carry `planRef` links). They are not part of the "spec output" contract but strategies that maintain chaining state (e.g. interview) update them per their own rules.
|
|
81
|
+
|
|
82
|
+
## Per-Strategy Summary Table (Target State After Migration)
|
|
83
|
+
|
|
84
|
+
| Strategy | Type | Must Create Lifecycle Folders | Must Write PROJECT-DEFINITION | Scope vBRIEFs Location | specification.vbrief.json | SPECIFICATION.md / PROJECT.md |
|
|
85
|
+
|--------------|------------------|-------------------------------|-------------------------------|-----------------------------------------|-----------------------------|----------------------------------------|
|
|
86
|
+
| interview | spec-generating | Yes | Yes (narratives + items) | proposed/YYYY-MM-DD-*.vbrief.json only | Never (post-migration) | Omit or deprecation redirect only |
|
|
87
|
+
| yolo | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.vbrief.json only | Never | Omit or deprecation redirect only |
|
|
88
|
+
| speckit | spec-generating | Yes | Yes (Phase 1+) | proposed/YYYY-MM-DD-*.vbrief.json only (phases + stories) | Never | Omit (use task spec:render post) |
|
|
89
|
+
| rapid | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.vbrief.json only | Never | Omit or deprecation redirect only |
|
|
90
|
+
| enterprise | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.vbrief.json only | Never | Omit or deprecation redirect only |
|
|
91
|
+
| preparatory (research, discuss, map, etc.) | preparatory | Yes (if first touch) | No (unless also spec path) | proposed/YYYY-MM-DD-*.vbrief.json (context/decision vBRIEFs) | N/A | N/A (preparatory only) |
|
|
92
|
+
|
|
93
|
+
## Agent & Strategy Author Rules
|
|
94
|
+
|
|
95
|
+
- ! Every spec-generating strategy document MUST contain an "Artifacts" or "Output" section that explicitly cites this contract (`strategies/v0-20-contract.md`) and reproduces the relevant row from the table above.
|
|
96
|
+
- ! Before emitting any vBRIEF artifact, follow the guards in `artifact-guards.md` (updated to reference this contract).
|
|
97
|
+
- ! Date prefixes on scope vBRIEFs are mandatory for swarm readiness, filename sorting, and dedup.
|
|
98
|
+
- ⊗ Write real content to root SPECIFICATION.md or PROJECT.md from a strategy.
|
|
99
|
+
- ⊗ Emit bare-named vBRIEFs in proposed/ or anywhere outside the dated convention.
|
|
100
|
+
- ⊗ Dual-write the old `specification.vbrief.json` in a v0.20 flow.
|
|
101
|
+
|
|
102
|
+
## Verification & Enforcement
|
|
103
|
+
|
|
104
|
+
- Build / setup / sync skills: Pre-Cutover Detection Guard (any missing lifecycle folder or real-content legacy md triggers redirect to migrate).
|
|
105
|
+
- `task vbrief:validate` + `task check`: filename convention, folder/status consistency, PROJECT-DEFINITION presence.
|
|
106
|
+
- Post-s2: deterministic validation gate (s2 story) will parse strategy output trees against this contract and fail non-conformant generations.
|
|
107
|
+
- Content tests + migration stories exercise the before/after shapes.
|
|
108
|
+
|
|
109
|
+
## Migration Path for Existing Strategies
|
|
110
|
+
|
|
111
|
+
The s3/s4/s5 stories migrate the individual strategy files (and their emitted examples) to the shape defined here. This contract document is the target spec they implement against; do not change strategies first.
|
|
112
|
+
|
|
113
|
+
## When to Use
|
|
114
|
+
|
|
115
|
+
Use this contract when:
|
|
116
|
+
- Authoring a new spec-generating strategy (interview, yolo, speckit, rapid, enterprise, etc.).
|
|
117
|
+
- Migrating an existing strategy to v0.20 (the s3/s4/s5 work).
|
|
118
|
+
- Implementing or updating the deterministic validation gate (s2) or build pre-cutover guards.
|
|
119
|
+
- Writing migration tooling (`migrate_vbrief.py`, reconcile scripts, etc.).
|
|
120
|
+
- Auditing a generated project for v0.20 conformance.
|
|
121
|
+
|
|
122
|
+
## Workflow
|
|
123
|
+
|
|
124
|
+
1. Read the Canonical v0.20 Output Shape section.
|
|
125
|
+
2. Ensure your strategy (or migration) writes exactly the required folders + `PROJECT-DEFINITION.vbrief.json` + dated proposed/ vBRIEFs.
|
|
126
|
+
3. Never write the legacy `specification.vbrief.json` or real-content `SPECIFICATION.md`/`PROJECT.md`.
|
|
127
|
+
4. Cite this contract explicitly in your strategy's "Artifacts" / "Output" section (see the Per-Strategy Summary Table).
|
|
128
|
+
5. Run `task check` (or the deterministic gate once s2 lands) to validate.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
**Owned by**: `vbrief/active/2026-05-26-define-canonical-v020-strategy-output-contract.vbrief.json` (s1-contract of #1166 strategy consistency decomposition)
|
|
133
|
+
|
|
134
|
+
This contract lands first so that s2 (gate) and the migration stories have an unambiguous target.
|