@deftai/directive-content 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/.agents/skills/deft/SKILL.md +6 -0
  2. package/.agents/skills/deft-directive-article-review/SKILL.md +11 -0
  3. package/.agents/skills/deft-directive-build/SKILL.md +10 -0
  4. package/.agents/skills/deft-directive-cost/SKILL.md +12 -0
  5. package/.agents/skills/deft-directive-debug/SKILL.md +13 -0
  6. package/.agents/skills/deft-directive-gh-arch/SKILL.md +11 -0
  7. package/.agents/skills/deft-directive-gh-slice/SKILL.md +10 -0
  8. package/.agents/skills/deft-directive-glossary/SKILL.md +10 -0
  9. package/.agents/skills/deft-directive-interview/SKILL.md +9 -0
  10. package/.agents/skills/deft-directive-pre-pr/SKILL.md +9 -0
  11. package/.agents/skills/deft-directive-refinement/SKILL.md +10 -0
  12. package/.agents/skills/deft-directive-release/SKILL.md +12 -0
  13. package/.agents/skills/deft-directive-review-cycle/SKILL.md +10 -0
  14. package/.agents/skills/deft-directive-setup/SKILL.md +10 -0
  15. package/.agents/skills/deft-directive-swarm/SKILL.md +10 -0
  16. package/.agents/skills/deft-directive-sync/SKILL.md +9 -0
  17. package/.agents/skills/deft-directive-triage/SKILL.md +9 -0
  18. package/.agents/skills/deft-directive-write-skill/SKILL.md +9 -0
  19. package/LICENSE.md +22 -0
  20. package/QUICK-START.md +167 -0
  21. package/UPGRADING.md +517 -0
  22. package/coding/build-output.md +28 -0
  23. package/coding/coding.md +235 -0
  24. package/coding/debugging.md +110 -0
  25. package/coding/holzmann.md +96 -0
  26. package/coding/hygiene.md +127 -0
  27. package/coding/security.md +158 -0
  28. package/coding/testing.md +162 -0
  29. package/coding/toolchain.md +44 -0
  30. package/commands.md +300 -0
  31. package/context/context.md +57 -0
  32. package/context/deterministic-split.md +67 -0
  33. package/context/examples.md +26 -0
  34. package/context/fractal-summaries.md +69 -0
  35. package/context/long-horizon.md +46 -0
  36. package/context/spec-deltas.md +177 -0
  37. package/context/tool-design.md +34 -0
  38. package/context/working-memory.md +62 -0
  39. package/contracts/boundary-maps.md +65 -0
  40. package/contracts/deterministic-questions.md +59 -0
  41. package/contracts/hierarchy.md +77 -0
  42. package/conventions/content-manifest.json +399 -0
  43. package/conventions/machine-generated-banner.md +130 -0
  44. package/conventions/references.md +120 -0
  45. package/conventions/rule-ownership.json +382 -0
  46. package/conventions/task-caching.md +43 -0
  47. package/conventions/vbrief-filenames.md +70 -0
  48. package/deployments/README.md +37 -0
  49. package/deployments/agentuity/README.md +138 -0
  50. package/deployments/agentuity/via-cli.md +380 -0
  51. package/deployments/agentuity/via-cloud.md +425 -0
  52. package/deployments/agentuity/via-github-actions.md +664 -0
  53. package/deployments/agentuity/via-gravity-network.md +606 -0
  54. package/deployments/agentuity/via-vpc.md +607 -0
  55. package/deployments/aws/README.md +38 -0
  56. package/deployments/aws/via-app-runner.md +612 -0
  57. package/deployments/aws/via-ecs-fargate.md +561 -0
  58. package/deployments/aws/via-elastic-beanstalk.md +628 -0
  59. package/deployments/aws/via-lambda.md +649 -0
  60. package/deployments/azure/README.md +37 -0
  61. package/deployments/azure/via-aks.md +390 -0
  62. package/deployments/azure/via-app-service.md +564 -0
  63. package/deployments/azure/via-container-apps.md +599 -0
  64. package/deployments/azure/via-functions.md +552 -0
  65. package/deployments/cloud-gov/README.md +63 -0
  66. package/deployments/cloud-gov/agents/compliance-docs.md +154 -0
  67. package/deployments/cloud-gov/agents.md +39 -0
  68. package/deployments/cloud-gov/cicd.md +64 -0
  69. package/deployments/cloud-gov/deployment.md +150 -0
  70. package/deployments/cloud-gov/logging.md +43 -0
  71. package/deployments/cloud-gov/manifest.md +121 -0
  72. package/deployments/cloud-gov/overview.md +58 -0
  73. package/deployments/cloud-gov/security.md +46 -0
  74. package/deployments/cloud-gov/services.md +72 -0
  75. package/deployments/cloud-gov/upstream/README.md +18 -0
  76. package/deployments/cloudflare/README.md +33 -0
  77. package/deployments/cloudflare/via-dashboard.md +83 -0
  78. package/deployments/cloudflare/via-git.md +90 -0
  79. package/deployments/cloudflare/via-github-actions.md +185 -0
  80. package/deployments/cloudflare/via-terraform.md +157 -0
  81. package/deployments/cloudflare/via-wrangler.md +165 -0
  82. package/deployments/fly-io/README.md +37 -0
  83. package/deployments/fly-io/via-dockerfile.md +648 -0
  84. package/deployments/fly-io/via-flyctl.md +653 -0
  85. package/deployments/fly-io/via-github-actions.md +695 -0
  86. package/deployments/fly-io/via-multi-region.md +598 -0
  87. package/deployments/google/README.md +34 -0
  88. package/deployments/google/via-app-engine.md +42 -0
  89. package/deployments/google/via-cloud-functions.md +23 -0
  90. package/deployments/google/via-cloud-run.md +330 -0
  91. package/deployments/google/via-gke.md +23 -0
  92. package/deployments/netlify/README.md +99 -0
  93. package/deployments/netlify/via-cli.md +17 -0
  94. package/deployments/netlify/via-functions.md +19 -0
  95. package/deployments/netlify/via-git.md +25 -0
  96. package/deployments/vercel/README.md +90 -0
  97. package/deployments/vercel/via-api.md +16 -0
  98. package/deployments/vercel/via-cli.md +17 -0
  99. package/deployments/vercel/via-git.md +24 -0
  100. package/docs/BROWNFIELD.md +179 -0
  101. package/docs/getting-started.md +137 -0
  102. package/docs/good-agents-md.md +137 -0
  103. package/events/README.md +89 -0
  104. package/events/event-record.schema.json +26 -0
  105. package/events/registry.json +166 -0
  106. package/events/registry.schema.json +71 -0
  107. package/glossary.md +145 -0
  108. package/incidents/README.md +81 -0
  109. package/incidents/_template.md +38 -0
  110. package/interfaces/cli.md +104 -0
  111. package/interfaces/rest.md +212 -0
  112. package/interfaces/tui.md +242 -0
  113. package/interfaces/web.md +123 -0
  114. package/languages/6502-DASM.md +132 -0
  115. package/languages/c.md +235 -0
  116. package/languages/commands.md +23 -0
  117. package/languages/cpp.md +132 -0
  118. package/languages/csharp.md +259 -0
  119. package/languages/dart.md +183 -0
  120. package/languages/delphi.md +218 -0
  121. package/languages/elixir.md +208 -0
  122. package/languages/go.md +78 -0
  123. package/languages/java.md +278 -0
  124. package/languages/javascript.md +163 -0
  125. package/languages/julia.md +175 -0
  126. package/languages/kotlin.md +193 -0
  127. package/languages/markdown.md +168 -0
  128. package/languages/mermaid.md +146 -0
  129. package/languages/officejs.md +392 -0
  130. package/languages/python.md +209 -0
  131. package/languages/r.md +163 -0
  132. package/languages/rust.md +216 -0
  133. package/languages/sql.md +216 -0
  134. package/languages/swift.md +153 -0
  135. package/languages/typescript.md +132 -0
  136. package/languages/vba.md +279 -0
  137. package/languages/vhdl.md +180 -0
  138. package/languages/visual-basic.md +151 -0
  139. package/languages/zig.md +196 -0
  140. package/meta/SOUL.md +27 -0
  141. package/meta/code-field.md +44 -0
  142. package/meta/morals.md +40 -0
  143. package/meta/philosophy.md +39 -0
  144. package/meta/project.md +49 -0
  145. package/meta/ralph.md +223 -0
  146. package/meta/security.md +80 -0
  147. package/meta/versioning.md +326 -0
  148. package/package.json +22 -0
  149. package/packs/lessons/lessons-pack-0.1.json +553 -0
  150. package/packs/patterns/patterns-pack-0.1.json +57 -0
  151. package/packs/rules/rules-pack-0.1.json +4767 -0
  152. package/packs/skills/skills-pack-0.1.json +262 -0
  153. package/packs/strategies/strategies-pack-0.1.json +167 -0
  154. package/packs/swarm-spec/swarm-spec-pack-0.1.json +17 -0
  155. package/patterns/executor-layer-credentials.md +227 -0
  156. package/patterns/llm-app.md +156 -0
  157. package/patterns/multi-agent.md +278 -0
  158. package/patterns/prompt-assembly-layer-ordering.md +154 -0
  159. package/patterns/role-as-overlay.md +179 -0
  160. package/platforms/2600.md +137 -0
  161. package/platforms/unity.md +329 -0
  162. package/references/composer-skill-porting.md +152 -0
  163. package/references/cost-models.md +163 -0
  164. package/references/ip-risk.md +246 -0
  165. package/references/plain-english-ux.md +275 -0
  166. package/resilience/context-pruning.md +67 -0
  167. package/resilience/continue-here.md +62 -0
  168. package/scm/changelog.md +276 -0
  169. package/scm/git.md +139 -0
  170. package/scm/github.md +265 -0
  171. package/secrets/.gitkeep +0 -0
  172. package/skills/deft-build/SKILL.md +20 -0
  173. package/skills/deft-directive-article-review/SKILL.md +156 -0
  174. package/skills/deft-directive-build/SKILL.md +302 -0
  175. package/skills/deft-directive-cost/SKILL.md +201 -0
  176. package/skills/deft-directive-debug/SKILL.md +140 -0
  177. package/skills/deft-directive-decompose/SKILL.md +96 -0
  178. package/skills/deft-directive-gh-arch/SKILL.md +160 -0
  179. package/skills/deft-directive-gh-slice/SKILL.md +199 -0
  180. package/skills/deft-directive-glossary/SKILL.md +118 -0
  181. package/skills/deft-directive-interview/SKILL.md +528 -0
  182. package/skills/deft-directive-pre-pr/SKILL.md +131 -0
  183. package/skills/deft-directive-probe/SKILL.md +127 -0
  184. package/skills/deft-directive-refinement/SKILL.md +403 -0
  185. package/skills/deft-directive-release/SKILL.md +266 -0
  186. package/skills/deft-directive-review-cycle/SKILL.md +401 -0
  187. package/skills/deft-directive-setup/SKILL.md +717 -0
  188. package/skills/deft-directive-swarm/SKILL.md +989 -0
  189. package/skills/deft-directive-sync/SKILL.md +288 -0
  190. package/skills/deft-directive-triage/SKILL.md +137 -0
  191. package/skills/deft-directive-write-skill/SKILL.md +169 -0
  192. package/skills/deft-interview/SKILL.md +16 -0
  193. package/skills/deft-pre-pr/SKILL.md +16 -0
  194. package/skills/deft-review-cycle/SKILL.md +16 -0
  195. package/skills/deft-roadmap-refresh/SKILL.md +16 -0
  196. package/skills/deft-setup/SKILL.md +20 -0
  197. package/skills/deft-swarm/SKILL.md +16 -0
  198. package/skills/deft-sync/SKILL.md +16 -0
  199. package/strategies/README.md +83 -0
  200. package/strategies/artifact-guards.md +85 -0
  201. package/strategies/bdd.md +115 -0
  202. package/strategies/brownfield.md +7 -0
  203. package/strategies/discuss.md +129 -0
  204. package/strategies/emit-hints.md +69 -0
  205. package/strategies/enterprise.md +193 -0
  206. package/strategies/interview.md +551 -0
  207. package/strategies/map.md +179 -0
  208. package/strategies/probe.md +151 -0
  209. package/strategies/rapid.md +155 -0
  210. package/strategies/research.md +155 -0
  211. package/strategies/roadmap.md +9 -0
  212. package/strategies/speckit.md +437 -0
  213. package/strategies/v0-20-contract.md +134 -0
  214. package/strategies/yolo.md +169 -0
  215. package/swarm/swarm.md +300 -0
  216. package/templates/COST-ESTIMATE.md +114 -0
  217. package/templates/PULL_REQUEST_TEMPLATE.md +35 -0
  218. package/templates/agent-prompt-preamble.md +409 -0
  219. package/templates/agents-entry.md +211 -0
  220. package/templates/agents-entry.placeholders.md +75 -0
  221. package/templates/embed.go +20 -0
  222. package/templates/embed_test.go +36 -0
  223. package/templates/make-spec-example.md +9 -0
  224. package/templates/make-spec.md +246 -0
  225. package/templates/project.md.template +52 -0
  226. package/templates/specification.md +1 -0
  227. package/templates/swarm-greptile-poller-prompt.md +556 -0
  228. package/templates/user.md.template +31 -0
  229. package/tools/RWLDL.md +80 -0
  230. package/tools/greptile.md +141 -0
  231. package/tools/installer.md +23 -0
  232. package/tools/taskfile-migration.md +32 -0
  233. package/tools/taskfile.md +185 -0
  234. package/tools/telemetry.md +285 -0
  235. package/vbrief/schemas/cache-meta.schema.json +137 -0
  236. package/vbrief/schemas/candidates.schema.json +130 -0
  237. package/vbrief/schemas/codebase-map.schema.json +213 -0
  238. package/vbrief/schemas/lessons-pack.schema.json +134 -0
  239. package/vbrief/schemas/patterns-pack.schema.json +84 -0
  240. package/vbrief/schemas/rules-pack.schema.json +105 -0
  241. package/vbrief/schemas/skills-pack.schema.json +94 -0
  242. package/vbrief/schemas/slices.schema.json +87 -0
  243. package/vbrief/schemas/strategies-pack.schema.json +89 -0
  244. package/vbrief/schemas/swarm-spec-pack.schema.json +84 -0
  245. package/vbrief/schemas/vbrief-core.schema.json +1022 -0
  246. package/vbrief/vbrief.md +684 -0
  247. package/verification/integration.md +76 -0
  248. package/verification/plan-checking.md +85 -0
  249. package/verification/uat.md +60 -0
  250. package/verification/verification.md +117 -0
@@ -0,0 +1,399 @@
1
+ {
2
+ "version": 2,
3
+ "description": "Content Manifest (#1821 / #1875): structural source of truth classifying repository entries into one of four buckets and enforcing the post-move LOCATION INVARIANT. Since #1875 every shippable `content` entry physically lives under the `content/` root (which the C1 flatten deposits to `.deft/core/<x>`), with the three named harness-entry files (AGENTS.md / main.md / SKILL.md) the only content-classified exceptions that remain at the repo root (`harnessEntry: true`). The deterministic gate `task verify:content-manifest` (packages/core/src/verify-source/content-manifest.ts, exposed via `deft-ts verify-content-manifest`) fails CI when a `content` entry is not under `content/`, when a non-`content` entry lives under `content/`, when a git-tracked `content/` child has no manifest entry (or a manifest content child is stale), when a bucket value is invalid, or when a path is listed twice. Refs #1821 (manifest v1 + gate), #1669 (epic / Wave-1 LockedDecisions D2/C1/C2/C3/C4), #1875 (content/ move).",
4
+ "buckets": [
5
+ {
6
+ "id": "content",
7
+ "label": "Content",
8
+ "description": "Framework knowledge/guidance/assets that a consumer consumes. Since #1875 these live under the `content/` root and deposit (C1 flatten) into the consumer's `.deft/core/`: standards docs, skills, templates, packs, conventions prose, core/framework docs, and deposited scaffolds. The three named harness-entry files (AGENTS.md / main.md / SKILL.md) are content-classified but root-resident (`harnessEntry: true`)."
9
+ },
10
+ {
11
+ "id": "engine",
12
+ "label": "Engine",
13
+ "description": "Executable framework runtime -- the code that enforces and runs deft. In the #1669 model this ships as the CLI package (npm/pip), not as editable deposited content: the TS packages, the Go installer, the Python scripts, the Taskfile + task fragments, the `run` CLI launchers, and the deposited git hooks."
14
+ },
15
+ {
16
+ "id": "harness",
17
+ "label": "Harness",
18
+ "description": "Build / test / language toolchain configuration required to build and test the engine inside THIS repo. Not shipped as-is; needed to produce the engine + content artifacts: package/lockfiles, compiler/linter/test config, and the framework's own test suite."
19
+ },
20
+ {
21
+ "id": "repo-dev",
22
+ "label": "Repo-dev",
23
+ "description": "Maintainer-only / repository artifacts that are neither shippable content nor engine runtime: CI config, git plumbing, planning docs, history/incident records, the maintainer's own vBRIEF lifecycle, framework spec fixtures, and the deft project's own product/release docs."
24
+ }
25
+ ],
26
+ "straddlePolicy": "C3 straddle policy (#1669 Wave-1 LockedDecisions): straddles are now PHYSICALLY RESOLVED by the #1875 content/ move -- the directories that previously straddled (vbrief/, meta/, incidents/, docs/, core/) were split so the shippable half lives under content/ and the maintainer-only half stays at the repo root. The remaining `straddle: true` markers (LICENSE.md, content/conventions) flag entries whose directory still carries a minority of differently-purposed files that travel together by necessity (e.g. content/conventions co-locates engine-consumed gate JSON with conventions prose). The gate enforces the location invariant over content/ children; it does not descend further into directories.",
27
+ "entries": [
28
+ {
29
+ "path": "content/.agents",
30
+ "bucket": "content",
31
+ "note": "Dogfood deposit of the deft skills (.agents/skills/) the deft repo's own agents load; consumer .agents/ is generated by the installer from embedded pointers, not copied from here."
32
+ },
33
+ {
34
+ "path": "content/LICENSE.md",
35
+ "bucket": "content",
36
+ "note": "Travels with the deposited payload; the engine CLI package also bundles its own copy at publish time.",
37
+ "straddle": true
38
+ },
39
+ {
40
+ "path": "content/QUICK-START.md",
41
+ "bucket": "content",
42
+ "note": "Consumer-facing onboarding doc; the AGENTS.md managed-section points consumers at .deft/core/QUICK-START.md for idempotent refresh."
43
+ },
44
+ {
45
+ "path": "content/UPGRADING.md",
46
+ "bucket": "content",
47
+ "note": "Consumer-facing upgrade guide cited by the doctor and install surfaces."
48
+ },
49
+ {
50
+ "path": "content/coding",
51
+ "bucket": "content",
52
+ "note": "Coding standards docs (coding.md, hygiene.md, testing.md, build-output.md, toolchain.md)."
53
+ },
54
+ {
55
+ "path": "content/commands.md",
56
+ "bucket": "content",
57
+ "note": "Framework commands reference doc."
58
+ },
59
+ {
60
+ "path": "content/context",
61
+ "bucket": "content",
62
+ "note": "Context-engineering standards docs."
63
+ },
64
+ {
65
+ "path": "content/contracts",
66
+ "bucket": "content",
67
+ "note": "Framework contract docs (boundary-maps, deterministic-questions, hierarchy)."
68
+ },
69
+ {
70
+ "path": "content/conventions",
71
+ "bucket": "content",
72
+ "note": "Conventions prose docs ship as content; co-located structured data files (rule-ownership.json, content-manifest.json) are engine-consumed gate inputs that travel with the same directory.",
73
+ "straddle": true
74
+ },
75
+ {
76
+ "path": "content/deployments",
77
+ "bucket": "content",
78
+ "note": "Per-platform deployment guidance docs (aws, azure, gcp, fly-io, cloudflare, ...)."
79
+ },
80
+ {
81
+ "path": "content/docs",
82
+ "bucket": "content",
83
+ "note": "Consumer-facing concept/guide docs promoted from the maintainer docs/ tree (BROWNFIELD.md, getting-started.md, good-agents-md.md) per #1669 Wave-1 C3."
84
+ },
85
+ {
86
+ "path": "content/events",
87
+ "bucket": "content",
88
+ "note": "Event-driven framework docs and JSON schemas (event-record.schema.json, registry.schema.json)."
89
+ },
90
+ {
91
+ "path": "content/glossary.md",
92
+ "bucket": "content",
93
+ "note": "Canonical framework glossary -- the former core/glossary.md merged with the unique vBRIEF-lifecycle terms from the former top-level glossary.md (#1875 dedup)."
94
+ },
95
+ {
96
+ "path": "content/incidents",
97
+ "bucket": "content",
98
+ "note": "Incident postmortem convention scaffold (_template.md + README.md); specific incident records stay at the maintainer-only root incidents/."
99
+ },
100
+ {
101
+ "path": "content/interfaces",
102
+ "bucket": "content",
103
+ "note": "Interface-design standards docs (cli, rest, tui, web)."
104
+ },
105
+ {
106
+ "path": "content/languages",
107
+ "bucket": "content",
108
+ "note": "Per-language standards docs (python, go, typescript, rust, ...)."
109
+ },
110
+ {
111
+ "path": "content/meta",
112
+ "bucket": "content",
113
+ "note": "Meta docs that ship: SOUL.md / code-field.md / morals.md / philosophy.md / security.md plus the former core/ docs (project.md, ralph.md, versioning.md). Repo-dev meta (ideas/suggestions/lessons/policy-changes.log) stays at root meta/."
114
+ },
115
+ {
116
+ "path": "content/packs",
117
+ "bucket": "content",
118
+ "note": "Versioned content packs (lessons, etc.) loaded via the packs:slice surface."
119
+ },
120
+ {
121
+ "path": "content/patterns",
122
+ "bucket": "content",
123
+ "note": "Pattern docs (goal-gate-determinism, build-model-ahead, generator-verifier-loop, ...)."
124
+ },
125
+ {
126
+ "path": "content/platforms",
127
+ "bucket": "content",
128
+ "note": "Platform-specific guidance docs (unity, 2600, ...)."
129
+ },
130
+ {
131
+ "path": "content/references",
132
+ "bucket": "content",
133
+ "note": "Reference docs (cost-models, ip-risk, plain-english-ux, ...)."
134
+ },
135
+ {
136
+ "path": "content/resilience",
137
+ "bucket": "content",
138
+ "note": "Resilience/session-continuity standards docs (continue-here.md, ...)."
139
+ },
140
+ {
141
+ "path": "content/scm",
142
+ "bucket": "content",
143
+ "note": "Source-control standards docs (git.md, github.md)."
144
+ },
145
+ {
146
+ "path": "content/secrets",
147
+ "bucket": "content",
148
+ "note": "Deposited secrets-handling scaffold directory (.gitkeep placeholder)."
149
+ },
150
+ {
151
+ "path": "content/skills",
152
+ "bucket": "content",
153
+ "note": "The deft skill library (deft-directive-*); the primary shipped guidance surface."
154
+ },
155
+ {
156
+ "path": "content/strategies",
157
+ "bucket": "content",
158
+ "note": "Strategy docs (delegate, interview, ...)."
159
+ },
160
+ {
161
+ "path": "content/swarm",
162
+ "bucket": "content",
163
+ "note": "Swarm orchestration standards docs (the swarm runtime lives in packages/ + tasks/swarm.yml)."
164
+ },
165
+ {
166
+ "path": "content/templates",
167
+ "bucket": "content",
168
+ "note": "Framework templates (agents-entry.md, agent-prompt-preamble.md, ...)."
169
+ },
170
+ {
171
+ "path": "content/tools",
172
+ "bucket": "content",
173
+ "note": "Tooling standards docs (taskfile.md, ...)."
174
+ },
175
+ {
176
+ "path": "content/vbrief",
177
+ "bucket": "content",
178
+ "note": "Shipped vBRIEF surface: schemas/, vbrief.md. The lifecycle folders + PROJECT-DEFINITION live at the maintainer-only root vbrief/. The framework's own migration RESULT artifacts (LEGACY-REPORT.md / RECONCILIATION.md / safety-manifest.json) are repo-dev and live at root vbrief/migration/ -- they are this repo's migration output, not a consumer convention, so they are not shipped (refines C3: migration/ held only framework-result records, not migration conventions)."
179
+ },
180
+ {
181
+ "path": "content/verification",
182
+ "bucket": "content",
183
+ "note": "Verification standards docs (stub detection, legacy-code detection)."
184
+ },
185
+ {
186
+ "path": "AGENTS.md",
187
+ "bucket": "content",
188
+ "harnessEntry": true,
189
+ "note": "Installer-managed framework guidance entry; the managed-section is rendered from content/templates/agents-entry.md and deposited to consumers. Harness-entry: stays at the repo root, not under content/ (#1669 D2)."
190
+ },
191
+ {
192
+ "path": "main.md",
193
+ "bucket": "content",
194
+ "harnessEntry": true,
195
+ "note": "The full framework guidelines -- the canonical entry doc consumers read. Harness-entry: stays at the repo root, not under content/ (#1669 D2)."
196
+ },
197
+ {
198
+ "path": "SKILL.md",
199
+ "bucket": "content",
200
+ "harnessEntry": true,
201
+ "note": "Top-level deft skill entry (the `deft` skill); part of the shipped skills surface. Harness-entry: stays at the repo root, not under content/ (#1669 D2)."
202
+ },
203
+ {
204
+ "path": ".githooks",
205
+ "bucket": "engine",
206
+ "note": "Deposited pre-commit/pre-push hooks (#1463) that invoke the gate scripts -- executable enforcement installed by `task setup` / the installer."
207
+ },
208
+ {
209
+ "path": "cmd",
210
+ "bucket": "engine",
211
+ "note": "Go installer (cmd/deft-install) -- the canonical bootstrap/upgrade binary."
212
+ },
213
+ {
214
+ "path": "packages",
215
+ "bucket": "engine",
216
+ "note": "TypeScript engine monorepo (@deftai/cli, @deftai/core, @deftai/types) -- the gate + lifecycle runtime."
217
+ },
218
+ {
219
+ "path": "run",
220
+ "bucket": "engine",
221
+ "note": "POSIX `run` CLI launcher shim."
222
+ },
223
+ {
224
+ "path": "run.bat",
225
+ "bucket": "engine",
226
+ "note": "Windows `run` CLI launcher shim."
227
+ },
228
+ {
229
+ "path": "run.py",
230
+ "bucket": "engine",
231
+ "note": "Python `run` CLI entrypoint dispatched by the run shims."
232
+ },
233
+ {
234
+ "path": "scripts",
235
+ "bucket": "engine",
236
+ "note": "Python engine scripts (gate oracles, lifecycle, triage, release) invoked by the Taskfile and TS dispatcher."
237
+ },
238
+ {
239
+ "path": "tasks",
240
+ "bucket": "engine",
241
+ "note": "Taskfile fragments (verify, scope, triage, pr, ...) that orchestrate the engine verbs."
242
+ },
243
+ {
244
+ "path": "Taskfile.yml",
245
+ "bucket": "engine",
246
+ "note": "Root task runner manifest that orchestrates the engine gates and lifecycle verbs."
247
+ },
248
+ {
249
+ "path": ".nvmrc",
250
+ "bucket": "harness",
251
+ "note": "Node version pin used to build the TS engine."
252
+ },
253
+ {
254
+ "path": "biome.json",
255
+ "bucket": "harness",
256
+ "note": "Biome formatter/linter config for the TS engine."
257
+ },
258
+ {
259
+ "path": "go.mod",
260
+ "bucket": "harness",
261
+ "note": "Go module definition for the installer build."
262
+ },
263
+ {
264
+ "path": "package.json",
265
+ "bucket": "harness",
266
+ "note": "Root pnpm workspace manifest for the TS engine build/test."
267
+ },
268
+ {
269
+ "path": "pnpm-lock.yaml",
270
+ "bucket": "harness",
271
+ "note": "pnpm dependency lockfile for the TS engine."
272
+ },
273
+ {
274
+ "path": "pnpm-workspace.yaml",
275
+ "bucket": "harness",
276
+ "note": "pnpm workspace package globs for the TS engine."
277
+ },
278
+ {
279
+ "path": "pyproject.toml",
280
+ "bucket": "harness",
281
+ "note": "Python project + pytest/ruff/mypy config for the Python engine scripts and their tests."
282
+ },
283
+ {
284
+ "path": "tests",
285
+ "bucket": "harness",
286
+ "note": "The framework's own test suite (Python); pruned from the consumer deposit (#1474)."
287
+ },
288
+ {
289
+ "path": "tsconfig.base.json",
290
+ "bucket": "harness",
291
+ "note": "Shared TypeScript compiler base config."
292
+ },
293
+ {
294
+ "path": "tsconfig.json",
295
+ "bucket": "harness",
296
+ "note": "Root TypeScript project references config."
297
+ },
298
+ {
299
+ "path": "uv.lock",
300
+ "bucket": "harness",
301
+ "note": "uv dependency lockfile for the Python engine scripts."
302
+ },
303
+ {
304
+ "path": "vitest.config.ts",
305
+ "bucket": "harness",
306
+ "note": "Vitest config for the TS engine test suite."
307
+ },
308
+ {
309
+ "path": ".gitattributes",
310
+ "bucket": "repo-dev",
311
+ "note": "Git attributes (linguist/vendored markers, EOL); repository plumbing."
312
+ },
313
+ {
314
+ "path": ".github",
315
+ "bucket": "repo-dev",
316
+ "note": "GitHub Actions workflows, issue/PR templates, CODEOWNERS; maintainer CI only."
317
+ },
318
+ {
319
+ "path": ".gitignore",
320
+ "bucket": "repo-dev",
321
+ "note": "Git ignore rules; repository plumbing."
322
+ },
323
+ {
324
+ "path": ".planning",
325
+ "bucket": "repo-dev",
326
+ "note": "Maintainer planning artifacts (e.g. generated codebase MAP projection); never ships."
327
+ },
328
+ {
329
+ "path": "CHANGELOG.md",
330
+ "bucket": "repo-dev",
331
+ "note": "Maintainer changelog; promoted into GitHub release bodies at release time."
332
+ },
333
+ {
334
+ "path": "CONTRIBUTING.md",
335
+ "bucket": "repo-dev",
336
+ "note": "Maintainer contributor guide for the deft repo itself."
337
+ },
338
+ {
339
+ "path": "PRD.md",
340
+ "bucket": "repo-dev",
341
+ "note": "The deft project's own product requirements doc; not consumer framework content."
342
+ },
343
+ {
344
+ "path": "PROJECT.md",
345
+ "bucket": "repo-dev",
346
+ "note": "The deft project's own project doc (deprecation redirect / generated export); not consumer content."
347
+ },
348
+ {
349
+ "path": "README.md",
350
+ "bucket": "repo-dev",
351
+ "note": "GitHub-facing repository readme for the deft project."
352
+ },
353
+ {
354
+ "path": "REFERENCES.md",
355
+ "bucket": "repo-dev",
356
+ "note": "Repo-level references index for maintainers (harness-entry-adjacent; stays at root)."
357
+ },
358
+ {
359
+ "path": "ROADMAP.md",
360
+ "bucket": "repo-dev",
361
+ "note": "The deft project's own roadmap; updated at release time."
362
+ },
363
+ {
364
+ "path": "SPECIFICATION.md",
365
+ "bucket": "repo-dev",
366
+ "note": "The deft project's own generated specification export / deprecation redirect; not consumer content."
367
+ },
368
+ {
369
+ "path": "docs",
370
+ "bucket": "repo-dev",
371
+ "note": "Predominantly maintainer/repo docs (FILES.md, RELEASING.md, analysis/, audits, incident smoke records); the consumer-facing concept guides were promoted to content/docs/ (#1875 C3)."
372
+ },
373
+ {
374
+ "path": "history",
375
+ "bucket": "repo-dev",
376
+ "note": "Archived task/vBRIEF state preserved byte-for-byte as a forensic record; never ships."
377
+ },
378
+ {
379
+ "path": "incidents",
380
+ "bucket": "repo-dev",
381
+ "note": "The deft project's own incident postmortem records; the _template.md + README convention were promoted to content/incidents/ (#1875 C3)."
382
+ },
383
+ {
384
+ "path": "meta",
385
+ "bucket": "repo-dev",
386
+ "note": "Repo-dev meta: ideas.md, suggestions.md, lessons.md (pack projection target), policy-changes.log. The shippable meta docs were promoted to content/meta/ (#1875 C3)."
387
+ },
388
+ {
389
+ "path": "specs",
390
+ "bucket": "repo-dev",
391
+ "note": "The deft project's own framework spec fixtures/examples (strategy-chaining, testbed); repo-dev per #1669 Wave-1 C3 (not shipped)."
392
+ },
393
+ {
394
+ "path": "vbrief",
395
+ "bucket": "repo-dev",
396
+ "note": "The maintainer's own vBRIEF scope lifecycle (proposed/pending/active/completed/cancelled + PROJECT-DEFINITION) plus the framework's own migration RESULT artifacts at vbrief/migration/ (LEGACY-REPORT.md / RECONCILIATION.md / safety-manifest.json). The shippable vBRIEF surface (schemas/, vbrief.md) was promoted to content/vbrief/ (#1875 C3); the migration result records stay repo-dev (this repo's own migration output, not a consumer convention)."
397
+ }
398
+ ]
399
+ }
@@ -0,0 +1,130 @@
1
+ # Machine-Generated File Banner (Canonical Contract)
2
+
3
+ Canonical banner template emitted by every deft writer that produces a
4
+ machine-managed markdown file. Defined to eliminate the four-convention
5
+ drift surfaced in #572 (spec:render emitted none; migrator heuristic
6
+ searched for strings no writer actually produced).
7
+
8
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
9
+
10
+ ## Why
11
+
12
+ Before this contract, deft had four machine-managed file writers
13
+ (`task migrate:vbrief` deprecation redirects, `task spec:render`,
14
+ `task prd:render`, `task roadmap:render`) and each used a different
15
+ (or no) banner convention. Downstream heuristics that distinguish
16
+ "is this file user-customized" from "is this machine-managed" were
17
+ decoupled from what the writers actually emitted -- a correctness
18
+ risk, not a polish one.
19
+
20
+ ## The canonical 4-line banner
21
+
22
+ ! Every machine-managed markdown file MUST begin with exactly these
23
+ four HTML-comment lines, in this order, as the very first four lines
24
+ of the file:
25
+
26
+ ```
27
+ <!-- AUTO-GENERATED by {generator} -- DO NOT EDIT MANUALLY -->
28
+ <!-- Purpose: {purpose} -->
29
+ <!-- Source of truth: {source} -->
30
+ <!-- Regenerate with: {command} -->
31
+ ```
32
+
33
+ - `{generator}` — the human-readable writer name (e.g. `task spec:render`).
34
+ - `{purpose}` — one of the enumerated per-writer purposes below; fixed
35
+ string values so downstream detectors can match on a stable token.
36
+ - `{source}` — the source-of-truth path the writer consumed
37
+ (typically `vbrief/specification.vbrief.json`), or `n/a` when the
38
+ writer has no single source-of-truth file (e.g. the migrator
39
+ deprecation redirect, which is driven by the migration flow).
40
+ - `{command}` — the canonical `task *` invocation that regenerates
41
+ the file; operators copy-paste from this line.
42
+
43
+ ! All four lines MUST be populated (no empty `{...}` placeholders).
44
+ ! The banner MUST be the first four lines of the file -- nothing
45
+ (not even blank lines) precedes it.
46
+
47
+ ## Per-writer purpose registry
48
+
49
+ The `Purpose:` value is a small fixed enum so detectors can match on a
50
+ stable token. Writers MUST use exactly one of these values:
51
+
52
+ - `rendered specification` -- `scripts/spec_render.py` -> `SPECIFICATION.md`
53
+ - `rendered PRD` -- `scripts/prd_render.py` -> `PRD.md`
54
+ - `rendered roadmap` -- `scripts/roadmap_render.py` -> `ROADMAP.md`
55
+ - `deprecation redirect` -- `scripts/migrate_vbrief.py::_deprecation_redirect()`
56
+ -> replaced `SPECIFICATION.md` / `PROJECT.md`
57
+
58
+ ? Future render tasks added under `tasks/` MUST extend this list before
59
+ shipping; a new writer without a registered `Purpose:` value is a
60
+ contract violation.
61
+
62
+ ## Detection heuristic (for user-customization guards)
63
+
64
+ ! `scripts/migrate_vbrief.py::_is_user_customized()` consults the
65
+ `_SPEC_AUTO_MARKERS` and `_PROJECT_AUTO_MARKERS` tuples. Both MUST
66
+ include `"AUTO-GENERATED by"` and the FULL HTML-comment prefix
67
+ `"<!-- Purpose:"` so any file carrying this banner is recognised as
68
+ machine-managed. The marker is deliberately the full `<!-- Purpose:`
69
+ prefix and NOT the bare `Purpose:` string, so a hand-authored
70
+ specification containing ordinary prose such as
71
+ `"Purpose: deliver a self-service flow."` is not misclassified as
72
+ machine-managed and silently overwritten.
73
+
74
+ ! Pre-cutover guards (e.g.
75
+ `skills/deft-directive-setup/SKILL.md`) MUST accept BOTH the legacy
76
+ `<!-- deft:deprecated-redirect -->` sentinel AND the current
77
+ `Purpose: deprecation redirect` marker for at least one release
78
+ cycle so consumers that migrated under rc.1 / rc.2 are not
79
+ incorrectly re-flagged as pre-cutover on rc.3.
80
+
81
+ ## Example (spec:render)
82
+
83
+ ```
84
+ <!-- AUTO-GENERATED by task spec:render -- DO NOT EDIT MANUALLY -->
85
+ <!-- Purpose: rendered specification -->
86
+ <!-- Source of truth: vbrief/specification.vbrief.json -->
87
+ <!-- Regenerate with: task spec:render -->
88
+ # My Project
89
+ ...
90
+ ```
91
+
92
+ ## Example (migrator deprecation redirect)
93
+
94
+ ```
95
+ <!-- AUTO-GENERATED by task migrate:vbrief -- DO NOT EDIT MANUALLY -->
96
+ <!-- Purpose: deprecation redirect -->
97
+ <!-- Source of truth: n/a -->
98
+ <!-- Regenerate with: task migrate:vbrief -->
99
+ <!-- deft:deprecated-redirect -->
100
+ # SPECIFICATION.md -- DEPRECATED
101
+ ...
102
+ ```
103
+
104
+ The legacy `<!-- deft:deprecated-redirect -->` sentinel remains on the
105
+ fifth line of the deprecation redirect for one release cycle so
106
+ existing detectors (consumer agents, pre-cutover guards, the
107
+ migrator's own re-run protection in `_vbrief_safety.py`) continue to
108
+ work while tooling upgrades to the canonical `Purpose:` token.
109
+
110
+ ## Regression test
111
+
112
+ `tests/content/test_machine_generated_banner.py` parametrises over
113
+ all four writers, invokes each on a fixture, and asserts:
114
+
115
+ 1. the output begins with the four canonical banner lines;
116
+ 2. all `{generator}`, `{purpose}`, `{source}`, `{command}`
117
+ placeholders are populated with the expected values;
118
+ 3. the `Purpose:` token is one of the four registered purposes.
119
+
120
+ Guards the convention against future drift.
121
+
122
+ ## Cross-references
123
+
124
+ - #572 — originating issue
125
+ - `scripts/migrate_vbrief.py` — `_deprecation_redirect()`,
126
+ `_SPEC_AUTO_MARKERS`, `_PROJECT_AUTO_MARKERS`
127
+ - `scripts/spec_render.py::_BANNER`
128
+ - `scripts/prd_render.py::BANNER`
129
+ - `scripts/roadmap_render.py::BANNER`
130
+ - `skills/deft-directive-setup/SKILL.md` § Pre-Cutover Detection Guard
@@ -0,0 +1,120 @@
1
+ # vBRIEF References — `x-vbrief/*` Type Registry
2
+
3
+ Canonical reference for the shape and type registry of `plan.references` entries in vBRIEF files.
4
+
5
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
6
+
7
+ **See also**: [../vbrief/vbrief.md](../vbrief/vbrief.md) | [../vbrief/schemas/vbrief-core.schema.json](../vbrief/schemas/vbrief-core.schema.json) | [../main.md](../../main.md)
8
+
9
+ ---
10
+
11
+ ## Schema-Conformant Reference Shape
12
+
13
+ Every entry in `plan.references` is a `VBriefReference`, which extends the
14
+ schema's `URI` object and adds a `type` field that MUST match the pattern
15
+ `^x-vbrief/` (per the canonical v0.6 schema and directive's vendored copy).
16
+
17
+ ```json
18
+ "references": [
19
+ {
20
+ "uri": "https://github.com/{owner}/{repo}/issues/{N}",
21
+ "type": "x-vbrief/github-issue",
22
+ "title": "Issue #{N}: {issue title}"
23
+ }
24
+ ]
25
+ ```
26
+
27
+ Required fields:
28
+
29
+ - ! `uri` — the canonical URL or relative path (required by the `URI` base type; not `url`)
30
+ - ! `type` — MUST begin with `x-vbrief/` (see registry below)
31
+
32
+ Optional (schema-defined) fields:
33
+
34
+ - ? `title` — a short human label (use `#{N}: {issue title}` for GitHub issues)
35
+ - ? `description` — longer free-form context
36
+ - ? `tags` — array of strings for categorization
37
+
38
+ - ⊗ Use `url` as the field name — the schema requires `uri`
39
+ - ⊗ Use `type` values outside `x-vbrief/*` (e.g. `"github-issue"` with no prefix) — strict validators will reject them
40
+ - ⊗ Rely on `id` to convey issue numbers — that field is not schema-defined; put the issue number in `title` instead
41
+
42
+ ## `x-vbrief/*` Type Registry
43
+
44
+ The following `type` values are recognized by deft's tooling and skills. Any
45
+ `x-vbrief/*` value is schema-valid, but the types below carry documented
46
+ semantics.
47
+
48
+ - `x-vbrief/plan` — reference to another vBRIEF plan (epic→story or story→epic links, also the canonical v0.5 enum value)
49
+ - `x-vbrief/github-issue` — a GitHub issue (the origin of an ingested scope vBRIEF, or a related issue)
50
+ - `x-vbrief/github-pr` — a GitHub pull request (implementing PR, related PR, or superseded PR)
51
+ - `x-vbrief/jira-ticket` — a Jira ticket (origin provenance for Jira-backed projects)
52
+ - `x-vbrief/user-request` — a direct user request captured verbatim (no external tracker ID)
53
+ - `x-vbrief/spec-section` — a pointer into `specification.vbrief.json` by item id or narrative key (traceability link for FR/NFR requirements)
54
+
55
+ Consumer projects ? MAY extend the registry with additional `x-vbrief/*` values. When you do, document them in a project-local conventions file and cite them from `PROJECT-DEFINITION.vbrief.json`.
56
+
57
+ ### Additive sibling fields
58
+
59
+ `References` entries MAY carry additional sibling fields alongside the schema-defined `uri` / `type` / `title` / `description` / `tags`. The following extension is recognised by deft tooling:
60
+
61
+ - `TrustLevel` (`verified` | `internal` | `external`) -- source-trust classification, sourced from the AI Agent Traps paper's Cognitive State / Latent Memory Poisoning trap class. Canonical field shape, value enum, and rule body live in [`../vbrief/vbrief.md`](../vbrief/vbrief.md) `### TrustLevel (#480)`. The safe default for a missing field is `external` (#480).
62
+
63
+ ## Origin Provenance (D11)
64
+
65
+ Scope vBRIEFs in `vbrief/pending/` and `vbrief/active/` SHOULD carry at least
66
+ one reference whose `type` matches `^x-vbrief/`. `scripts/vbrief_validate.py`
67
+ treats any `x-vbrief/*`-typed reference as an origin for the D11 check by
68
+ default (schema-trusting behavior).
69
+
70
+ Run the validator with `--strict-origin-types` to instead require an exact
71
+ match against the registry above (allow-list behavior). Teams that want to
72
+ enforce the allow-list in CI can opt in via the same flag.
73
+
74
+ - ! Every ingested scope vBRIEF MUST carry at least one `references` entry linking to its origin
75
+ - ~ Prefer registry types over ad-hoc `x-vbrief/*` values when a registry type fits
76
+
77
+ ### `Origin` narrative -- canonical provenance signal (#1096)
78
+
79
+ For scope vBRIEFs ingested from a GitHub issue, the canonical provenance
80
+ signal is the `plan.narratives.Origin` text emitted by
81
+ `scripts/issue_ingest.py::_build_issue_vbrief`:
82
+
83
+ - ! `Origin` MUST take one of these two forms:
84
+ - `Ingested from https://github.com/{owner}/{repo}/issues/{N}` (browser URL resolves)
85
+ - `Ingested from issue #{N}` (no-URL fallback)
86
+ - `vBRIEFInfo.description` SHOULD mirror this as `Scope vBRIEF ingested from GitHub issue #{N}` (the secondary signal used by the dedup pass when `Origin` is absent).
87
+
88
+ The dedup pass in `task issue:ingest -- <N>` differentiates *provenance*
89
+ from *informational* references using this narrative:
90
+
91
+ - A pre-existing vBRIEF blocks ingest of `#N` only when BOTH conditions hold:
92
+ 1. The vBRIEF carries an `x-vbrief/github-issue` reference whose `uri`
93
+ points at `#N`.
94
+ 2. The vBRIEF's `plan.narratives.Origin` (or `vBRIEFInfo.description`)
95
+ identifies the SAME `#N` as its provenance.
96
+ - A vBRIEF with `Origin` pointing at `#X` and a companion `x-vbrief/github-issue` reference to `#Y` (`X != Y`) is the *provenance owner of #X only*. The reference to `#Y` is informational and MUST NOT block `task issue:ingest -- Y`.
97
+ - Legacy v0.5-shape vBRIEFs that predate the `Origin` convention fall back
98
+ to a position-aware heuristic: the FIRST `x-vbrief/github-issue` reference
99
+ in `plan.references` is the implied provenance. This preserves dedup for
100
+ unmigrated trees and is bounded -- the canonical Origin signal is
101
+ authoritative whenever it is present.
102
+
103
+ - ⊗ Treat every `x-vbrief/github-issue` reference as dedup-blocking provenance regardless of `Origin` -- that was the #1096 false-positive surface
104
+ - ⊗ Mutate a `completed/` vBRIEF to remove a companion / sibling reference solely because `task issue:ingest` false-positives on it (rewriting completed history is an anti-pattern per `skills/deft-directive-refinement/SKILL.md`)
105
+ - ~ When adding a companion / sibling / related-plan reference to an ingested vBRIEF, keep `Origin` pointing at the original ingest source so the dedup pass continues to recognise the vBRIEF as the canonical owner of that issue
106
+
107
+ ## Schema Version: v0.6 (Canonical, Strict)
108
+
109
+ - ! All vBRIEFs MUST emit `"vBRIEFInfo": { "version": "0.6" }`
110
+ - ! `scripts/vbrief_validate.py` accepts ONLY `"0.6"`; any other version (including legacy `"0.5"`) is a hard validation error
111
+ - ! The vendored schema at `../vbrief/schemas/vbrief-core.schema.json` is the canonical v0.6 copy from [`deftai/vBRIEF`](https://github.com/deftai/vBRIEF/blob/master/schemas/vbrief-core-0.6.schema.json) and pins `vBRIEFInfo.version` to `const: "0.6"`
112
+ - ! `scripts/migrate_vbrief.py` emits `"0.6"`; pre-existing v0.5 vBRIEFs are swept to `"0.6"` as part of the migrator flip PR
113
+
114
+ ## Anti-Patterns
115
+
116
+ - ⊗ Write references with a bare `"type": "github-issue"` — the schema requires `^x-vbrief/`
117
+ - ⊗ Write references with `"url"` instead of `"uri"`
118
+ - ⊗ Rely on a custom `"id"` field for issue numbers — encode it in `title` (or `description`) instead
119
+ - ⊗ Invent new non-prefixed type vocabularies — use `x-vbrief/*` everywhere
120
+ - ⊗ Leave scope vBRIEFs in `pending/` / `active/` without any `x-vbrief/*` origin reference