@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.
Files changed (58) hide show
  1. package/Taskfile.yml +12 -6
  2. package/UPGRADING.md +6 -2
  3. package/coding/coding.md +2 -2
  4. package/commands.md +42 -17
  5. package/contracts/agent-hook-readiness.md +3 -3
  6. package/contracts/closed-verb-authz.md +14 -2
  7. package/contracts/design-critique.md +100 -0
  8. package/docs/directive-lifecycle.md +12 -4
  9. package/docs/project-invariants.md +79 -0
  10. package/docs/scope-provenance.md +53 -8
  11. package/main.md +3 -1
  12. package/meta/ralph.md +1 -1
  13. package/package.json +1 -1
  14. package/packs/rules/rules-pack-0.1.json +3 -3
  15. package/packs/skills/skills-pack-0.1.json +31 -11
  16. package/packs/strategies/strategies-pack-0.1.json +13 -13
  17. package/scm/github.md +35 -2
  18. package/skills/deft-directive-build/SKILL.md +26 -1
  19. package/skills/deft-directive-design-critique/SKILL.md +46 -0
  20. package/skills/deft-directive-gh-slice/SKILL.md +2 -2
  21. package/skills/deft-directive-probe/SKILL.md +4 -2
  22. package/skills/deft-directive-refinement/SKILL.md +1 -1
  23. package/skills/deft-directive-release/SKILL.md +5 -3
  24. package/skills/deft-directive-review-cycle/SKILL.md +38 -12
  25. package/skills/deft-directive-setup/SKILL.md +2 -0
  26. package/skills/deft-directive-swarm/SKILL.md +22 -6
  27. package/skills/deft-directive-swarm/references/core-ops.md +3 -1
  28. package/skills/deft-directive-swarm/references/core-phase-0.md +1 -0
  29. package/skills/deft-directive-swarm/references/core-phase-3.md +1 -1
  30. package/skills/deft-directive-swarm/references/core-phase-4.md +27 -11
  31. package/skills/deft-directive-swarm/references/core-phase-5-6.md +4 -1
  32. package/skills/deft-directive-sync/SKILL.md +1 -1
  33. package/strategies/README.md +4 -4
  34. package/strategies/bdd.md +6 -6
  35. package/strategies/discuss.md +8 -8
  36. package/strategies/emit-hints.md +6 -6
  37. package/strategies/enterprise.md +18 -18
  38. package/strategies/interview.md +4 -4
  39. package/strategies/map.md +6 -6
  40. package/strategies/probe.md +22 -18
  41. package/strategies/rapid.md +16 -16
  42. package/strategies/research.md +6 -6
  43. package/strategies/roadmap.md +1 -1
  44. package/strategies/speckit.md +52 -52
  45. package/strategies/v0-20-contract.md +21 -21
  46. package/strategies/yolo.md +12 -12
  47. package/tasks/engine.yml +2 -0
  48. package/tasks/occupancy.yml +17 -0
  49. package/tasks/policy.yml +10 -0
  50. package/tasks/scm.yml +13 -7
  51. package/tasks/scope.yml +2 -2
  52. package/tasks/vbrief.yml +3 -2
  53. package/tasks/verify.yml +34 -4
  54. package/tasks/xbrief.yml +43 -0
  55. package/templates/agent-prompt-preamble.md +16 -7
  56. package/templates/agents-entry.md +8 -3
  57. package/templates/design-critique-brief.md +41 -0
  58. package/vbrief/schemas/vbrief-core.schema.json +72 -0
@@ -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.vbrief.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).
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 `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.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.
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 `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.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.
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 `vbrief/PROJECT-DEFINITION.vbrief.json`
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
- - `vbrief/proposed/YYYY-MM-DD-*.vbrief.json` (one or more) -- lightweight story scope vBRIEF(s) with `draft` status (primary artifact; date-prefixed per v0.20 contract)
90
- - `vbrief/PROJECT-DEFINITION.vbrief.json` -- complete project gestalt + items registry (via `task project:render` invoked by Rapid)
91
- - `vbrief/{proposed,pending,active,completed,cancelled}/` -- all five lifecycle folders seeded
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 `vbrief/proposed/` (and refreshes `vbrief/PROJECT-DEFINITION.vbrief.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.
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 `vbrief/` if any are missing: `proposed/`, `pending/`, `active/`, `completed/`, `cancelled/`.
130
- - ! Emit story scope items exclusively as date-prefixed scope vBRIEFs: `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.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 `vbrief/PROJECT-DEFINITION.vbrief.json` (items registry is derived from the lifecycle folders).
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 vbrief/ lifecycle stories + PROJECT-DEFINITION.
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
- | `vbrief/proposed/YYYY-MM-DD-*.vbrief.json` (one or more) | Focused story scope items (date-prefixed per vbrief convention and v0.20 contract) | Rapid |
147
- | `vbrief/PROJECT-DEFINITION.vbrief.json` | Project identity gestalt + complete scope items registry | `task project:render` (invoked by Rapid) |
148
- | `vbrief/{proposed,pending,active,completed,cancelled}/` | All five lifecycle folders seeded | Rapid |
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-*.vbrief.json only; specification.vbrief.json: Never; SPECIFICATION.md / PROJECT.md: Omit or deprecation redirect only).
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
 
@@ -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 `vbrief/proposed/{feature}-research.vbrief.json` with two mandatory narratives:
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 `vbrief/proposed/`
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 `./vbrief/plan.vbrief.json`:
146
+ - ! On completion, register artifacts in `./xbrief/plan.xbrief.json`:
147
147
  - Update `completedStrategies`: increment `runCount` for `"research"`,
148
- append artifact path (`vbrief/proposed/{feature}-research.vbrief.json`)
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 `vbrief/proposed/{feature}-research.vbrief.json` remains a planning artifact in the scope lifecycle until a later strategy promotes or consumes it.
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 `vbrief/proposed/{feature}-research.vbrief.json` with `DontHandRoll` and `CommonPitfalls` narratives
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
@@ -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 `vbrief/` lifecycle folders.
9
+ > Run `task roadmap:render` to regenerate `ROADMAP.md` from `xbrief/` lifecycle folders (legacy `vbrief/` is read-accepted).
@@ -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.vbrief.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).
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.vbrief.json Principles narrative already defined
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.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>"]
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 `vbrief/PROJECT-DEFINITION.vbrief.json` (v0.20: plus any early proposed/ context vBRIEFs if needed)
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 `vbrief/PROJECT-DEFINITION.vbrief.json`
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.vbrief.json
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 `vbrief/PROJECT-DEFINITION.vbrief.json` is complete
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 `vbrief/proposed/YYYY-MM-DD-*.vbrief.json` (v0.20; no singular specification.vbrief.json)
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: vbrief/PROJECT-DEFINITION.vbrief.json -->`) or full-spec banner as appropriate.
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 `./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/.)
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 `vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
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.vbrief.json", "TrustLevel": "internal" }
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.vbrief.json — Session Tracker Only
207
+ ### plan.xbrief.json — Session Tracker Only
208
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.
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 `./vbrief/proposed/`
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 vBRIEFs in `./vbrief/pending/` or `./vbrief/active/`.
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 `vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
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 `vbrief/.triage-cache/decompositions/<parent-slug>.json`; derive `<parent-slug>` from the parent vBRIEF filename by removing `.vbrief.json` and any leading `YYYY-MM-DD-` date prefix.
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.vbrief.json> --draft vbrief/.triage-cache/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.
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 -- vbrief/pending/2026-05-12-ip001-auth.vbrief.json --draft vbrief/.triage-cache/decompositions/ip001-auth.json --check
286
- task scope:decompose -- vbrief/pending/2026-05-12-ip001-auth.vbrief.json --draft vbrief/.triage-cache/decompositions/ip001-auth.json
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/`, 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.
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 -- vbrief/active/*.vbrief.json
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 `./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.
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 `./vbrief/plan.vbrief.json` session todos as tactical steps progress (session-scoped; do NOT put the project-wide IP list here)
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 `vbrief/PROJECT-DEFINITION.vbrief.json` throughout
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.vbrief.json` — use `vbrief/pending/` scope vBRIEFs as the durable task tracker
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 | `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) |
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` (one per IP/epic) | Phase/epic scope vBRIEFs (v0.20: proposed/) drive roadmap/project render + decomposition |
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 | `./vbrief/plan.vbrief.json` | Session-level tactical plan (carries `planRef` to active scope) |
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
- ├── vbrief/
368
- │ ├── PROJECT-DEFINITION.vbrief.json # Phase 1: Principles narrative
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-*.vbrief.json
371
- │ │ └── YYYY-MM-DD-ip001-....vbrief.json
372
- │ ├── plan.vbrief.json # Phase 4b: session todos (planRef to active scope)
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 `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` from the repo root to generate/refresh the complete `vbrief/PROJECT-DEFINITION.vbrief.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).
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 vbrief/ lifecycle (proposed/ phases + stories) + PROJECT-DEFINITION. Legacy `task spec:render` applies only to migrated trees with `vbrief/specification.vbrief.json`.
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
- | `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 |
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
- | `vbrief/plan.vbrief.json` | Session-level tactical plan (planRef to active) | Speckit (internal) |
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.vbrief.json narratives:
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.vbrief.json` + date-prefixed proposed/ items
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 `vbrief/PROJECT-DEFINITION.vbrief.json` and date-prefixed `vbrief/proposed/*.vbrief.json` files.
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
- - `vbrief/proposed/`
48
- - `vbrief/pending/`
49
- - `vbrief/active/`
50
- - `vbrief/completed/`
51
- - `vbrief/cancelled/`
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
- - `vbrief/PROJECT-DEFINITION.vbrief.json` (complete: narratives + items registry populated from the strategy session)
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 `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.json`
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 `vbrief/PROJECT-DEFINITION.vbrief.json` and the lifecycle folders
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: `vbrief/PROJECT-DEFINITION.vbrief.json` product narratives + lifecycle scope bodies (never the legacy singular spec file).
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.vbrief.json and continue.vbrief.json
91
- - 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.
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-*.vbrief.json only | Never (post-migration) | Omit or deprecation redirect only |
98
- | yolo | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.vbrief.json only | Never | Omit or deprecation redirect only |
99
- | speckit | spec-generating | Yes | Yes (Phase 1+) | proposed/YYYY-MM-DD-*.vbrief.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-*.vbrief.json only | Never | Omit or deprecation redirect only |
101
- | enterprise | spec-generating | Yes | Yes | proposed/YYYY-MM-DD-*.vbrief.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-*.vbrief.json (context/decision vBRIEFs) | N/A | N/A (preparatory only) |
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.vbrief.json` + dated proposed/ vBRIEFs.
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**: `vbrief/active/2026-05-26-define-canonical-v020-strategy-output-contract.vbrief.json` (s1-contract of #1166 strategy consistency decomposition)
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.