@deftai/directive-content 0.64.0 → 0.66.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 (76) hide show
  1. package/.githooks/_deft-run.sh +14 -0
  2. package/.githooks/pre-commit +9 -10
  3. package/.githooks/pre-push +4 -7
  4. package/QUICK-START.md +8 -4
  5. package/Taskfile.yml +32 -14
  6. package/UPGRADING.md +40 -0
  7. package/commands.md +46 -41
  8. package/conventions/rule-ownership.json +1 -1
  9. package/docs/BROWNFIELD.md +37 -33
  10. package/docs/directive-lifecycle.md +2 -2
  11. package/docs/getting-started.md +8 -8
  12. package/package.json +1 -1
  13. package/packs/skills/skills-pack-0.1.json +28 -28
  14. package/skills/deft-directive-article-review/SKILL.md +4 -4
  15. package/skills/deft-directive-build/SKILL.md +37 -37
  16. package/skills/deft-directive-cost/SKILL.md +6 -6
  17. package/skills/deft-directive-debug/SKILL.md +4 -4
  18. package/skills/deft-directive-decompose/SKILL.md +15 -15
  19. package/skills/deft-directive-gh-arch/SKILL.md +3 -3
  20. package/skills/deft-directive-gh-slice/SKILL.md +2 -2
  21. package/skills/deft-directive-interview/SKILL.md +12 -12
  22. package/skills/deft-directive-pre-pr/SKILL.md +3 -3
  23. package/skills/deft-directive-probe/SKILL.md +9 -9
  24. package/skills/deft-directive-refinement/SKILL.md +65 -65
  25. package/skills/deft-directive-release/SKILL.md +3 -3
  26. package/skills/deft-directive-review-cycle/SKILL.md +4 -4
  27. package/skills/deft-directive-setup/SKILL.md +71 -71
  28. package/skills/deft-directive-swarm/SKILL.md +94 -94
  29. package/skills/deft-directive-sync/SKILL.md +55 -55
  30. package/skills/deft-directive-triage/SKILL.md +15 -15
  31. package/tasks/architecture.yml +3 -1
  32. package/tasks/cache.yml +20 -10
  33. package/tasks/capacity.yml +8 -4
  34. package/tasks/change.yml +8 -10
  35. package/tasks/changelog.yml +3 -1
  36. package/tasks/codebase.yml +20 -10
  37. package/tasks/commit.yml +4 -8
  38. package/tasks/engine.yml +16 -4
  39. package/tasks/install.yml +4 -8
  40. package/tasks/issue.yml +8 -10
  41. package/tasks/migrate.yml +24 -8
  42. package/tasks/packs.yml +32 -16
  43. package/tasks/policy.yml +24 -12
  44. package/tasks/pr.yml +16 -8
  45. package/tasks/prd.yml +9 -12
  46. package/tasks/project.yml +14 -14
  47. package/tasks/reconcile.yml +4 -8
  48. package/tasks/roadmap.yml +9 -5
  49. package/tasks/scm.yml +36 -18
  50. package/tasks/scope-undo.yml +3 -1
  51. package/tasks/scope.yml +40 -26
  52. package/tasks/session.yml +4 -2
  53. package/tasks/slice.yml +8 -10
  54. package/tasks/spec.yml +10 -12
  55. package/tasks/swarm.yml +20 -10
  56. package/tasks/triage-actions.yml +32 -16
  57. package/tasks/triage-bootstrap.yml +4 -2
  58. package/tasks/triage-bulk.yml +20 -10
  59. package/tasks/triage-classify.yml +4 -2
  60. package/tasks/triage-queue.yml +12 -6
  61. package/tasks/triage-reconcile.yml +4 -2
  62. package/tasks/triage-scope-drift.yml +4 -2
  63. package/tasks/triage-scope.yml +4 -2
  64. package/tasks/triage-smoketest.yml +4 -2
  65. package/tasks/triage-subscribe.yml +8 -4
  66. package/tasks/triage-summary.yml +4 -2
  67. package/tasks/triage-welcome.yml +4 -2
  68. package/tasks/ts.yml +3 -1
  69. package/tasks/umbrella.yml +1 -7
  70. package/tasks/vbrief.yml +25 -17
  71. package/tasks/verify.yml +107 -48
  72. package/templates/agent-prompt-preamble.md +16 -16
  73. package/templates/agents-entry.md +23 -19
  74. package/vbrief/conformance/extensions/valid/extension-at-root.vbrief.json +31 -0
  75. package/vbrief/conformance/extensions/valid/nested-extension-value.vbrief.json +19 -0
  76. package/vbrief/schemas/xbrief-core-0.8.schema.json +786 -0
@@ -53,7 +53,7 @@ git clone https://github.com/deftai/directive.git deft
53
53
 
54
54
  ## 2. Migrate Existing Docs (frozen-release path, #2068)
55
55
 
56
- If your project already contains authoritative root `SPECIFICATION.md`, `PROJECT.md`, or incomplete vBRIEF lifecycle folders, **current npm releases no longer ship the in-product migrator**. Pin framework **v0.59.0**, install Python 3.11+ and `uv`, then run the one-shot migration from that payload:
56
+ If your project already contains authoritative root `SPECIFICATION.md`, `PROJECT.md`, or incomplete xBRIEF lifecycle folders, **current npm releases no longer ship the in-product migrator**. Pin framework **v0.59.0**, install Python 3.11+ and `uv`, then run the one-shot migration from that payload:
57
57
 
58
58
  ```bash
59
59
  task migrate:preflight
@@ -67,42 +67,42 @@ The migration is **idempotent** on the pinned release — safe to re-run on a pa
67
67
 
68
68
  ### What migration does
69
69
 
70
- 1. **Parses** existing `specification.vbrief.json` (if present) + `PROJECT.md` and generates `vbrief/PROJECT-DEFINITION.vbrief.json` with a `narratives` map (project identity) and an `items` registry (scope).
71
- 2. **Creates** the five lifecycle folders: `vbrief/proposed/`, `vbrief/pending/`, `vbrief/active/`, `vbrief/completed/`, `vbrief/cancelled/`.
72
- 3. **Converts** `ROADMAP.md` items into individual `pending/` scope vBRIEFs with origin provenance (`references` array pointing back to GitHub issue numbers, if available).
73
- 4. **Replaces** `SPECIFICATION.md` and `PROJECT.md` with deprecation redirect stubs containing `<!-- deft:deprecated-redirect -->` -- the sentinel that tells future `task vbrief:validate` runs these files are no longer authoritative.
74
- 5. **Preserves** user-customized content it cannot parse: anything non-standard in `PROJECT.md` is stored in a `ProjectConfig` narrative on `PROJECT-DEFINITION.vbrief.json` instead of being discarded.
70
+ 1. **Parses** existing `specification.xbrief.json` (if present) + `PROJECT.md` and generates `xbrief/PROJECT-DEFINITION.xbrief.json` with a `narratives` map (project identity) and an `items` registry (scope).
71
+ 2. **Creates** the five lifecycle folders: `xbrief/proposed/`, `xbrief/pending/`, `xbrief/active/`, `xbrief/completed/`, `xbrief/cancelled/`.
72
+ 3. **Converts** `ROADMAP.md` items into individual `pending/` scope xBRIEFs with origin provenance (`references` array pointing back to GitHub issue numbers, if available).
73
+ 4. **Replaces** `SPECIFICATION.md` and `PROJECT.md` with deprecation redirect stubs containing `<!-- deft:deprecated-redirect -->` -- the sentinel that tells future `deft xbrief:validate` runs these files are no longer authoritative.
74
+ 5. **Preserves** user-customized content it cannot parse: anything non-standard in `PROJECT.md` is stored in a `ProjectConfig` narrative on `PROJECT-DEFINITION.xbrief.json` instead of being discarded.
75
75
 
76
76
  ### Preserving existing spec content (#397 ingestion)
77
77
 
78
78
  `task migrate:vbrief` also reads structured `## ` sections from `PRD.md` and `SPECIFICATION.md` (Problem Statement, Goals, User Stories, Requirements, Success Metrics, Non-Functional Requirements, Open Questions) and maps them to canonical narrative keys on `vbrief/specification.vbrief.json`. Existing keys are never overwritten.
79
79
 
80
- - ~ Review the generated `vbrief/specification.vbrief.json` after migration; fill in any narrative the parser could not map.
80
+ - ~ Review the generated `xbrief/specification.xbrief.json` after migration; fill in any narrative the parser could not map.
81
81
  - ~ If the parser missed content you care about, copy it into the appropriate narrative before deleting the old file backup.
82
82
 
83
83
  ---
84
84
 
85
85
  ## 3. What Changes After Migration
86
86
 
87
- ### Source of truth: `.vbrief.json` files
87
+ ### Source of truth: `.xbrief.json` files
88
88
 
89
- - `vbrief/PROJECT-DEFINITION.vbrief.json` replaces `PROJECT.md` as the project identity gestalt (tech stack, strategy, coverage, architecture, branching convention).
90
- - `vbrief/specification.vbrief.json` replaces `SPECIFICATION.md` as the project spec source of truth.
91
- - Individual units of work live in `vbrief/{proposed,pending,active,completed,cancelled}/` as `YYYY-MM-DD-<slug>.vbrief.json`.
89
+ - `xbrief/PROJECT-DEFINITION.xbrief.json` replaces `PROJECT.md` as the project identity gestalt (tech stack, strategy, coverage, architecture, branching convention).
90
+ - `xbrief/specification.xbrief.json` replaces `SPECIFICATION.md` as the project spec source of truth.
91
+ - Individual units of work live in `xbrief/{proposed,pending,active,completed,cancelled}/` as `YYYY-MM-DD-<slug>.xbrief.json`.
92
92
 
93
93
  ### Rendered views: `.md` artifacts
94
94
 
95
95
  `.md` files like `PRD.md`, `SPECIFICATION.md`, and `ROADMAP.md` become **rendered views**, generated on demand:
96
96
 
97
97
  ```bash
98
- task spec:render # vbrief/specification.vbrief.json -> SPECIFICATION.md
99
- task prd:render # vbrief/specification.vbrief.json narratives -> PRD.md
100
- task roadmap:render # vbrief/pending/ scope vBRIEFs -> ROADMAP.md
101
- task project:render # lifecycle folders -> PROJECT-DEFINITION.vbrief.json items registry
98
+ task spec:render # xbrief/specification.xbrief.json -> SPECIFICATION.md
99
+ task prd:render # xbrief/specification.xbrief.json narratives -> PRD.md
100
+ task roadmap:render # xbrief/pending/ scope xBRIEFs -> ROADMAP.md
101
+ task project:render # lifecycle folders -> PROJECT-DEFINITION.xbrief.json items registry
102
102
  ```
103
103
 
104
104
  - ⊗ Edit the rendered `.md` files directly -- your changes are overwritten on the next `task *:render` run.
105
- - ! Edit the underlying `.vbrief.json` instead, then run `task *:render` to refresh the export.
105
+ - ! Edit the underlying `.xbrief.json` instead, then run `task *:render` to refresh the export.
106
106
  - ~ `task spec:render` and `task prd:render` are also invoked automatically by `skills/deft-directive-pre-pr/SKILL.md` Phase 3b if the export files already exist.
107
107
 
108
108
  ### Deprecation sentinels
@@ -113,11 +113,11 @@ After migration, the root `SPECIFICATION.md` and `PROJECT.md` contain a redirect
113
113
  <!-- deft:deprecated-redirect -->
114
114
  # PROJECT.md -- DEPRECATED
115
115
 
116
- This file has been migrated to `vbrief/PROJECT-DEFINITION.vbrief.json`.
116
+ This file has been migrated to `xbrief/PROJECT-DEFINITION.xbrief.json`.
117
117
 
118
118
  **See instead:**
119
- - `vbrief/PROJECT-DEFINITION.vbrief.json` (project identity)
120
- - scope vBRIEFs in `vbrief/{proposed,pending,active,completed,cancelled}/`
119
+ - `xbrief/PROJECT-DEFINITION.xbrief.json` (project identity)
120
+ - scope xBRIEFs in `xbrief/{proposed,pending,active,completed,cancelled}/`
121
121
  ```
122
122
 
123
123
  (The actual generated body may include additional context; the sentinel comment on line 1 is what the validator enforces.)
@@ -134,41 +134,41 @@ On first interactive session after adding Deft, the agent-driven path runs a **p
134
134
 
135
135
  1. `SPECIFICATION.md` exists and does **not** contain `<!-- deft:deprecated-redirect -->`.
136
136
  2. `PROJECT.md` exists and does **not** contain `<!-- deft:deprecated-redirect -->`.
137
- 3. `vbrief/specification.vbrief.json` exists but the lifecycle folders (`proposed/`, `pending/`, `active/`, `completed/`, `cancelled/`) do **not**.
137
+ 3. `xbrief/specification.xbrief.json` exists but the lifecycle folders (`proposed/`, `pending/`, `active/`, `completed/`, `cancelled/`) do **not**.
138
138
 
139
- **Action on detection:** the agent stops with an actionable message such as "Run `task migrate:vbrief` to upgrade to the vBRIEF-centric model."
139
+ **Action on detection:** the agent stops with an actionable message such as "Run `task migrate:vbrief` on pinned v0.59.0 to upgrade to the xBRIEF-centric model (see UPGRADING.md § Frozen pre-v0.20 document-model migration)."
140
140
 
141
141
  ### CLI path (`.deft/core/run`)
142
142
 
143
- The CLI has a companion non-fatal upgrade gate (issue #410): `.deft/core/run` warns on every invocation when `vbrief/.deft-version` does not match the framework `VERSION`, or when legacy artifacts are found without the sentinel. Interactive sessions get a `Continue anyway? [y/N]` prompt; non-interactive sessions (CI, cloud agents) warn once and continue so CI is never blocked.
143
+ The CLI has a companion non-fatal upgrade gate (issue #410): `.deft/core/run` warns on every invocation when `xbrief/.deft-version` does not match the framework `VERSION`, or when legacy artifacts are found without the sentinel. Interactive sessions get a `Continue anyway? [y/N]` prompt; non-interactive sessions (CI, cloud agents) warn once and continue so CI is never blocked.
144
144
 
145
145
  After completing migration, record the framework version so the CLI gate stays silent:
146
146
 
147
147
  ```bash
148
- .deft/core/run upgrade # writes vbrief/.deft-version = <current VERSION>
148
+ .deft/core/run upgrade # writes xbrief/.deft-version = <current VERSION>
149
149
  ```
150
150
 
151
151
  ---
152
152
 
153
153
  ## 5. Post-Migration Checklist
154
154
 
155
- Run these in order once `task migrate:vbrief` completes:
155
+ Run these in order once pre-v0.20 migration completes on v0.59.0 (`task migrate:vbrief`), you have upgraded to current npm, and — if `deft doctor` still reports a legacy `vbrief/` layout — `deft migrate:xbrief` has converted the tree to `xbrief/`:
156
156
 
157
- 1. ! `task vbrief:validate` -- should report zero errors and zero warnings about `SPECIFICATION.md` / `PROJECT.md`. Deprecation-sentinel warnings from `scripts/vbrief_validate.py` fire when the sentinel is **missing** from those files -- if you see them, the redirect stubs were not written correctly and the migration is incomplete; re-run `task migrate:vbrief` or patch the stubs to include the `<!-- deft:deprecated-redirect -->` line.
158
- 2. ! `task check` -- the full pre-commit pipeline (fmt + lint + typecheck + tests + coverage + vbrief validation + link check). Must be green before your first Deft-aware commit.
159
- 3. ~ `task project:render` -- regenerate `vbrief/PROJECT-DEFINITION.vbrief.json` items registry to reflect the newly-migrated scopes.
157
+ 1. ! `deft xbrief:validate` -- should report zero errors and zero warnings about `SPECIFICATION.md` / `PROJECT.md`. Deprecation-sentinel warnings from `scripts/vbrief_validate.py` fire when the sentinel is **missing** from those files -- if you see them, the redirect stubs were not written correctly and the migration is incomplete; re-run `task migrate:vbrief` on v0.59.0 or patch the stubs to include the `<!-- deft:deprecated-redirect -->` line.
158
+ 2. ! `task check` -- the full pre-commit pipeline (fmt + lint + typecheck + tests + coverage + xbrief validation + link check). Must be green before your first Deft-aware commit.
159
+ 3. ~ `task project:render` -- regenerate `xbrief/PROJECT-DEFINITION.xbrief.json` items registry to reflect the newly-migrated scopes.
160
160
  4. ~ `task roadmap:render` and `task spec:render` -- refresh the rendered views so teammates browsing the repo see current content.
161
- 5. ~ Review the generated `vbrief/proposed/` and `vbrief/pending/` scope vBRIEFs; promote / activate / cancel them as appropriate via `task scope:promote|activate|complete|cancel|restore|block|unblock`.
162
- 6. ~ Commit the migration in a focused PR with a conventional-commit subject such as `chore(deft): migrate to vBRIEF-centric document model (v0.20)`.
161
+ 5. ~ Review the generated `xbrief/proposed/` and `xbrief/pending/` scope xBRIEFs; promote / activate / cancel them as appropriate via `task scope:promote|activate|complete|cancel|restore|block|unblock`.
162
+ 6. ~ Commit the migration in a focused PR with a conventional-commit subject such as `chore(deft): migrate to xBRIEF-centric document model (v0.20)`.
163
163
 
164
164
  ---
165
165
 
166
166
  ## 6. Troubleshooting
167
167
 
168
- - **`task vbrief:validate` fails on my scope vBRIEFs:** filename must follow `YYYY-MM-DD-<lowercase-slug>.vbrief.json` (D7); folder must match `plan.status` (D2); PROJECT-DEFINITION must have `overview` and `tech stack` narrative keys after `.lower()` (D3).
169
- - **`task migrate:vbrief` did not migrate my roadmap:** the migration parser recognises task-based (`- \`X.Y.Z\` Title`) and plain (`- Title`) list item formats under `## ` headings. Custom formats fall through to synthetic IDs -- review the generated vBRIEFs and rename / reshape as needed.
168
+ - **`deft xbrief:validate` fails on my scope xBRIEFs:** filename must follow `YYYY-MM-DD-<lowercase-slug>.xbrief.json` (D7); folder must match `plan.status` (D2); PROJECT-DEFINITION must have `overview` and `tech stack` narrative keys after `.lower()` (D3).
169
+ - **`task migrate:vbrief` did not migrate my roadmap:** the migration parser recognises task-based (`- \`X.Y.Z\` Title`) and plain (`- Title`) list item formats under `## ` headings. Custom formats fall through to synthetic IDs -- review the generated xBRIEFs and rename / reshape as needed.
170
170
  - **My agent hits a missing `deft/skills/deft-*/` path:** that is a stale v0.19 `AGENTS.md` from before the `deft-directive-*` rename. Tell your agent "Read `deft/QUICK-START.md` and follow it" -- QUICK-START refreshes the Deft-managed section of `AGENTS.md` idempotently. See `UPGRADING.md` (present in repositories on v0.20 or later) for the detailed upgrade flow.
171
- - **I edited `SPECIFICATION.md` by accident:** revert the file to the redirect stub (`<!-- deft:deprecated-redirect -->` + the three-line note), then edit `vbrief/specification.vbrief.json` and run `task spec:render`.
171
+ - **I edited `SPECIFICATION.md` by accident:** revert the file to the redirect stub (`<!-- deft:deprecated-redirect -->` + the three-line note), then edit `xbrief/specification.xbrief.json` and run `task spec:render`.
172
172
 
173
173
  ---
174
174
 
@@ -176,8 +176,12 @@ Run these in order once `task migrate:vbrief` completes:
176
176
 
177
177
  - [README.md](../../README.md) -- product overview and greenfield flow.
178
178
  - [QUICK-START.md](../QUICK-START.md) -- agent bootstrap (also handles the brownfield AGENTS.md append case).
179
- - [vbrief/vbrief.md](../vbrief/vbrief.md) -- canonical vBRIEF file taxonomy, lifecycle folders, and status mapping.
179
+ - [vbrief/vbrief.md](../vbrief/vbrief.md) -- canonical xBRIEF file taxonomy, lifecycle folders, and status mapping.
180
180
  - [commands.md](../commands.md) -- full `run` vs `task` command lifecycle.
181
181
  - `skills/deft-directive-build/SKILL.md` -- Pre-Cutover Detection Guard implementation.
182
182
  - `skills/deft-directive-setup/SKILL.md` -- greenfield path for comparison.
183
183
  - `UPGRADING.md` (repo root, v0.20+) -- version-by-version upgrade guide.
184
+
185
+ <!-- xbrief-backcompat-2111 -->
186
+
187
+ > **xBRIEF rename (#2034 / #2110):** Projects still on the legacy `vbrief/` layout and `x-vbrief/` reference tokens remain read-accepted until you run `deft migrate:xbrief` (or `task migrate:xbrief`). `deft doctor` and `deft update` signpost unmigrated layouts.
@@ -21,7 +21,7 @@ pipeline; it is two connected phases that loop.
21
21
  A project starts with a **Concept**. That concept passes through **Strategy Analysis** — an
22
22
  iterative loop of *looking* at the terrain and *deep thinking* about the approach — until it
23
23
  produces a **Specification + Artifacts** (the project definition and the first proposed scope
24
- vBRIEFs).
24
+ xBRIEFs).
25
25
 
26
26
  Strategy analysis is deliberately a loop, not a step: you can map, then probe, then discuss,
27
27
  then map again before the spec stabilizes. It is also re-entered later "as needed" when a piece
@@ -56,7 +56,7 @@ framework:
56
56
  | **Look** | Mapping and exploring the terrain — [`strategies/map.md`](../strategies/map.md) (`/deft:run:map`), codebase structure. |
57
57
  | **Deep Think** | Adversarial / alignment analysis — [`strategies/probe.md`](../strategies/probe.md), [`strategies/discuss.md`](../strategies/discuss.md), [`strategies/research.md`](../strategies/research.md), and `deft-directive-gh-arch`. |
58
58
  | **Strategy Analysis** | The preparatory strategies cycling through the [strategy chaining gate](../strategies/README.md) before spec generation. |
59
- | **Spec / Specification + Artifacts** | Output of the spec-generating strategies (interview, speckit, …): `vbrief/PROJECT-DEFINITION.vbrief.json` plus dated `vbrief/proposed/` scope vBRIEFs. |
59
+ | **Spec / Specification + Artifacts** | Output of the spec-generating strategies (interview, speckit, …): `xbrief/PROJECT-DEFINITION.xbrief.json` plus dated `xbrief/proposed/` scope xBRIEFs. |
60
60
  | **Resume / Session Start** | The session-start ritual — `task session:start` and the `task triage:welcome` "what's next" one-liner. |
61
61
  | **Triage + Refine/Rethink** | The triage cache and refinement loop — `task triage:*`, [`deft-directive-triage`](../skills/deft-directive-triage/SKILL.md), [`deft-directive-refinement`](../skills/deft-directive-refinement/SKILL.md). "Rethink" = escalate back to Strategy Analysis. |
62
62
  | **Slice** | Vertical-slice decomposition — [`deft-directive-gh-slice`](../skills/deft-directive-gh-slice/SKILL.md) and [`deft-directive-decompose`](../skills/deft-directive-decompose/SKILL.md). |
@@ -1,6 +1,6 @@
1
1
  # Getting Started with Deft Directive
2
2
 
3
- Deft Directive is a Taskfile-first framework for AI-assisted software work. It combines agent guidance, deterministic gates, vBRIEF lifecycle metadata, installer/doctor handoff, and cache-backed backlog workflows. This guide walks through installation, preferences, project setup, and the first scope workflow.
3
+ Deft Directive is a Taskfile-first framework for AI-assisted software work. It combines agent guidance, deterministic gates, xBRIEF lifecycle metadata, installer/doctor handoff, and cache-backed backlog workflows. This guide walks through installation, preferences, project setup, and the first scope workflow.
4
4
 
5
5
  > **Note**: This guide is an orientation layer. For a single-picture mental model of how Directive turns an idea into shipped work, see [the Directive lifecycle](./directive-lifecycle.md); for command behavior, see [commands.md](../commands.md); for current architecture details, see [ARCHITECTURE.md](../../docs/ARCHITECTURE.md).
6
6
 
@@ -62,7 +62,7 @@ deft-install --yes --upgrade --repo-root . --json
62
62
  ```
63
63
 
64
64
  Those consumer flows intentionally project Deft-managed files into your project
65
- root (`AGENTS.md`, skills pointers, gitignore entries, vbrief scaffolding, and
65
+ root (`AGENTS.md`, skills pointers, gitignore entries, xbrief scaffolding, and
66
66
  related guard configuration). Framework maintainers working inside a
67
67
  `deftai/directive` checkout should instead follow
68
68
  [`CONTRIBUTING.md`](../../CONTRIBUTING.md) and use `--maintainer`; maintainer setup
@@ -78,7 +78,7 @@ checks tools without rewriting consumer-managed files.
78
78
 
79
79
  ## Working an existing backlog
80
80
 
81
- If you are adopting Deft on a project that already has an issue tracker (existing repo, brownfield migration, an upstream bug list that has been accumulating), you do not have to start from an empty `vbrief/proposed/`. The refinement skill's **Phase 0 triage workflow** lets you walk an existing backlog locally, decide what to keep, and let only the **accepted** items land in `vbrief/proposed/`. Trigger words: **"triage"**, **"work the cache"**, **"pre-ingest"**, **"action menu"**.
81
+ If you are adopting Deft on a project that already has an issue tracker (existing repo, brownfield migration, an upstream bug list that has been accumulating), you do not have to start from an empty `xbrief/proposed/`. The refinement skill's **Phase 0 triage workflow** lets you walk an existing backlog locally, decide what to keep, and let only the **accepted** items land in `xbrief/proposed/`. Trigger words: **"triage"**, **"work the cache"**, **"pre-ingest"**, **"action menu"**.
82
82
 
83
83
  ### Step 1 — Scoped first populate
84
84
 
@@ -103,7 +103,7 @@ The unbounded no-flag form remains the default for small backlogs. For real-size
103
103
  After the cache is populated, ask your agent to triage. For each cached candidate the agent presents a numbered action menu and waits for your decision:
104
104
 
105
105
  ```
106
- 1. Accept -- task triage:accept <issue> (writes proposed/ vBRIEF + audit-log entry)
106
+ 1. Accept -- task triage:accept <issue> (writes proposed/ xBRIEF + audit-log entry)
107
107
  2. Reject -- task triage:reject <issue> (audit-log entry only; closes the upstream issue)
108
108
  3. Defer -- task triage:defer <issue> (non-terminal; resurfaces on the next pass)
109
109
  4. Needs-AC -- task triage:needs-ac <issue> (non-terminal; flags missing acceptance criteria)
@@ -112,19 +112,19 @@ After the cache is populated, ask your agent to triage. For each cached candidat
112
112
  7. Back
113
113
  ```
114
114
 
115
- Only **accepted** items become scope vBRIEFs in `vbrief/proposed/`. Rejected, deferred, and duplicate decisions are recorded in the audit log so the backlog stays focused. Bulk verbs (`task triage:bulk-accept` / `bulk-reject` / `bulk-defer` / `bulk-needs-ac`) handle predictable patterns (e.g. "reject every `wontfix`-labelled candidate") without walking the menu N times.
115
+ Only **accepted** items become scope xBRIEFs in `xbrief/proposed/`. Rejected, deferred, and duplicate decisions are recorded in the audit log so the backlog stays focused. Bulk verbs (`task triage:bulk-accept` / `bulk-reject` / `bulk-defer` / `bulk-needs-ac`) handle predictable patterns (e.g. "reject every `wontfix`-labelled candidate") without walking the menu N times.
116
116
 
117
117
  ### Step 3 — Understand the three-tier model
118
118
 
119
119
  Phase 0 reads and writes three distinct stores; they never collapse into one:
120
120
 
121
121
  - **Cache** — `.deft-cache/github-issue/<owner>/<repo>/<N>/` is the local mirror of fetched issue bodies, labels, and state. Populated by `task cache:fetch-all`; read via `task cache:get -- github-issue OWNER/NAME/<N>`. The directory is gitignored — your local mirror is private to your machine. The cache is the **read** surface for triage so decisions are reproducible across re-runs (no live `gh issue view` per decision).
122
- - **Audit log** — `vbrief/.eval/candidates.jsonl` is an append-only JSONL recording every candidate you have ever seen plus the action taken (`accept | reject | defer | needs-ac | mark-duplicate`) and a timestamp. Re-running triage against the same cache short-circuits items that already have a terminal entry, so deferred / Needs-AC items resurface and rejected ones do not.
123
- - **Accepted backlog** — `vbrief/proposed/` is the standard scope-vBRIEF lifecycle folder. **Writes flow only through `task triage:accept`**, which delegates the actual vBRIEF authoring to `task issue:ingest` so slug, reference, and schema rules stay in one place. Hand-authored proposed/ vBRIEFs are still allowed; what changed is that triage no longer writes there silently.
122
+ - **Audit log** — `xbrief/.eval/candidates.jsonl` is an append-only JSONL recording every candidate you have ever seen plus the action taken (`accept | reject | defer | needs-ac | mark-duplicate`) and a timestamp. Re-running triage against the same cache short-circuits items that already have a terminal entry, so deferred / Needs-AC items resurface and rejected ones do not.
123
+ - **Accepted backlog** — `xbrief/proposed/` is the standard scope-xBRIEF lifecycle folder. **Writes flow only through `task triage:accept`**, which delegates the actual xBRIEF authoring to `task issue:ingest` so slug, reference, and schema rules stay in one place. Hand-authored proposed/ xBRIEFs are still allowed; what changed is that triage no longer writes there silently.
124
124
 
125
125
  ### Step 4 — Why this avoids the GraphQL drain
126
126
 
127
- The shared GitHub GraphQL bucket (5000 points/hour per identity) is the operational bottleneck under multi-agent / shared-identity workflows, not the REST `core` bucket. The triage cache is **REST-backed** (`gh api` reads, not `gh issue view --json`), and the populate uses **batched delays** plus automatic 429 retries with the upstream `Retry-After` header. There is no live `gh issue view` per accept / reject / defer decision — every decision reads from the local cache. This is why the scoped flags exist: they let you keep the populate inside the REST budget and well clear of the GraphQL bottleneck (see [#976](https://github.com/deftai/directive/issues/976) for the recurrence pattern). Refresh the cache on demand with `task cache:fetch-all` (idempotent — fresh entries are skipped) or audit drift against `vbrief/active/*.vbrief.json` with `task triage:refresh-active`.
127
+ The shared GitHub GraphQL bucket (5000 points/hour per identity) is the operational bottleneck under multi-agent / shared-identity workflows, not the REST `core` bucket. The triage cache is **REST-backed** (`gh api` reads, not `gh issue view --json`), and the populate uses **batched delays** plus automatic 429 retries with the upstream `Retry-After` header. There is no live `gh issue view` per accept / reject / defer decision — every decision reads from the local cache. This is why the scoped flags exist: they let you keep the populate inside the REST budget and well clear of the GraphQL bottleneck (see [#976](https://github.com/deftai/directive/issues/976) for the recurrence pattern). Refresh the cache on demand with `task cache:fetch-all` (idempotent — fresh entries are skipped) or audit drift against `xbrief/active/*.xbrief.json` with `task triage:refresh-active`.
128
128
 
129
129
  Full command reference for every triage and cache verb lives in [`commands.md` § Backlog triage & cache tasks](../commands.md#backlog-triage--cache-tasks); the canonical agent-facing description of the workflow lives in `skills/deft-directive-refinement/SKILL.md` Phase 0.
130
130
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deftai/directive-content",
3
- "version": "0.64.0",
3
+ "version": "0.66.0",
4
4
  "description": "Shippable Directive framework content in the consumer .deft/core/ layout (C1 flatten), plus the engine surfaces (.githooks/, Taskfile.yml, tasks/) the deposit wires. Python-free per #2022 Phase 3. Refs #11, #1669, #1967.",
5
5
  "type": "module",
6
6
  "files": [