@deftai/directive-content 0.105.0 → 0.107.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 (51) hide show
  1. package/Taskfile.yml +13 -0
  2. package/UPGRADING.md +4 -4
  3. package/commands.md +22 -14
  4. package/contracts/agent-hook-readiness.md +3 -3
  5. package/contracts/closed-verb-authz.md +14 -2
  6. package/contracts/design-critique.md +354 -0
  7. package/contracts/issue-eval.md +77 -0
  8. package/contracts/path-write-fence.md +126 -1
  9. package/contracts/runtime-authority.md +2 -0
  10. package/contracts/scm-readiness.md +2 -2
  11. package/docs/scope-provenance.md +1 -1
  12. package/main.md +1 -1
  13. package/package.json +1 -1
  14. package/packs/skills/skills-pack-0.1.json +35 -7
  15. package/packs/strategies/strategies-pack-0.1.json +13 -13
  16. package/scm/github.md +35 -2
  17. package/skills/deft-directive-build/SKILL.md +1 -1
  18. package/skills/deft-directive-design-critique/SKILL.md +55 -0
  19. package/skills/deft-directive-feedback/SKILL.md +11 -2
  20. package/skills/deft-directive-issue-eval/SKILL.md +48 -0
  21. package/skills/deft-directive-probe/SKILL.md +4 -2
  22. package/skills/deft-directive-release/SKILL.md +5 -3
  23. package/skills/deft-directive-review-cycle/SKILL.md +1 -1
  24. package/skills/deft-directive-swarm/SKILL.md +1 -1
  25. package/skills/deft-directive-triage/SKILL.md +3 -2
  26. package/strategies/README.md +4 -4
  27. package/strategies/bdd.md +6 -6
  28. package/strategies/discuss.md +8 -8
  29. package/strategies/emit-hints.md +6 -6
  30. package/strategies/enterprise.md +18 -18
  31. package/strategies/interview.md +4 -4
  32. package/strategies/map.md +6 -6
  33. package/strategies/probe.md +22 -18
  34. package/strategies/rapid.md +16 -16
  35. package/strategies/research.md +6 -6
  36. package/strategies/roadmap.md +1 -1
  37. package/strategies/speckit.md +52 -52
  38. package/strategies/v0-20-contract.md +21 -21
  39. package/strategies/yolo.md +12 -12
  40. package/tasks/engine.yml +2 -0
  41. package/tasks/feedback.yml +1 -1
  42. package/tasks/occupancy.yml +11 -0
  43. package/tasks/policy.yml +10 -0
  44. package/tasks/scm.yml +14 -2
  45. package/tasks/scope.yml +2 -2
  46. package/tasks/session.yml +11 -0
  47. package/tasks/triage-evaluate.yml +22 -0
  48. package/tasks/verify.yml +22 -2
  49. package/templates/agent-prompt-preamble.md +23 -6
  50. package/templates/agents-entry.md +6 -6
  51. package/templates/design-critique-brief.md +55 -0
@@ -94,15 +94,15 @@ See `strategies/map.md` for standalone behavior.
94
94
  - ! Previously-run strategies MUST display with a run count (e.g., `Research (ran 1×)`)
95
95
  - ! No strategy is ever removed from the gate — users can re-run any strategy
96
96
  - ! Run counts are read from `completedStrategies` in
97
- [`./vbrief/plan.vbrief.json`](../vbrief/vbrief.md#strategy-chaining-fields)
97
+ [`./xbrief/plan.xbrief.json`](../vbrief/vbrief.md#strategy-chaining-fields)
98
98
 
99
99
  ### State Tracking
100
100
 
101
101
  - ! On completion of a preparatory strategy, update `completedStrategies` in
102
- `./vbrief/plan.vbrief.json`: increment `runCount`, append artifact paths
102
+ `./xbrief/plan.xbrief.json`: increment `runCount`, append artifact paths
103
103
  - ! Append all new artifact paths to the flat `artifacts` array
104
104
  - ! The next strategy and eventual spec generation MUST load all artifacts
105
- listed in `plan.vbrief.json`
105
+ listed in `plan.xbrief.json`
106
106
  - ! On brownfield **Add scope** or **Update project definition**, load existing
107
107
  PROJECT-DEFINITION identity and preparatory artifacts before asking questions
108
108
 
@@ -578,7 +578,7 @@ diff only on the second pass or when the user explicitly asks for it.
578
578
 
579
579
  ### State Preservation
580
580
 
581
- - ! All `completedStrategies` and `artifacts` in `plan.vbrief.json` MUST be
581
+ - ! All `completedStrategies` and `artifacts` in `plan.xbrief.json` MUST be
582
582
  preserved across revisions
583
583
  - ! The chaining gate will show updated run counts reflecting the full session history
584
584
 
package/strategies/map.md CHANGED
@@ -50,7 +50,7 @@ Mapping produces artifacts that feed into planning so the agent **follows existi
50
50
 
51
51
  ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
52
52
 
53
- Produce a single `vbrief/proposed/{project}-codebase-map.vbrief.json` with four narratives:
53
+ Produce a single `xbrief/proposed/{project}-codebase-map.xbrief.json` with four narratives:
54
54
 
55
55
  ! 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`).
56
56
 
@@ -105,9 +105,9 @@ Produce a single `vbrief/proposed/{project}-codebase-map.vbrief.json` with four
105
105
 
106
106
  ### Artifact Registration (both modes)
107
107
 
108
- - ! On completion, register artifacts in `./vbrief/plan.vbrief.json`:
108
+ - ! On completion, register artifacts in `./xbrief/plan.xbrief.json`:
109
109
  - Update `completedStrategies`: increment `runCount` for `"map"`,
110
- append artifact path (`vbrief/proposed/{project}-codebase-map.vbrief.json`)
110
+ append artifact path (`xbrief/proposed/{project}-codebase-map.xbrief.json`)
111
111
  - Append the path to the flat `artifacts` array
112
112
  - ! The mapping narratives MUST inform subsequent strategies and spec generation:
113
113
  - `Conventions` -> implementation constraints
@@ -130,7 +130,7 @@ Mapping complete. Here's what I found:
130
130
  - Conventions: [brief summary]
131
131
  - Concerns: [brief summary]
132
132
 
133
- Artifact: vbrief/proposed/{project}-codebase-map.vbrief.json
133
+ Artifact: xbrief/proposed/{project}-codebase-map.xbrief.json
134
134
 
135
135
  What would you like to do next?
136
136
 
@@ -141,7 +141,7 @@ What would you like to do next?
141
141
  ```
142
142
 
143
143
  - ! Present the narrative summary before offering options
144
- - ! If the user chooses a strategy, invoke it (the artifact persists in `vbrief/proposed/`)
144
+ - ! If the user chooses a strategy, invoke it (the artifact persists in `xbrief/proposed/`)
145
145
  - ! If the user chooses "done", confirm the artifact location and exit cleanly
146
146
  - ~ Recommend option 1 (interview) when the user's goal is to build or extend
147
147
  - ~ Recommend option 4 (done) when the user's goal is exploration or onboarding
@@ -173,7 +173,7 @@ Before an interview — analysis-first, then spec:
173
173
  Map this codebase, then use the interview strategy to plan [feature].
174
174
  ```
175
175
 
176
- Or set in PROJECT-DEFINITION.vbrief.json narratives:
176
+ Or set in PROJECT-DEFINITION.xbrief.json narratives:
177
177
  ```json
178
178
  "Strategy": "strategies/map.md"
179
179
  ```
@@ -73,46 +73,50 @@ Walk the decision tree depth-first. For each unresolved branch:
73
73
 
74
74
  ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
75
75
 
76
- ### Mechanical guard (`scripts/probe_session.py`)
76
+ ### Mechanical guard (`deft probe-session`)
77
77
 
78
78
  Probe completion is enforced mechanically — not by prose alone. A per-clone
79
79
  session file at `.deft/probe-session.json` records whether the session is still
80
80
  `interrogate` or `complete`, plus the probe `target`, `currentBranch`, and
81
81
  `resolvedDecisions`.
82
82
 
83
+ **Waiver (#3556):** The probe skill keeps the no-artifact guard and does not
84
+ require `deft probe-session`. This strategy names `deft probe-session`.
85
+ Silence is not agreement.
86
+
83
87
  - ! At probe start, record the session:
84
- `uv run python scripts/probe_session.py start --target <scope>`
88
+ `deft probe-session start --target <scope>`
85
89
  - ! While interrogating, record locked/deferred/risk-accepted decisions and
86
90
  branch focus with `record` / `set-branch` subcommands as branches resolve
87
91
  - ! Before writing probe output or registering `completedStrategies.probe`,
88
92
  mark the session complete:
89
- `uv run python scripts/probe_session.py complete`
93
+ `deft probe-session complete`
90
94
  - ! Immediately before artifact or plan registration, run the guard:
91
- - `uv run python scripts/probe_session.py guard-artifact --path vbrief/proposed/{scope}-probe.vbrief.json`
92
- - `uv run python scripts/probe_session.py guard-plan-registration`
95
+ - `deft probe-session guard-artifact --path xbrief/proposed/YYYY-MM-DD-{scope}-probe.xbrief.json`
96
+ - `deft probe-session guard-plan-registration`
93
97
  - ⊗ Write probe artifacts or update `completedStrategies.probe` while the
94
98
  session state is still `interrogate` — the guard exits non-zero with an
95
99
  actionable recovery message
96
100
 
97
101
  **Recovery when the guard blocks handoff:** continue interrogation until the
98
102
  [transition criteria](#transition-criteria-probe-complete) are met, record
99
- decisions with `probe_session.py record`, run `probe_session.py complete`,
100
- then retry the guard before writing artifacts or updating `plan.vbrief.json`.
103
+ decisions with `deft probe-session record`, run `deft probe-session complete`,
104
+ then retry the guard before writing artifacts or updating `plan.xbrief.json`.
101
105
 
102
- `{scope}` is the project name from `PROJECT-DEFINITION.vbrief.json`, or the
106
+ `{scope}` is the project name from `PROJECT-DEFINITION.xbrief.json`, or the
103
107
  feature/component name if probing a sub-scope. Use the same value consistently
104
108
  throughout the session. Examples: `my-app-probe`, `auth-probe`.
105
109
 
106
- - ! Produce a `vbrief/proposed/{scope}-probe.vbrief.json` scope vBRIEF with three mandatory narratives:
110
+ - ! Produce a `xbrief/proposed/YYYY-MM-DD-{scope}-probe.xbrief.json` scope xBRIEF with three mandatory narratives:
107
111
  - `LockedDecisions` — what was resolved and why (when the lock is an intentional under-build, include dual-path graduation fields: `now`, `later`, `graduationRef`, `trigger`, `status` — see [Graduation (Now+Later)](#graduation-nowlater-when-locking-an-under-build-2899))
108
112
  - `SurfacedRisks` — concerns raised, even if not fully resolved
109
113
  - `DeferredDecisions` — explicitly acknowledged items with justification
110
114
  - ! Each entry in a narrative includes: **question asked**, **answer given**, **status** (locked / deferred / risk-accepted)
111
- - ! This vBRIEF is injected into all downstream work: planning, execution, verification
112
- - ! Persist significant decisions as vBRIEF narratives on the relevant plan items
113
- - ⊗ Write probe output to a hand-authored markdown file — use vBRIEF narratives for token-efficient, machine-consumable agent consumption (mirrors the [discuss](./discuss.md) and [research](./research.md) output contracts so the chaining-gate flow-through guarantee is mechanical, not aspirational)
115
+ - ! This xBRIEF is injected into all downstream work: planning, execution, verification
116
+ - ! Persist significant decisions as xBRIEF narratives on the relevant plan items
117
+ - ⊗ Write probe output to a hand-authored markdown file — use xBRIEF narratives for token-efficient, machine-consumable agent consumption (mirrors the [discuss](./discuss.md) and [research](./research.md) output contracts so the chaining-gate flow-through guarantee is mechanical, not aspirational)
114
118
 
115
- ! After emitting the probe scope vBRIEF to `vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
119
+ ! After emitting the probe scope xBRIEF to `xbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
116
120
 
117
121
  ## Graduation (Now+Later) when locking an under-build (#2899)
118
122
 
@@ -142,15 +146,15 @@ Glossary naming for Graduation is owned by sibling work (#2907); this section is
142
146
 
143
147
  ## Then: Chaining Gate
144
148
 
145
- After the probe is complete and `vbrief/proposed/{scope}-probe.vbrief.json` is
149
+ After the probe is complete and `xbrief/proposed/YYYY-MM-DD-{scope}-probe.xbrief.json` is
146
150
  written, return to the [chaining gate](./interview.md#chaining-gate).
147
151
 
148
- - ! On completion, register artifacts in `./vbrief/plan.vbrief.json`:
152
+ - ! On completion, register artifacts in `./xbrief/plan.xbrief.json`:
149
153
  - Update `completedStrategies`: increment `runCount` for `"probe"`,
150
- append artifact path (`vbrief/proposed/{scope}-probe.vbrief.json`)
154
+ append artifact path (`xbrief/proposed/YYYY-MM-DD-{scope}-probe.xbrief.json`)
151
155
  - Append the path to the flat `artifacts` array
152
156
  - ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
153
- - ! The `LockedDecisions`, `SurfacedRisks`, and `DeferredDecisions` narratives from `vbrief/proposed/{scope}-probe.vbrief.json` MUST flow
157
+ - ! The `LockedDecisions`, `SurfacedRisks`, and `DeferredDecisions` narratives from `xbrief/proposed/YYYY-MM-DD-{scope}-probe.xbrief.json` MUST flow
154
158
  into subsequent strategies and spec generation:
155
159
  - Locked decisions become constraints in the specification
156
160
  - Surfaced risks become NFRs or explicit acceptance criteria
@@ -174,4 +178,4 @@ written, return to the [chaining gate](./interview.md#chaining-gate).
174
178
  - ⊗ Using codebase exploration as a substitute for asking the user about deliberate design choices
175
179
  - ⊗ Stopping when the conversation feels comfortable — stop when no new branches emerge
176
180
  - ⊗ Ending after probe without chaining back to the gate (chained mode; in standalone context, returning to the invoking strategy's menu satisfies the completion requirement per the [standalone-context rule](#then-chaining-gate))
177
- - ⊗ Writing probe output to a plain markdown file (`{scope}-probe.md`) instead of the canonical `vbrief/proposed/{scope}-probe.vbrief.json` scope vBRIEF — plain markdown bypasses the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light) and breaks the downstream-consumer flow-through guarantee
181
+ - ⊗ Writing probe output to a plain markdown file (`{scope}-probe.md`) instead of the canonical `xbrief/proposed/YYYY-MM-DD-{scope}-probe.xbrief.json` scope xBRIEF — plain markdown bypasses the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light) and breaks the downstream-consumer flow-through guarantee
@@ -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).