@deftai/directive-content 0.104.0 → 0.106.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/Taskfile.yml +12 -6
- package/UPGRADING.md +6 -2
- package/coding/coding.md +2 -2
- package/commands.md +42 -17
- package/contracts/agent-hook-readiness.md +3 -3
- package/contracts/closed-verb-authz.md +14 -2
- package/contracts/design-critique.md +100 -0
- package/docs/directive-lifecycle.md +12 -4
- package/docs/project-invariants.md +79 -0
- package/docs/scope-provenance.md +53 -8
- package/main.md +3 -1
- package/meta/ralph.md +1 -1
- package/package.json +1 -1
- package/packs/rules/rules-pack-0.1.json +3 -3
- package/packs/skills/skills-pack-0.1.json +31 -11
- package/packs/strategies/strategies-pack-0.1.json +13 -13
- package/scm/github.md +35 -2
- package/skills/deft-directive-build/SKILL.md +26 -1
- package/skills/deft-directive-design-critique/SKILL.md +46 -0
- package/skills/deft-directive-gh-slice/SKILL.md +2 -2
- package/skills/deft-directive-probe/SKILL.md +4 -2
- package/skills/deft-directive-refinement/SKILL.md +1 -1
- package/skills/deft-directive-release/SKILL.md +5 -3
- package/skills/deft-directive-review-cycle/SKILL.md +38 -12
- package/skills/deft-directive-setup/SKILL.md +2 -0
- package/skills/deft-directive-swarm/SKILL.md +22 -6
- package/skills/deft-directive-swarm/references/core-ops.md +3 -1
- package/skills/deft-directive-swarm/references/core-phase-0.md +1 -0
- package/skills/deft-directive-swarm/references/core-phase-3.md +1 -1
- package/skills/deft-directive-swarm/references/core-phase-4.md +27 -11
- package/skills/deft-directive-swarm/references/core-phase-5-6.md +4 -1
- package/skills/deft-directive-sync/SKILL.md +1 -1
- package/strategies/README.md +4 -4
- package/strategies/bdd.md +6 -6
- package/strategies/discuss.md +8 -8
- package/strategies/emit-hints.md +6 -6
- package/strategies/enterprise.md +18 -18
- package/strategies/interview.md +4 -4
- package/strategies/map.md +6 -6
- package/strategies/probe.md +22 -18
- package/strategies/rapid.md +16 -16
- package/strategies/research.md +6 -6
- package/strategies/roadmap.md +1 -1
- package/strategies/speckit.md +52 -52
- package/strategies/v0-20-contract.md +21 -21
- package/strategies/yolo.md +12 -12
- package/tasks/engine.yml +2 -0
- package/tasks/occupancy.yml +17 -0
- package/tasks/policy.yml +10 -0
- package/tasks/scm.yml +13 -7
- package/tasks/scope.yml +2 -2
- package/tasks/vbrief.yml +3 -2
- package/tasks/verify.yml +34 -4
- package/tasks/xbrief.yml +43 -0
- package/templates/agent-prompt-preamble.md +16 -7
- package/templates/agents-entry.md +8 -3
- package/templates/design-critique-brief.md +41 -0
- package/vbrief/schemas/vbrief-core.schema.json +72 -0
package/strategies/rapid.md
CHANGED
|
@@ -10,7 +10,7 @@ Quick prototyping workflow -- v0.20 date-prefixed story vBRIEF output with minim
|
|
|
10
10
|
|
|
11
11
|
**Ceremony dial (#3214):** when `plan.policy.ceremonyDial` (or session inputs) selects depth `rapid` — default for S-task × frontier model on a project-shaped session — session ritual / gate depth follows this light path. See `task policy:show --field=ceremonyDial`. Non-project sessions select `minimal` and compose the #3014 minimal AGENTS profile research pointer instead.
|
|
12
12
|
|
|
13
|
-
**v0.20 note (s5-migrate-speckit-rapid-enterprise / #1166):** Rapid now emits only the canonical v0.20 shape (date-prefixed story vBRIEFs in proposed/, full PROJECT-DEFINITION.
|
|
13
|
+
**v0.20 note (s5-migrate-speckit-rapid-enterprise / #1166):** Rapid now emits only the canonical v0.20 shape (date-prefixed story vBRIEFs in proposed/, full PROJECT-DEFINITION.xbrief.json via task project:render, seeded lifecycle folders, no legacy specification.vbrief.json). See the dedicated ## v0.20 Output Shape section and the canonical contract `strategies/v0-20-contract.md` (s1-contract of #1166).
|
|
14
14
|
|
|
15
15
|
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
16
16
|
|
|
@@ -38,7 +38,7 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
38
38
|
|
|
39
39
|
! Describe the prototype goal in one sentence: what are you trying to learn or prove?
|
|
40
40
|
|
|
41
|
-
- ! Record the goal in a new date-prefixed story vBRIEF written to `
|
|
41
|
+
- ! Record the goal in a new date-prefixed story vBRIEF written to `xbrief/proposed/YYYY-MM-DD-<kebab-slug>.xbrief.json` (e.g. as the plan title or a brief narrative in the v0.6 schema). Use today's date for the prefix and a descriptive slug.
|
|
42
42
|
- ~ Include a time-box if applicable (e.g. "4-hour spike")
|
|
43
43
|
- ⊗ Skip this step -- even throwaway work needs a clear objective
|
|
44
44
|
|
|
@@ -54,11 +54,11 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
54
54
|
|
|
55
55
|
! 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).
|
|
56
56
|
|
|
57
|
-
! Write a slim story scope vBRIEF to `
|
|
57
|
+
! Write a slim story scope vBRIEF to `xbrief/proposed/YYYY-MM-DD-<kebab-slug>.xbrief.json` -- no PRD, no approval gate. Decompose the rapid plan into one or more focused, buildable story vBRIEFs (v0.6 schema) rather than a monolithic legacy spec.
|
|
58
58
|
|
|
59
59
|
- ! Use the Light path from [interview.md](./interview.md) unconditionally
|
|
60
60
|
- ! Mark `plan.status` as `draft` (not `approved`) to signal prototype quality
|
|
61
|
-
- ! After the proposed/ vBRIEF(s) are written, invoke `task project:render` (from repo root) to generate/refresh the complete `
|
|
61
|
+
- ! After the proposed/ vBRIEF(s) are written, invoke `task project:render` (from repo root) to generate/refresh the complete `xbrief/PROJECT-DEFINITION.xbrief.json`
|
|
62
62
|
- ~ Keep tasks coarse-grained -- 3-5 tasks is typical for a spike
|
|
63
63
|
- ⊗ Generate a PRD or require approval -- rapid skips both
|
|
64
64
|
- ⊗ Hand-author `SPECIFICATION.md` directly -- it is a rendered derivative only (see v0.20 Output Shape)
|
|
@@ -86,9 +86,9 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
86
86
|
|
|
87
87
|
## Output Artifacts
|
|
88
88
|
|
|
89
|
-
- `
|
|
90
|
-
- `
|
|
91
|
-
- `
|
|
89
|
+
- `xbrief/proposed/YYYY-MM-DD-*.xbrief.json` (one or more) -- lightweight story scope vBRIEF(s) with `draft` status (primary artifact; date-prefixed per v0.20 contract)
|
|
90
|
+
- `xbrief/PROJECT-DEFINITION.xbrief.json` -- complete project gestalt + items registry (via `task project:render` invoked by Rapid)
|
|
91
|
+
- `xbrief/{proposed,pending,active,completed,cancelled}/` -- all five lifecycle folders seeded
|
|
92
92
|
- (optional derivative) `SPECIFICATION.md` -- read-only human-readable export (includes deprecated-redirect sentinel; via `task spec:render` if invoked)
|
|
93
93
|
- Prototype code (may be discarded)
|
|
94
94
|
- Findings summary (inline in the proposed/ vBRIEF or as a separate note)
|
|
@@ -97,7 +97,7 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
97
97
|
|
|
98
98
|
## Fits into Chaining Gate
|
|
99
99
|
|
|
100
|
-
Rapid is a **spec-generating** strategy. Selecting it at the chaining gate produces date-prefixed story vBRIEF(s) in `
|
|
100
|
+
Rapid is a **spec-generating** strategy. Selecting it at the chaining gate produces date-prefixed story vBRIEF(s) in `xbrief/proposed/` (and refreshes `xbrief/PROJECT-DEFINITION.xbrief.json` via `task project:render`) and moves directly to implementation. There is no chaining back to preparatory strategies. See the v0.20 Output Shape section below for the exact contract.
|
|
101
101
|
|
|
102
102
|
---
|
|
103
103
|
|
|
@@ -126,11 +126,11 @@ Rapid lightens cold ceremony only. The **positive verification content** of the
|
|
|
126
126
|
|
|
127
127
|
This strategy has been migrated to the full v0.20 output shape so rapid-generated projects are accepted by the build skill Pre-Cutover Detection Guard with zero errors on first attempt (resolves the rapid row from the #1166 inconsistency table and the s5 story acceptance criteria).
|
|
128
128
|
|
|
129
|
-
- ! Seed the five lifecycle folders under `
|
|
130
|
-
- ! Emit story scope items exclusively as date-prefixed scope vBRIEFs: `
|
|
131
|
-
- ! After the proposed/ stories are written, invoke `task project:render` (run from the repo root) to generate/refresh the complete `
|
|
129
|
+
- ! Seed the five lifecycle folders under `xbrief/` if any are missing: `proposed/`, `pending/`, `active/`, `completed/`, `cancelled/`.
|
|
130
|
+
- ! Emit story scope items exclusively as date-prefixed scope vBRIEFs: `xbrief/proposed/YYYY-MM-DD-<kebab-slug>.xbrief.json` (use the run's creation date for the prefix; choose descriptive slugs). Decompose the rapid plan into one or more focused, buildable story vBRIEFs (v0.6 schema) rather than a monolithic legacy spec.
|
|
131
|
+
- ! After the proposed/ stories are written, invoke `task project:render` (run from the repo root) to generate/refresh the complete `xbrief/PROJECT-DEFINITION.xbrief.json` (items registry is derived from the lifecycle folders).
|
|
132
132
|
- ⊗ Never emit `vbrief/specification.vbrief.json` (or any legacy dual-write).
|
|
133
|
-
- ~ `SPECIFICATION.md` at the project root, if produced at all, must be only a read-only derivative (e.g. via `task spec:render` after the vbriefs exist) that includes the v0.20 deprecated-redirect sentinel. The source of truth is the
|
|
133
|
+
- ~ `SPECIFICATION.md` at the project root, if produced at all, must be only a read-only derivative (e.g. via `task spec:render` after the vbriefs exist) that includes the v0.20 deprecated-redirect sentinel. The source of truth is the xbrief/ lifecycle stories + PROJECT-DEFINITION.
|
|
134
134
|
- ! Before writing any proposed/ stories 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).
|
|
135
135
|
- ! 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 and the 1166 decomposition.
|
|
136
136
|
- ! Cite the canonical contract `strategies/v0-20-contract.md` (s1-contract) for the exact shape and the per-strategy table row.
|
|
@@ -143,9 +143,9 @@ This strategy has been migrated to the full v0.20 output shape so rapid-generate
|
|
|
143
143
|
|
|
144
144
|
| Artifact | Purpose | Created By |
|
|
145
145
|
|----------|---------|------------|
|
|
146
|
-
| `
|
|
147
|
-
| `
|
|
148
|
-
| `
|
|
146
|
+
| `xbrief/proposed/YYYY-MM-DD-*.xbrief.json` (one or more) | Focused story scope items (date-prefixed per vbrief convention and v0.20 contract) | Rapid |
|
|
147
|
+
| `xbrief/PROJECT-DEFINITION.xbrief.json` | Project identity gestalt + complete scope items registry | `task project:render` (invoked by Rapid) |
|
|
148
|
+
| `xbrief/{proposed,pending,active,completed,cancelled}/` | All five lifecycle folders seeded | Rapid |
|
|
149
149
|
| (optional derivative) `SPECIFICATION.md` | Human-readable plan (includes deprecated-redirect sentinel) | `task spec:render` (if invoked) |
|
|
150
150
|
|
|
151
151
|
**Pre-v0.20 / legacy artifacts that MUST NOT be produced by this strategy:**
|
|
@@ -154,7 +154,7 @@ This strategy has been migrated to the full v0.20 output shape so rapid-generate
|
|
|
154
154
|
- Primary handoff `SPECIFICATION.md` at project root (without sentinel)
|
|
155
155
|
- Bare-named vBRIEFs in proposed/
|
|
156
156
|
|
|
157
|
-
See the full table and rules in `strategies/v0-20-contract.md` (rapid row: Must Create Lifecycle Folders: Yes; Must Write PROJECT-DEFINITION: Yes; Scope vBRIEFs Location: proposed/YYYY-MM-DD-*.
|
|
157
|
+
See the full table and rules in `strategies/v0-20-contract.md` (rapid row: Must Create Lifecycle Folders: Yes; Must Write PROJECT-DEFINITION: Yes; Scope vBRIEFs Location: proposed/YYYY-MM-DD-*.xbrief.json only; specification.vbrief.json: Never; SPECIFICATION.md / PROJECT.md: Omit or deprecation redirect only).
|
|
158
158
|
|
|
159
159
|
---
|
|
160
160
|
|
package/strategies/research.md
CHANGED
|
@@ -47,7 +47,7 @@ Prompt:
|
|
|
47
47
|
|
|
48
48
|
! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
|
|
49
49
|
|
|
50
|
-
Produce `
|
|
50
|
+
Produce `xbrief/proposed/{feature}-research.xbrief.json` with two mandatory narratives:
|
|
51
51
|
|
|
52
52
|
! After emitting this scope vBRIEF, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
|
|
53
53
|
|
|
@@ -134,7 +134,7 @@ all trigger a hit.
|
|
|
134
134
|
- ! Research the **current feature only** — not the entire project
|
|
135
135
|
- ! Time-box research — if it takes longer than the feature, scope is wrong
|
|
136
136
|
- ⊗ Research as a reason to delay execution indefinitely
|
|
137
|
-
- ~ Research persists as a vBRIEF in `
|
|
137
|
+
- ~ Research persists as a vBRIEF in `xbrief/proposed/`
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
@@ -143,13 +143,13 @@ all trigger a hit.
|
|
|
143
143
|
After research is complete, return to the [chaining gate](./interview.md#chaining-gate)
|
|
144
144
|
so the user can run additional preparatory strategies or proceed to spec generation.
|
|
145
145
|
|
|
146
|
-
- ! On completion, register artifacts in `./
|
|
146
|
+
- ! On completion, register artifacts in `./xbrief/plan.xbrief.json`:
|
|
147
147
|
- Update `completedStrategies`: increment `runCount` for `"research"`,
|
|
148
|
-
append artifact path (`
|
|
148
|
+
append artifact path (`xbrief/proposed/{feature}-research.xbrief.json`)
|
|
149
149
|
- Append the path to the flat `artifacts` array
|
|
150
150
|
- ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
|
|
151
151
|
- ! Present the chaining gate as a blocking question and wait for a user selection before any spec generation or additional scope vBRIEF generation.
|
|
152
|
-
- ! Explain at handoff that `completedStrategies` records that research ran, while `
|
|
152
|
+
- ! Explain at handoff that `completedStrategies` records that research ran, while `xbrief/proposed/{feature}-research.xbrief.json` remains a planning artifact in the scope lifecycle until a later strategy promotes or consumes it.
|
|
153
153
|
- ! The research findings MUST inform subsequent strategies and spec generation:
|
|
154
154
|
- "Don't Hand-Roll" items become constraints in the specification
|
|
155
155
|
- "Common Pitfalls" become acceptance criteria or NFRs
|
|
@@ -167,7 +167,7 @@ so the user can run additional preparatory strategies or proceed to spec generat
|
|
|
167
167
|
|
|
168
168
|
1. **Scope confirmation** -- Ask the blocking scope-confirmation prompt, wait for the user, and record scope/artifact/sensitivity inputs
|
|
169
169
|
2. **Survey** -- Check existing project dependencies, official docs, and known pitfalls
|
|
170
|
-
3. **Document** -- Produce `
|
|
170
|
+
3. **Document** -- Produce `xbrief/proposed/{feature}-research.xbrief.json` with `DontHandRoll` and `CommonPitfalls` narratives
|
|
171
171
|
4. **Chain** -- Return to [interview.md Chaining Gate](./interview.md#chaining-gate), or -- if invoked from a standalone strategy (e.g. map's standalone next-step menu) -- return to the invoking strategy's menu per the [standalone-context rule](#then-chaining-gate) above
|
|
172
172
|
|
|
173
173
|
## Anti-Patterns
|
package/strategies/roadmap.md
CHANGED
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
> See **[skills/deft-directive-refinement/SKILL.md](../skills/deft-directive-refinement/SKILL.md)**
|
|
7
7
|
> for issue ingest, evaluation, and promotion/demotion workflows.
|
|
8
8
|
>
|
|
9
|
-
> Run `task roadmap:render` to regenerate `ROADMAP.md` from `
|
|
9
|
+
> Run `task roadmap:render` to regenerate `ROADMAP.md` from `xbrief/` lifecycle folders (legacy `vbrief/` is read-accepted).
|
package/strategies/speckit.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
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
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.
|
|
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.xbrief.json via task project:render post, seeded lifecycle folders, no legacy specification.vbrief.json). Phase 4/4.5 scopes go to proposed/ (not pending/). Review exports use `task project:export-spec` (gate: export succeeded). 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
12
|
|
|
13
13
|
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
14
14
|
|
|
@@ -20,16 +20,16 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
20
20
|
- ~ Projects requiring formal specification review
|
|
21
21
|
- ~ When parallel agent development is planned
|
|
22
22
|
- ~ Enterprise environments with compliance requirements
|
|
23
|
-
- ? Skip Phase 1 if PROJECT-DEFINITION.
|
|
23
|
+
- ? Skip Phase 1 if PROJECT-DEFINITION.xbrief.json Principles narrative already defined
|
|
24
24
|
|
|
25
25
|
## Workflow Overview
|
|
26
26
|
|
|
27
27
|
```mermaid
|
|
28
28
|
flowchart LR
|
|
29
29
|
subgraph speckit ["SpecKit Strategy (v0.20)"]
|
|
30
|
-
P["📜 Principles<br/><i>PROJECT-DEFINITION.
|
|
31
|
-
S["📝 Specify<br/><i>WHAT/WHY → proposed/YYYY-MM-DD-*.
|
|
32
|
-
PL["🏗️ Plan<br/><i>HOW → proposed/YYYY-MM-DD-*.
|
|
30
|
+
P["📜 Principles<br/><i>PROJECT-DEFINITION.xbrief.json</i>"]
|
|
31
|
+
S["📝 Specify<br/><i>WHAT/WHY → proposed/YYYY-MM-DD-*.xbrief.json</i>"]
|
|
32
|
+
PL["🏗️ Plan<br/><i>HOW → proposed/YYYY-MM-DD-*.xbrief.json</i>"]
|
|
33
33
|
T["✅ Scope<br/><i>Phase/epic vBRIEFs in proposed/</i>"]
|
|
34
34
|
D["🧩 Decompose<br/><i>Story vBRIEFs in proposed/</i>"]
|
|
35
35
|
I["🔨 Implement<br/><i>Execute</i>"]
|
|
@@ -57,7 +57,7 @@ flowchart LR
|
|
|
57
57
|
|
|
58
58
|
**Goal:** Establish immutable project principles before any specification.
|
|
59
59
|
|
|
60
|
-
**Output:** `Principles` narrative in `
|
|
60
|
+
**Output:** `Principles` narrative in `xbrief/PROJECT-DEFINITION.xbrief.json` (v0.20: plus any early proposed/ context vBRIEFs if needed)
|
|
61
61
|
|
|
62
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
63
|
|
|
@@ -65,14 +65,14 @@ flowchart LR
|
|
|
65
65
|
|
|
66
66
|
- ! Define 3-5 non-negotiable principles
|
|
67
67
|
- ! Include at least one anti-principle (⊗)
|
|
68
|
-
- ! Write principles as the `Principles` narrative in `
|
|
68
|
+
- ! Write principles as the `Principles` narrative in `xbrief/PROJECT-DEFINITION.xbrief.json`
|
|
69
69
|
- ~ Interview stakeholders about architectural constraints
|
|
70
70
|
- ⊗ Proceed without defined principles
|
|
71
|
-
- ⊗ Create a standalone `project.md` -- principles belong in PROJECT-DEFINITION.
|
|
71
|
+
- ⊗ Create a standalone `project.md` -- principles belong in PROJECT-DEFINITION.xbrief.json
|
|
72
72
|
|
|
73
73
|
### Transition Criteria
|
|
74
74
|
|
|
75
|
-
- ! `Principles` narrative in `
|
|
75
|
+
- ! `Principles` narrative in `xbrief/PROJECT-DEFINITION.xbrief.json` is complete
|
|
76
76
|
- ! All stakeholders have reviewed principles
|
|
77
77
|
- ~ No `[NEEDS CLARIFICATION]` markers remain
|
|
78
78
|
|
|
@@ -82,7 +82,7 @@ flowchart LR
|
|
|
82
82
|
|
|
83
83
|
**Goal:** Document WHAT to build and WHY, without implementation details.
|
|
84
84
|
|
|
85
|
-
**Output:** WHAT/WHY narratives in date-prefixed vBRIEF(s) in `
|
|
85
|
+
**Output:** WHAT/WHY narratives in date-prefixed vBRIEF(s) in `xbrief/proposed/YYYY-MM-DD-*.xbrief.json` (v0.20; no singular specification.vbrief.json)
|
|
86
86
|
|
|
87
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
88
|
|
|
@@ -142,7 +142,7 @@ Add the following narrative keys to the proposed/ vBRIEF `plan.narratives`:
|
|
|
142
142
|
! Phase 3 -> Phase 4 is gated on a successful spec export for human review, 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 project:export-spec` 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
143
|
|
|
144
144
|
1. ! Run `task project:export-spec` (use `--audience=internal` when proposed scopes must appear in the `## Scope outlook` section). Legacy migrated trees MAY use `task spec:render` when `vbrief/specification.vbrief.json` exists.
|
|
145
|
-
2. ! Confirm export **succeeded** (command exit 0) and `SPECIFICATION.md` exists at the project root with the greenfield banner (`<!-- Source of truth:
|
|
145
|
+
2. ! Confirm export **succeeded** (command exit 0) and `SPECIFICATION.md` exists at the project root with the greenfield banner (`<!-- Source of truth: xbrief/PROJECT-DEFINITION.xbrief.json -->`) or full-spec banner as appropriate.
|
|
146
146
|
3. ! The proposed/ vBRIEFs + PROJECT-DEFINITION are the source of truth. `SPECIFICATION.md` is a read-only export.
|
|
147
147
|
4. ! Human reviewer approves (or requests changes). On approval, proceed to Phase 4.
|
|
148
148
|
|
|
@@ -161,11 +161,11 @@ Add the following narrative keys to the proposed/ vBRIEF `plan.narratives`:
|
|
|
161
161
|
|
|
162
162
|
**Input:** Approved HOW narratives in the proposed/ date-prefixed vBRIEF(s) from Phase 3 (`ImplementationPhases` narrative describes IP-1..IP-N).
|
|
163
163
|
|
|
164
|
-
**Output:** N phase/epic scope vBRIEFs in `./
|
|
164
|
+
**Output:** N phase/epic scope vBRIEFs in `./xbrief/proposed/`, one per implementation phase or epic, using the filename convention `YYYY-MM-DD-ip<NNN>-<slug>.xbrief.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
165
|
|
|
166
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
167
|
|
|
168
|
-
! After emitting the phase/epic scope vBRIEF(s) to `
|
|
168
|
+
! After emitting the phase/epic scope vBRIEF(s) to `xbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
|
|
169
169
|
|
|
170
170
|
### Scope vBRIEF Shape
|
|
171
171
|
|
|
@@ -197,18 +197,18 @@ For each implementation phase IP-N, write a scope vBRIEF with:
|
|
|
197
197
|
"dependencies": ["ip-1", "ip-2"]
|
|
198
198
|
},
|
|
199
199
|
"references": [
|
|
200
|
-
{ "type": "x-vbrief/plan", "uri": "2026-05-26-ip002-plan.
|
|
200
|
+
{ "type": "x-vbrief/plan", "uri": "2026-05-26-ip002-plan.xbrief.json", "TrustLevel": "internal" }
|
|
201
201
|
],
|
|
202
202
|
"items": []
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
```
|
|
206
206
|
|
|
207
|
-
### plan.
|
|
207
|
+
### plan.xbrief.json — Session Tracker Only
|
|
208
208
|
|
|
209
|
-
- ! `plan.
|
|
210
|
-
- ! While working on a specific scope vBRIEF, `plan.
|
|
211
|
-
- ⊗ Emit the project-wide Phase 4 task list to `plan.vbrief.json` — write per-IP scope vBRIEFs to `
|
|
209
|
+
- ! `plan.xbrief.json` reverts to its canonical session-todo role defined in [vbrief/vbrief.md — plan.xbrief.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.xbrief.json` MUST carry a `planRef` to that scope vBRIEF in `xbrief/proposed/` or `xbrief/active/`.
|
|
211
|
+
- ⊗ Emit the project-wide Phase 4 task list to `plan.vbrief.json` — write per-IP scope vBRIEFs to `xbrief/proposed/` instead.
|
|
212
212
|
|
|
213
213
|
### Migrating Legacy speckit Projects
|
|
214
214
|
|
|
@@ -230,7 +230,7 @@ For each implementation phase IP-N, write a scope vBRIEF with:
|
|
|
230
230
|
|
|
231
231
|
### Transition Criteria
|
|
232
232
|
|
|
233
|
-
- ! Every implementation phase from `ImplementationPhases` has a matching scope vBRIEF in `./
|
|
233
|
+
- ! Every implementation phase from `ImplementationPhases` has a matching scope vBRIEF in `./xbrief/proposed/`
|
|
234
234
|
- ! Each scope vBRIEF has `Description`, `Acceptance`, and `Traces` narratives
|
|
235
235
|
- ! Each scope vBRIEF carries a `references` entry linking back to the parent Phase 3 proposed/ vBRIEF with `TrustLevel: internal`
|
|
236
236
|
- ! Cross-scope dependencies in `plan.metadata.dependencies` form a valid DAG (no cycles)
|
|
@@ -241,21 +241,21 @@ For each implementation phase IP-N, write a scope vBRIEF with:
|
|
|
241
241
|
|
|
242
242
|
**Goal:** Convert approved Phase 4 phase/epic scopes into child story vBRIEFs suitable for parallel agents.
|
|
243
243
|
|
|
244
|
-
**Input:** Phase 4 phase/epic
|
|
244
|
+
**Input:** Phase 4 phase/epic xBRIEFs in `./xbrief/pending/` or `./xbrief/active/` (else legacy `./vbrief/pending/`).
|
|
245
245
|
|
|
246
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
247
|
|
|
248
|
-
! After emitting the story vBRIEF(s) to `
|
|
248
|
+
! After emitting the story vBRIEF(s) to `xbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
|
|
249
249
|
|
|
250
250
|
### Process
|
|
251
251
|
|
|
252
252
|
1. ! Inspect approved specification narratives and Phase 4 scope vBRIEFs.
|
|
253
253
|
2. ! Identify `plan.metadata.kind = "phase"` or `"epic"` scopes that are too broad for direct implementation.
|
|
254
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 `
|
|
255
|
+
4. ! Store the temporary proposal artifact under `xbrief/.triage-cache/decompositions/<parent-slug>.json` (legacy scratch `vbrief/.triage-cache/decompositions/ip001-auth.json` is read-accepted); derive `<parent-slug>` from the parent vBRIEF filename by removing `.xbrief.json` or `.vbrief.json` and any leading `YYYY-MM-DD-` date prefix.
|
|
256
256
|
5. ! Ask for explicit user approval before writing child story vBRIEFs.
|
|
257
|
-
6. ! Validate the approved draft with `task scope:decompose -- <parent.
|
|
258
|
-
7. ! Run `task swarm:readiness --
|
|
257
|
+
6. ! Validate the approved draft with `task scope:decompose -- <parent.xbrief.json> --draft xbrief/.triage-cache/decompositions/<parent-slug>.json --check`, then apply it without `--check`.
|
|
258
|
+
7. ! Run `task swarm:readiness -- xbrief/active/*.xbrief.json` before concurrent allocation, or point it at the candidate child story files for a dry readiness review before activation.
|
|
259
259
|
|
|
260
260
|
### Story vBRIEF Requirements
|
|
261
261
|
|
|
@@ -282,12 +282,12 @@ Each Phase 4.5 child story vBRIEF MUST include:
|
|
|
282
282
|
Use the deterministic command surface:
|
|
283
283
|
|
|
284
284
|
```bash
|
|
285
|
-
task scope:decompose --
|
|
286
|
-
task scope:decompose --
|
|
285
|
+
task scope:decompose -- xbrief/pending/2026-05-12-ip001-auth.xbrief.json --draft vbrief/.triage-cache/decompositions/ip001-auth.json --check
|
|
286
|
+
task scope:decompose -- xbrief/pending/2026-05-12-ip001-auth.xbrief.json --draft vbrief/.triage-cache/decompositions/ip001-auth.json
|
|
287
287
|
task scope:decompose -- --check
|
|
288
288
|
```
|
|
289
289
|
|
|
290
|
-
The draft JSON is a temporary proposal artifact, not a vBRIEF. Agents SHOULD write draft proposals under `vbrief/.triage-cache/decompositions
|
|
290
|
+
The draft JSON is a temporary proposal artifact, not a vBRIEF. Agents SHOULD write draft proposals under `xbrief/.triage-cache/decompositions/` (legacy `vbrief/.triage-cache/decompositions/` remains read-accepted), which is gitignored specifically for local decomposition scratch. Derive `<parent-slug>` from the parent vBRIEF filename by removing `.xbrief.json` or `.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 `xbrief/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
291
|
|
|
292
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
293
|
|
|
@@ -296,7 +296,7 @@ Parent phase/epic acceptance MAY remain in `plan.narratives.Acceptance` as conte
|
|
|
296
296
|
Use the readiness gate before swarm allocation:
|
|
297
297
|
|
|
298
298
|
```bash
|
|
299
|
-
task swarm:readiness --
|
|
299
|
+
task swarm:readiness -- xbrief/active/*.xbrief.json
|
|
300
300
|
```
|
|
301
301
|
|
|
302
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.
|
|
@@ -317,7 +317,7 @@ The readiness report lists ready stories, blocked stories, decomposition-needed
|
|
|
317
317
|
|
|
318
318
|
**Goal:** Execute scope vBRIEFs following test-first discipline.
|
|
319
319
|
|
|
320
|
-
**Input:** Story-level scope vBRIEFs in `./
|
|
320
|
+
**Input:** Story-level scope vBRIEFs in `./xbrief/pending/` (promote to `./xbrief/active/` via `task scope:activate` when work begins). `./xbrief/plan.xbrief.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
321
|
|
|
322
322
|
### Process
|
|
323
323
|
|
|
@@ -325,7 +325,7 @@ The readiness report lists ready stories, blocked stories, decomposition-needed
|
|
|
325
325
|
- ! Implement minimal code to pass tests (Green)
|
|
326
326
|
- ! Refactor while keeping tests green (Refactor)
|
|
327
327
|
- ! Update scope vBRIEF `plan.status` and folder via `task scope:*` commands as work progresses (`pending` → `running` → `completed`)
|
|
328
|
-
- ! Update `./
|
|
328
|
+
- ! Update `./xbrief/plan.xbrief.json` session todos as tactical steps progress (session-scoped; do NOT put the project-wide IP list here)
|
|
329
329
|
- ~ Work on story vBRIEFs whose `plan.metadata.swarm.depends_on` entries are already completed in parallel when possible
|
|
330
330
|
|
|
331
331
|
### File Creation Order
|
|
@@ -337,11 +337,11 @@ The readiness report lists ready stories, blocked stories, decomposition-needed
|
|
|
337
337
|
|
|
338
338
|
### Guidelines
|
|
339
339
|
|
|
340
|
-
- ! Follow the `Principles` narrative in `
|
|
340
|
+
- ! Follow the `Principles` narrative in `xbrief/PROJECT-DEFINITION.xbrief.json` throughout
|
|
341
341
|
- ! Move scope vBRIEFs through lifecycle folders using `task scope:activate|complete|cancel|block|unblock`
|
|
342
342
|
- ⊗ Implement without failing tests first
|
|
343
343
|
- ⊗ Skip refactoring phase
|
|
344
|
-
- ⊗ Write the project-wide IP list to `plan.
|
|
344
|
+
- ⊗ Write the project-wide IP list to `plan.xbrief.json` — use `xbrief/pending/` scope vBRIEFs as the durable task tracker
|
|
345
345
|
- ⊗ Allocate broad `kind=epic` or `kind=phase` scopes to concurrent swarm workers before decomposition
|
|
346
346
|
|
|
347
347
|
---
|
|
@@ -350,26 +350,26 @@ The readiness report lists ready stories, blocked stories, decomposition-needed
|
|
|
350
350
|
|
|
351
351
|
| Phase | Artifact | Purpose |
|
|
352
352
|
|-------|----------|---------|
|
|
353
|
-
| 1. Principles | `
|
|
354
|
-
| 2. Specify | date-prefixed in `
|
|
355
|
-
| 3. Plan | date-prefixed in `
|
|
353
|
+
| 1. Principles | `xbrief/PROJECT-DEFINITION.xbrief.json` | Governing rules (Principles narrative) |
|
|
354
|
+
| 2. Specify | date-prefixed in `xbrief/proposed/` | WHAT/WHY narratives (v0.20) |
|
|
355
|
+
| 3. Plan | date-prefixed in `xbrief/proposed/` | HOW narratives (enriches Phase 2; v0.20) |
|
|
356
356
|
| 3b. Export (review) | `SPECIFICATION.md` (via `task project:export-spec`) | Read-only human review export (optional; gate requires export succeeded for Phase 3→4) |
|
|
357
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
|
|
358
|
+
| 4. Tasks | `./xbrief/proposed/YYYY-MM-DD-ip<NNN>-<slug>.xbrief.json` (else legacy `./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
359
|
| 4.5. Story decomposition | Child story vBRIEFs with `plan.metadata.swarm` in proposed/ | Swarm-ready executable units (v0.20) |
|
|
360
|
-
| 4b. Session todos | `./
|
|
360
|
+
| 4b. Session todos | `./xbrief/plan.xbrief.json` | Session-level tactical plan (carries `planRef` to active scope) |
|
|
361
361
|
| 5. Implement | Code + tests | Working software, optionally via swarm |
|
|
362
362
|
|
|
363
363
|
## Directory Structure (v0.20)
|
|
364
364
|
|
|
365
365
|
```
|
|
366
366
|
project/
|
|
367
|
-
├──
|
|
368
|
-
│ ├── PROJECT-DEFINITION.
|
|
367
|
+
├── xbrief/
|
|
368
|
+
│ ├── PROJECT-DEFINITION.xbrief.json # Phase 1: Principles narrative
|
|
369
369
|
│ ├── proposed/ # Phase 2+: date-prefixed WHAT/WHY/HOW + IP scopes + stories
|
|
370
|
-
│ │ └── YYYY-MM-DD-*.
|
|
371
|
-
│ │ └── YYYY-MM-DD-ip001-....
|
|
372
|
-
│ ├── plan.
|
|
370
|
+
│ │ └── YYYY-MM-DD-*.xbrief.json
|
|
371
|
+
│ │ └── YYYY-MM-DD-ip001-....xbrief.json
|
|
372
|
+
│ ├── plan.xbrief.json # Phase 4b: session todos (planRef to active scope)
|
|
373
373
|
│ └── pending/ active/ etc. # Lifecycle (seeded empty or with promoted)
|
|
374
374
|
├── SPECIFICATION.md # Optional export (task project:export-spec)
|
|
375
375
|
├── PRD.md # Optional derivative (task prd:render; sentinel only)
|
|
@@ -384,11 +384,11 @@ project/
|
|
|
384
384
|
|
|
385
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
386
|
|
|
387
|
-
- ! Seed the five lifecycle folders under `
|
|
388
|
-
- ! Emit all scope items (principles context, spec phases/stories, implementation phases/epics) exclusively as date-prefixed scope vBRIEFs in `
|
|
389
|
-
- ! After the proposed/ vBRIEFs are written (or at Phase 3/4 boundaries), invoke `task project:render` from the repo root to generate/refresh the complete `
|
|
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, are read-only exports from `task project:export-spec` / `task prd:render`. The source of truth is the
|
|
387
|
+
- ! Seed the five lifecycle folders under `xbrief/` 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 `xbrief/proposed/YYYY-MM-DD-<kebab-slug>.xbrief.json` (or the ipNNN convention for phases per vbrief.md). For speckit, phases use `YYYY-MM-DD-ip<NNN>-<slug>.xbrief.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` from the repo root to generate/refresh the complete `xbrief/PROJECT-DEFINITION.xbrief.json` (items registry derived from the lifecycle folders). For human review at Phase 3→4, invoke `task project:export-spec` (or `--audience=internal` when proposed scopes must appear in `## Scope outlook`).
|
|
390
|
+
- ⊗ Never emit `vbrief/specification.vbrief.json` (or any legacy dual-write). Live identity is `xbrief/PROJECT-DEFINITION.xbrief.json`; legacy `vbrief/PROJECT-DEFINITION.vbrief.json` is read-accepted until `deft migrate:xbrief`.
|
|
391
|
+
- ~ `SPECIFICATION.md` / `PRD.md` at the project root, if produced at all, are read-only exports from `task project:export-spec` / `task prd:render`. The source of truth is the xbrief/ lifecycle (proposed/ phases + stories) + PROJECT-DEFINITION. Legacy `task spec:render` applies only to migrated trees with `vbrief/specification.vbrief.json`.
|
|
392
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
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
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; `task project:export-spec` for SPEC export).
|
|
@@ -401,11 +401,11 @@ This strategy has been migrated to the full v0.20 output shape so speckit-genera
|
|
|
401
401
|
|
|
402
402
|
| Artifact | Purpose | Created By |
|
|
403
403
|
|----------|---------|------------|
|
|
404
|
-
| `
|
|
405
|
-
| `
|
|
406
|
-
| `
|
|
404
|
+
| `xbrief/PROJECT-DEFINITION.xbrief.json` | Principles + full items registry | Speckit Phase 1 + `task project:render` |
|
|
405
|
+
| `xbrief/proposed/YYYY-MM-DD-*.xbrief.json` + `YYYY-MM-DD-ipNNN-*.xbrief.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
|
+
| `xbrief/{proposed,pending,active,completed,cancelled}/` | All five lifecycle folders seeded | Speckit |
|
|
407
407
|
| (optional export) `SPECIFICATION.md` / `PRD.md` | Human-readable spec export | `task project:export-spec` / `task prd:render` |
|
|
408
|
-
| `
|
|
408
|
+
| `xbrief/plan.xbrief.json` | Session-level tactical plan (planRef to active) | Speckit (internal) |
|
|
409
409
|
|
|
410
410
|
**Pre-v0.20 / legacy artifacts that MUST NOT be produced by this strategy:**
|
|
411
411
|
|
|
@@ -419,7 +419,7 @@ See the full table and rules in `strategies/v0-20-contract.md` (speckit row repr
|
|
|
419
419
|
|
|
420
420
|
## Invoking This Strategy
|
|
421
421
|
|
|
422
|
-
Set in PROJECT-DEFINITION.
|
|
422
|
+
Set in PROJECT-DEFINITION.xbrief.json narratives:
|
|
423
423
|
```json
|
|
424
424
|
"Strategy": "strategies/speckit.md"
|
|
425
425
|
```
|
|
@@ -20,7 +20,7 @@ Spec-generating strategies (interview, yolo, speckit, rapid, enterprise) histori
|
|
|
20
20
|
|
|
21
21
|
- Some wrote only the legacy `vbrief/specification.vbrief.json` + root `SPECIFICATION.md`
|
|
22
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.
|
|
23
|
+
- None consistently seeded the full v0.20 lifecycle folders + `PROJECT-DEFINITION.xbrief.json` + date-prefixed proposed/ items
|
|
24
24
|
|
|
25
25
|
This caused immediate build failures via the Pre-Cutover Detection Guard for any project generated through those strategies.
|
|
26
26
|
|
|
@@ -35,7 +35,7 @@ Use this contract when authoring, reviewing, or migrating a spec-generating stra
|
|
|
35
35
|
1. Identify whether the strategy is spec-generating or preparatory.
|
|
36
36
|
2. Apply the matching row in the per-strategy summary table.
|
|
37
37
|
3. Create the required lifecycle folders before writing scope artifacts.
|
|
38
|
-
4. Write authoritative vBRIEF content to `
|
|
38
|
+
4. Write authoritative vBRIEF content to `xbrief/PROJECT-DEFINITION.xbrief.json` and date-prefixed `xbrief/proposed/*.xbrief.json` files.
|
|
39
39
|
5. Omit root `SPECIFICATION.md` / `PROJECT.md`, or write only deprecation redirect stubs when transitional UX requires them.
|
|
40
40
|
6. Run the validator and content gates before treating the strategy output as v0.20-conformant.
|
|
41
41
|
|
|
@@ -44,21 +44,21 @@ Use this contract when authoring, reviewing, or migrating a spec-generating stra
|
|
|
44
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
45
|
|
|
46
46
|
### Required Directory Structure
|
|
47
|
-
- `
|
|
48
|
-
- `
|
|
49
|
-
- `
|
|
50
|
-
- `
|
|
51
|
-
- `
|
|
47
|
+
- `xbrief/proposed/`
|
|
48
|
+
- `xbrief/pending/`
|
|
49
|
+
- `xbrief/active/`
|
|
50
|
+
- `xbrief/completed/`
|
|
51
|
+
- `xbrief/cancelled/`
|
|
52
52
|
|
|
53
53
|
All five lifecycle folders MUST be present (even if empty). This is the cutover signal used by pre-cutover guards.
|
|
54
54
|
|
|
55
55
|
### Required Root-Level vBRIEF Artifact
|
|
56
|
-
- `
|
|
56
|
+
- `xbrief/PROJECT-DEFINITION.xbrief.json` (complete: narratives + items registry populated from the strategy session)
|
|
57
57
|
|
|
58
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
59
|
|
|
60
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 `
|
|
61
|
+
- All new scope vBRIEFs (user stories, phases, epics from speckit Phase 4/4.5, etc.) MUST be written **only** to `xbrief/proposed/YYYY-MM-DD-<kebab-slug>.xbrief.json`
|
|
62
62
|
- Filenames MUST be date-prefixed using the creation date (immutable per vbrief.md conventions)
|
|
63
63
|
- Bare names (e.g. `scaffold.vbrief.json`) or names without date prefix are FORBIDDEN in v0.20
|
|
64
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)
|
|
@@ -68,7 +68,7 @@ All five lifecycle folders MUST be present (even if empty). This is the cutover
|
|
|
68
68
|
- If a strategy does emit them (for UX continuity during transition), they MUST be written **exclusively** as deprecation-redirect stubs:
|
|
69
69
|
- Start with the canonical 4-line machine-generated banner (see conventions/machine-generated-banner.md)
|
|
70
70
|
- Fifth line: `<!-- deft:deprecated-redirect -->`
|
|
71
|
-
- Short explanatory body pointing to `
|
|
71
|
+
- Short explanatory body pointing to `xbrief/PROJECT-DEFINITION.xbrief.json` and the lifecycle folders
|
|
72
72
|
- Never contain real spec or project content
|
|
73
73
|
- Real content in these files (without the sentinel) triggers the build/setup/sync pre-cutover guards and forces migration.
|
|
74
74
|
|
|
@@ -80,26 +80,26 @@ All five lifecycle folders MUST be present (even if empty). This is the cutover
|
|
|
80
80
|
|
|
81
81
|
Greenfield projects (no `vbrief/specification.vbrief.json`) export stakeholder-facing spec text via `task project:export-spec`:
|
|
82
82
|
|
|
83
|
-
- ! Source of truth: `
|
|
83
|
+
- ! Source of truth: `xbrief/PROJECT-DEFINITION.xbrief.json` product narratives + lifecycle scope bodies (never the legacy singular spec file).
|
|
84
84
|
- ! Default audience is **stakeholder** — proposed scopes are omitted; only pending/active/completed scopes appear under `## Scope outlook`.
|
|
85
85
|
- ! Internal handoff (setup Phase 3, speckit Phase 3→4 when proposed scopes must be visible) uses `task project:export-spec -- --audience=internal`, which adds `### Not yet accepted (proposed)` under `## Scope outlook` with a fixed disclaimer that proposed scopes are ideas, not approved backlog.
|
|
86
86
|
- ! Phase 3→4 transition gate: **export succeeded** (exit 0), not spec-file `approved` status — PROJECT-DEFINITION has no spec-approval lifecycle on greenfield trees.
|
|
87
87
|
- ~ Legacy migrated trees with `vbrief/specification.vbrief.json` MAY continue using `task spec:render` until fully cut over.
|
|
88
88
|
- ⊗ Invoke `task spec:render` on a greenfield tree that lacks `specification.vbrief.json` — use `task project:export-spec` instead.
|
|
89
89
|
|
|
90
|
-
### plan.
|
|
91
|
-
- Session/tactical state files are permitted at
|
|
90
|
+
### plan.xbrief.json and continue.xbrief.json
|
|
91
|
+
- Session/tactical state files are permitted at xbrief/ 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.
|
|
92
92
|
|
|
93
93
|
## Per-Strategy Summary Table (Target State After Migration)
|
|
94
94
|
|
|
95
95
|
| Strategy | Type | Must Create Lifecycle Folders | Must Write PROJECT-DEFINITION | Scope vBRIEFs Location | specification.vbrief.json | SPECIFICATION.md / PROJECT.md |
|
|
96
96
|
|--------------|------------------|-------------------------------|-------------------------------|-----------------------------------------|-----------------------------|----------------------------------------|
|
|
97
|
-
| interview | spec-generating | Yes | Yes (narratives + items) | proposed/YYYY-MM-DD-*.
|
|
98
|
-
| yolo | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.
|
|
99
|
-
| speckit | spec-generating | Yes | Yes (Phase 1+) | proposed/YYYY-MM-DD-*.
|
|
100
|
-
| rapid | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.
|
|
101
|
-
| enterprise | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.
|
|
102
|
-
| preparatory (research, discuss, map, etc.) | preparatory | Yes (if first touch) | No (unless also spec path) | proposed/YYYY-MM-DD-*.
|
|
97
|
+
| interview | spec-generating | Yes | Yes (narratives + items) | proposed/YYYY-MM-DD-*.xbrief.json only | Never (post-migration) | Omit or deprecation redirect only |
|
|
98
|
+
| yolo | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.xbrief.json only | Never | Omit or deprecation redirect only |
|
|
99
|
+
| speckit | spec-generating | Yes | Yes (Phase 1+) | proposed/YYYY-MM-DD-*.xbrief.json only (phases + stories) | Never | Omit or `task project:export-spec` (legacy: `task spec:render` on migrated trees) |
|
|
100
|
+
| rapid | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.xbrief.json only | Never | Omit or deprecation redirect only |
|
|
101
|
+
| enterprise | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.xbrief.json only | Never | Omit or deprecation redirect only |
|
|
102
|
+
| preparatory (research, discuss, map, etc.) | preparatory | Yes (if first touch) | No (unless also spec path) | proposed/YYYY-MM-DD-*.xbrief.json (context/decision vBRIEFs) | N/A | N/A (preparatory only) |
|
|
103
103
|
|
|
104
104
|
## Agent & Strategy Author Rules
|
|
105
105
|
|
|
@@ -133,13 +133,13 @@ Use this contract when:
|
|
|
133
133
|
## Workflow
|
|
134
134
|
|
|
135
135
|
1. Read the Canonical v0.20 Output Shape section.
|
|
136
|
-
2. Ensure your strategy (or migration) writes exactly the required folders + `PROJECT-DEFINITION.
|
|
136
|
+
2. Ensure your strategy (or migration) writes exactly the required folders + `PROJECT-DEFINITION.xbrief.json` + dated proposed/ vBRIEFs.
|
|
137
137
|
3. Never write the legacy `specification.vbrief.json` or real-content `SPECIFICATION.md`/`PROJECT.md`.
|
|
138
138
|
4. Cite this contract explicitly in your strategy's "Artifacts" / "Output" section (see the Per-Strategy Summary Table).
|
|
139
139
|
5. Run `task check` (or the deterministic gate once s2 lands) to validate.
|
|
140
140
|
|
|
141
141
|
---
|
|
142
142
|
|
|
143
|
-
**Owned by**: `
|
|
143
|
+
**Owned by**: `xbrief/active/2026-05-26-define-canonical-v020-strategy-output-contract.vbrief.json` (s1-contract of #1166 strategy consistency decomposition)
|
|
144
144
|
|
|
145
145
|
This contract lands first so that s2 (gate) and the migration stories have an unambiguous target.
|