@nurix/etna 0.20.35 → 0.20.37

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 (233) hide show
  1. package/data/catalog/rules/changelog.md +1 -1
  2. package/data/catalog/skills/nustack/SKILL.md +2 -2
  3. package/data/catalog/skills/nustack/references/cli-design.md +35 -35
  4. package/data/catalog/skills/nustack/references/monorepo-master-list.md +6 -6
  5. package/data/catalog/skills/nustack/references/monorepo-setup.md +13 -13
  6. package/data/catalog/skills/nustack/references/publishing.md +40 -39
  7. package/data/harness-index.json +1 -1
  8. package/data/harnesses/code/CLAUDE.md +4 -4
  9. package/data/harnesses/code/agents/brainstorm.md +2 -2
  10. package/data/harnesses/code/agents/lld-mode.md +2 -2
  11. package/data/harnesses/code/agents/maintenance.md +17 -17
  12. package/data/harnesses/code/codex/agents/brainstorm.toml +6 -2
  13. package/data/harnesses/code/codex/agents/lld-mode.toml +2 -2
  14. package/data/harnesses/code/codex/agents/maintenance.toml +18 -17
  15. package/data/harnesses/code/docs/README.md +9 -17
  16. package/data/harnesses/code/docs/history/CHANGELOG.md +19 -18
  17. package/data/harnesses/code/docs/structure.md +60 -45
  18. package/data/harnesses/code/harness.json +2 -2
  19. package/data/harnesses/code/hooks/compliance.mjs +8 -2
  20. package/data/harnesses/code/hooks/lib/sweep.mjs +3 -2
  21. package/data/harnesses/code/rules/changelog.md +1 -1
  22. package/data/harnesses/code/skills/boundary/SKILL.md +33 -22
  23. package/data/harnesses/code/skills/boundary/references/index.md +2 -4
  24. package/data/harnesses/code/skills/boundary/references/mechanisms.md +3 -10
  25. package/data/harnesses/code/skills/boundary/references/packs/frontend.md +17 -17
  26. package/data/harnesses/code/skills/boundary/references/packs/generic-tail.md +1 -1
  27. package/data/harnesses/code/skills/brainstorm/README.md +11 -13
  28. package/data/harnesses/code/skills/brainstorm/SKILL.md +149 -130
  29. package/data/harnesses/code/skills/brainstorm/references/doctrine.md +48 -51
  30. package/data/harnesses/code/skills/brainstorm/references/harvest.md +51 -57
  31. package/data/harnesses/code/skills/brainstorm/references/session-schema.md +48 -42
  32. package/data/harnesses/code/skills/design/SKILL.md +31 -35
  33. package/data/harnesses/code/skills/design/data/iconography.md +2 -2
  34. package/data/harnesses/code/skills/design/references/compose.md +14 -16
  35. package/data/harnesses/code/skills/design/references/foundations.md +5 -5
  36. package/data/harnesses/code/skills/design/references/intake.md +6 -6
  37. package/data/harnesses/code/skills/design/references/object-pass.md +1 -1
  38. package/data/harnesses/code/skills/design/references/ship-gate.md +5 -5
  39. package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +4 -4
  40. package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +1 -1
  41. package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +1 -1
  42. package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +1 -1
  43. package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +1 -1
  44. package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +2 -2
  45. package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +1 -1
  46. package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +1 -1
  47. package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +1 -1
  48. package/data/harnesses/code/skills/documentation/SKILL.md +92 -143
  49. package/data/harnesses/code/skills/documentation/references/examples.md +45 -72
  50. package/data/harnesses/code/skills/documentation/references/frontmatter.md +8 -8
  51. package/data/harnesses/code/skills/documentation/references/instruction-style.md +3 -3
  52. package/data/harnesses/code/skills/documentation/references/source-comments.md +19 -0
  53. package/data/harnesses/code/skills/documentation/references/style-guide.md +25 -11
  54. package/data/harnesses/code/skills/documentation/references/untemplated.md +11 -10
  55. package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +181 -40
  56. package/data/harnesses/code/skills/documentation/templates/Readme.md +68 -41
  57. package/data/harnesses/code/skills/documentation/templates/acceptance-criteria.md +11 -19
  58. package/data/harnesses/code/skills/documentation/templates/api-reference.md +8 -3
  59. package/data/harnesses/code/skills/documentation/templates/architecture-decision.md +8 -12
  60. package/data/harnesses/code/skills/documentation/templates/backlog.md +2 -2
  61. package/data/harnesses/code/skills/documentation/templates/behavioral-checklist.md +10 -17
  62. package/data/harnesses/code/skills/documentation/templates/bookkeeping.md +2 -2
  63. package/data/harnesses/code/skills/documentation/templates/changelog-entry.md +2 -2
  64. package/data/harnesses/code/skills/documentation/templates/changelog-index.md +21 -29
  65. package/data/harnesses/code/skills/documentation/templates/docs-readme.md +4 -4
  66. package/data/harnesses/code/skills/documentation/templates/doctrine.md +3 -3
  67. package/data/harnesses/code/skills/documentation/templates/domain-model.md +10 -5
  68. package/data/harnesses/code/skills/documentation/templates/environment-registry.md +7 -2
  69. package/data/harnesses/code/skills/documentation/templates/feature.md +6 -6
  70. package/data/harnesses/code/skills/documentation/templates/glossary.md +6 -1
  71. package/data/harnesses/code/skills/documentation/templates/handover.md +17 -17
  72. package/data/harnesses/code/skills/documentation/templates/implementation-map.md +10 -5
  73. package/data/harnesses/code/skills/documentation/templates/journal.md +2 -2
  74. package/data/harnesses/code/skills/documentation/templates/memory-main.md +2 -2
  75. package/data/harnesses/code/skills/documentation/templates/migration-runbook.md +1 -1
  76. package/data/harnesses/code/skills/documentation/templates/non-goals.md +8 -3
  77. package/data/harnesses/code/skills/documentation/templates/operations-procedure.md +8 -3
  78. package/data/harnesses/code/skills/documentation/templates/package.md +5 -9
  79. package/data/harnesses/code/skills/documentation/templates/plan.md +5 -11
  80. package/data/harnesses/code/skills/documentation/templates/protected-files.md +7 -2
  81. package/data/harnesses/code/skills/documentation/templates/root-readme.md +5 -5
  82. package/data/harnesses/code/skills/documentation/templates/security-overview.md +9 -4
  83. package/data/harnesses/code/skills/documentation/templates/setup.md +6 -6
  84. package/data/harnesses/code/skills/documentation/templates/system-overview.md +12 -7
  85. package/data/harnesses/code/skills/documentation/templates/system.md +2 -2
  86. package/data/harnesses/code/skills/documentation/templates/testing-strategy.md +10 -5
  87. package/data/harnesses/code/skills/documentation/templates/ux-behavior.md +14 -5
  88. package/data/harnesses/code/skills/issue-bridge/SKILL.md +51 -16
  89. package/data/harnesses/code/skills/issue-bridge/references/trackers/github.md +5 -5
  90. package/data/harnesses/code/skills/issue-bridge/references/trackers/jira.md +11 -8
  91. package/data/harnesses/code/skills/issue-bridge/references/trackers/linear.md +16 -11
  92. package/data/harnesses/code/skills/nustack-graph/SKILL.md +38 -29
  93. package/data/harnesses/code/skills/polygraph/references/dispatch.md +31 -18
  94. package/data/harnesses/code/skills/polygraph/references/rows.md +11 -6
  95. package/data/harnesses/code/skills/schema-design/SKILL.md +39 -41
  96. package/data/harnesses/code/skills/test/SKILL.md +38 -42
  97. package/data/harnesses/code/skills/testing/SKILL.md +83 -73
  98. package/data/harnesses/code/skills/workflow-mapper/SKILL.md +156 -193
  99. package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +15 -15
  100. package/data/harnesses/delivery/CLAUDE.md +1 -1
  101. package/data/harnesses/delivery/agents/brainstorm.md +2 -2
  102. package/data/harnesses/delivery/agents/lld-mode.md +2 -2
  103. package/data/harnesses/delivery/agents/maintenance.md +17 -17
  104. package/data/harnesses/delivery/codex/agents/brainstorm.toml +6 -2
  105. package/data/harnesses/delivery/codex/agents/lld-mode.toml +2 -2
  106. package/data/harnesses/delivery/codex/agents/maintenance.toml +18 -17
  107. package/data/harnesses/delivery/harness.json +2 -2
  108. package/data/harnesses/delivery/rules/changelog.md +1 -1
  109. package/data/harnesses/delivery/skills/brainstorm/README.md +11 -13
  110. package/data/harnesses/delivery/skills/brainstorm/SKILL.md +149 -130
  111. package/data/harnesses/delivery/skills/brainstorm/references/doctrine.md +48 -51
  112. package/data/harnesses/delivery/skills/brainstorm/references/harvest.md +51 -57
  113. package/data/harnesses/delivery/skills/brainstorm/references/session-schema.md +48 -42
  114. package/data/harnesses/delivery/skills/cost-report/SKILL.md +10 -10
  115. package/data/harnesses/delivery/skills/documentation/SKILL.md +92 -143
  116. package/data/harnesses/delivery/skills/documentation/references/examples.md +45 -72
  117. package/data/harnesses/delivery/skills/documentation/references/frontmatter.md +8 -8
  118. package/data/harnesses/delivery/skills/documentation/references/instruction-style.md +3 -3
  119. package/data/harnesses/delivery/skills/documentation/references/source-comments.md +19 -0
  120. package/data/harnesses/delivery/skills/documentation/references/style-guide.md +25 -11
  121. package/data/harnesses/delivery/skills/documentation/references/untemplated.md +11 -10
  122. package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +181 -40
  123. package/data/harnesses/delivery/skills/documentation/templates/Readme.md +68 -41
  124. package/data/harnesses/delivery/skills/documentation/templates/acceptance-criteria.md +11 -19
  125. package/data/harnesses/delivery/skills/documentation/templates/api-reference.md +8 -3
  126. package/data/harnesses/delivery/skills/documentation/templates/architecture-decision.md +8 -12
  127. package/data/harnesses/delivery/skills/documentation/templates/backlog.md +2 -2
  128. package/data/harnesses/delivery/skills/documentation/templates/behavioral-checklist.md +10 -17
  129. package/data/harnesses/delivery/skills/documentation/templates/bookkeeping.md +2 -2
  130. package/data/harnesses/delivery/skills/documentation/templates/changelog-entry.md +2 -2
  131. package/data/harnesses/delivery/skills/documentation/templates/changelog-index.md +21 -29
  132. package/data/harnesses/delivery/skills/documentation/templates/docs-readme.md +4 -4
  133. package/data/harnesses/delivery/skills/documentation/templates/doctrine.md +3 -3
  134. package/data/harnesses/delivery/skills/documentation/templates/domain-model.md +10 -5
  135. package/data/harnesses/delivery/skills/documentation/templates/environment-registry.md +7 -2
  136. package/data/harnesses/delivery/skills/documentation/templates/feature.md +6 -6
  137. package/data/harnesses/delivery/skills/documentation/templates/glossary.md +6 -1
  138. package/data/harnesses/delivery/skills/documentation/templates/handover.md +17 -17
  139. package/data/harnesses/delivery/skills/documentation/templates/implementation-map.md +10 -5
  140. package/data/harnesses/delivery/skills/documentation/templates/journal.md +2 -2
  141. package/data/harnesses/delivery/skills/documentation/templates/memory-main.md +2 -2
  142. package/data/harnesses/delivery/skills/documentation/templates/migration-runbook.md +1 -1
  143. package/data/harnesses/delivery/skills/documentation/templates/non-goals.md +8 -3
  144. package/data/harnesses/delivery/skills/documentation/templates/operations-procedure.md +8 -3
  145. package/data/harnesses/delivery/skills/documentation/templates/package.md +5 -9
  146. package/data/harnesses/delivery/skills/documentation/templates/plan.md +5 -11
  147. package/data/harnesses/delivery/skills/documentation/templates/protected-files.md +7 -2
  148. package/data/harnesses/delivery/skills/documentation/templates/root-readme.md +5 -5
  149. package/data/harnesses/delivery/skills/documentation/templates/security-overview.md +9 -4
  150. package/data/harnesses/delivery/skills/documentation/templates/setup.md +6 -6
  151. package/data/harnesses/delivery/skills/documentation/templates/system-overview.md +12 -7
  152. package/data/harnesses/delivery/skills/documentation/templates/system.md +2 -2
  153. package/data/harnesses/delivery/skills/documentation/templates/testing-strategy.md +10 -5
  154. package/data/harnesses/delivery/skills/documentation/templates/ux-behavior.md +14 -5
  155. package/data/harnesses/delivery/skills/escalate/SKILL.md +11 -11
  156. package/data/harnesses/delivery/skills/prompt-eval/SKILL.md +8 -8
  157. package/data/harnesses/delivery/skills/prompt-library/SKILL.md +30 -9
  158. package/data/harnesses/delivery/skills/route/SKILL.md +8 -8
  159. package/data/harnesses/etna/CLAUDE.md +2 -2
  160. package/data/harnesses/etna/agents/brainstorm.md +2 -2
  161. package/data/harnesses/etna/agents/lld-mode.md +2 -2
  162. package/data/harnesses/etna/agents/maintenance.md +17 -17
  163. package/data/harnesses/etna/codex/agents/brainstorm.toml +6 -2
  164. package/data/harnesses/etna/codex/agents/lld-mode.toml +2 -2
  165. package/data/harnesses/etna/codex/agents/maintenance.toml +18 -17
  166. package/data/harnesses/etna/harness.json +2 -2
  167. package/data/harnesses/etna/rules/changelog.md +1 -1
  168. package/data/harnesses/etna/skills/boundary/SKILL.md +33 -22
  169. package/data/harnesses/etna/skills/boundary/references/index.md +2 -4
  170. package/data/harnesses/etna/skills/boundary/references/mechanisms.md +3 -10
  171. package/data/harnesses/etna/skills/boundary/references/packs/frontend.md +17 -17
  172. package/data/harnesses/etna/skills/boundary/references/packs/generic-tail.md +1 -1
  173. package/data/harnesses/etna/skills/brainstorm/README.md +11 -13
  174. package/data/harnesses/etna/skills/brainstorm/SKILL.md +149 -130
  175. package/data/harnesses/etna/skills/brainstorm/references/doctrine.md +48 -51
  176. package/data/harnesses/etna/skills/brainstorm/references/harvest.md +51 -57
  177. package/data/harnesses/etna/skills/brainstorm/references/session-schema.md +48 -42
  178. package/data/harnesses/etna/skills/documentation/SKILL.md +92 -143
  179. package/data/harnesses/etna/skills/documentation/references/examples.md +45 -72
  180. package/data/harnesses/etna/skills/documentation/references/frontmatter.md +8 -8
  181. package/data/harnesses/etna/skills/documentation/references/instruction-style.md +3 -3
  182. package/data/harnesses/etna/skills/documentation/references/source-comments.md +19 -0
  183. package/data/harnesses/etna/skills/documentation/references/style-guide.md +25 -11
  184. package/data/harnesses/etna/skills/documentation/references/untemplated.md +11 -10
  185. package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +181 -40
  186. package/data/harnesses/etna/skills/documentation/templates/Readme.md +68 -41
  187. package/data/harnesses/etna/skills/documentation/templates/acceptance-criteria.md +11 -19
  188. package/data/harnesses/etna/skills/documentation/templates/api-reference.md +8 -3
  189. package/data/harnesses/etna/skills/documentation/templates/architecture-decision.md +8 -12
  190. package/data/harnesses/etna/skills/documentation/templates/backlog.md +2 -2
  191. package/data/harnesses/etna/skills/documentation/templates/behavioral-checklist.md +10 -17
  192. package/data/harnesses/etna/skills/documentation/templates/bookkeeping.md +2 -2
  193. package/data/harnesses/etna/skills/documentation/templates/changelog-entry.md +2 -2
  194. package/data/harnesses/etna/skills/documentation/templates/changelog-index.md +21 -29
  195. package/data/harnesses/etna/skills/documentation/templates/docs-readme.md +4 -4
  196. package/data/harnesses/etna/skills/documentation/templates/doctrine.md +3 -3
  197. package/data/harnesses/etna/skills/documentation/templates/domain-model.md +10 -5
  198. package/data/harnesses/etna/skills/documentation/templates/environment-registry.md +7 -2
  199. package/data/harnesses/etna/skills/documentation/templates/feature.md +6 -6
  200. package/data/harnesses/etna/skills/documentation/templates/glossary.md +6 -1
  201. package/data/harnesses/etna/skills/documentation/templates/handover.md +17 -17
  202. package/data/harnesses/etna/skills/documentation/templates/implementation-map.md +10 -5
  203. package/data/harnesses/etna/skills/documentation/templates/journal.md +2 -2
  204. package/data/harnesses/etna/skills/documentation/templates/memory-main.md +2 -2
  205. package/data/harnesses/etna/skills/documentation/templates/migration-runbook.md +1 -1
  206. package/data/harnesses/etna/skills/documentation/templates/non-goals.md +8 -3
  207. package/data/harnesses/etna/skills/documentation/templates/operations-procedure.md +8 -3
  208. package/data/harnesses/etna/skills/documentation/templates/package.md +5 -9
  209. package/data/harnesses/etna/skills/documentation/templates/plan.md +5 -11
  210. package/data/harnesses/etna/skills/documentation/templates/protected-files.md +7 -2
  211. package/data/harnesses/etna/skills/documentation/templates/root-readme.md +5 -5
  212. package/data/harnesses/etna/skills/documentation/templates/security-overview.md +9 -4
  213. package/data/harnesses/etna/skills/documentation/templates/setup.md +6 -6
  214. package/data/harnesses/etna/skills/documentation/templates/system-overview.md +12 -7
  215. package/data/harnesses/etna/skills/documentation/templates/system.md +2 -2
  216. package/data/harnesses/etna/skills/documentation/templates/testing-strategy.md +10 -5
  217. package/data/harnesses/etna/skills/documentation/templates/ux-behavior.md +14 -5
  218. package/data/harnesses/etna/skills/workflow-mapper/SKILL.md +156 -193
  219. package/data/harnesses/etna/skills/workflow-mapper/references/patterns.md +15 -15
  220. package/data/harnesses/hr/harness.json +1 -1
  221. package/data/harnesses/hr/skills/evaluator/SKILL.md +71 -73
  222. package/data/harnesses/hr/skills/evaluator/criteria/code-quality.md +28 -47
  223. package/data/harnesses/hr/skills/evaluator/criteria/deployment-readiness.md +33 -43
  224. package/data/harnesses/hr/skills/evaluator/criteria/maintainability.md +34 -46
  225. package/data/harnesses/hr/skills/evaluator/criteria/mechanical-ambition.md +13 -13
  226. package/data/harnesses/hr/skills/evaluator/criteria/problem-substantiveness.md +7 -7
  227. package/data/harnesses/hr/skills/evaluator/criteria/testing.md +36 -41
  228. package/data/harnesses/hr/skills/evaluator/criteria/ux-mechanics.md +25 -11
  229. package/data/harnesses/hr/skills/evaluator/criteria/value-articulation.md +7 -7
  230. package/data/harnesses/hr/skills/evaluator/preflight.md +27 -46
  231. package/data/harnesses/hr/skills/interview-eval/SKILL.md +37 -42
  232. package/data/harnesses/hr/skills/interview-eval/rubric.md +21 -23
  233. package/package.json +2 -2
@@ -24,7 +24,7 @@ Don't write an AD for:
24
24
 
25
25
  `Proposed` → `Accepted` → `Deprecated`
26
26
 
27
- Frontmatter `status:` is the single lifecycle source of truth. An AD stays `Accepted` for as long as its subject is live — revisions rewrite the body and never change the status, and there is **no `Superseded` state**: supersession is an edit plus a changelog entry, not a new document. Set `Deprecated` only when the subject itself is retired (the component is gone, the contract no longer exists); state where the replacement lives, if any.
27
+ Frontmatter `status:` is the single lifecycle source of truth; **never** also write "Status: Accepted" in the body. An AD stays `Accepted` for as long as its subject is live — revisions rewrite the body and never change the status, and there is **no `Superseded` state**: supersession is an edit plus a changelog entry, not a new document. Set `Deprecated` only when the subject itself is retired (the component is gone, the contract no longer exists); state where the replacement lives, if any.
28
28
 
29
29
  ### Naming
30
30
 
@@ -38,20 +38,20 @@ Three sections are required: **Decision**, **Context**, **Consequences** — plu
38
38
 
39
39
  ```markdown
40
40
  ---
41
+ type: architecture-decision
41
42
  title: "AD-NNN: Short title in sentence case"
43
+ description: "{at most 300 characters: what this decision settles and where its boundary sits}"
42
44
  status: Accepted # Proposed | Accepted | Deprecated
43
- created: YYYY-MM-DD
44
45
  last-updated: YYYY-MM-DD # bump on every revision
45
46
  decision-owner: Name
46
47
  reviewers: [] # optional
47
- tags: [ad]
48
48
  ---
49
49
 
50
50
  # AD-NNN: Short Title
51
51
 
52
52
  ## Decision
53
53
 
54
- [One paragraph, active voice. "We will…" Lead with the answer — the current answer, whatever the journey was.]
54
+ [One paragraph, third person, active voice: "The platform stores…". Lead with the answer — the current answer, whatever the journey was.]
55
55
 
56
56
  ## Context
57
57
 
@@ -65,11 +65,11 @@ tags: [ad]
65
65
 
66
66
  **Negative:**
67
67
 
68
- - [What becomes harder, what we accept reluctantly]
68
+ - [What becomes harder, what is accepted reluctantly]
69
69
 
70
70
  **Risks:**
71
71
 
72
- - [Second-order effects you can already see, with mitigations if known]
72
+ - [Second-order effects already visible, with mitigations if known]
73
73
 
74
74
  <!-- Optional sections below. Include only when warranted by the decision's weight. -->
75
75
 
@@ -110,12 +110,8 @@ tags: [ad]
110
110
 
111
111
  ### Rules
112
112
 
113
- - **One subject per AD; all its revisions stay inside it.** Two genuinely different subjects means two ADs — a revision of an existing subject never does.
114
- - **The body is always the current truth.** Rewrite affected sections on every revision; never leave a superseded choice narrated in the body — the Decision Changelog carries the journey, with each entry naming the old choice and the trigger.
115
- - Decision-first. The first paragraph after the heading is the answer; readers should not need to scroll.
116
113
  - **Consequences lists positives, negatives, AND risks.** Pros-only Consequences is the genre's classic failure — one AD's honest resulting context is the input context for the next.
117
114
  - **Options Considered keeps every genuinely rejected alternative with the real reason.** Informed rejections are the most expensive knowledge to lose; a rejection made with strong prior art in view says so explicitly.
118
115
  - **Keep it short — one to two pages.** Long decision docs don't get updated. How-it-works detail belongs in the owning feature doc; execution in a plan. Link, don't embed.
119
- - No section numbering (`§5.1.1`). Use markdown headings only — inserting a section shouldn't renumber everything.
120
- - Frontmatter `status` is the single source of truth for lifecycle. Don't also write "Status: Accepted" in the body.
121
- - The Decision Changelog is append-only, newest first. Typo and formatting fixes don't get entries.
116
+ - **No section numbering** (`§5.1.1`); markdown headings only, so inserting a section renumbers nothing.
117
+ - **The Decision Changelog is append-only, newest first**, one entry per revision naming the old choice and the trigger. Typo and formatting fixes get no entry.
@@ -1,11 +1,11 @@
1
1
  # Scaffold: docs/history/backlog.md
2
2
 
3
- Baseline scaffold — created if missing (the `maintenance` agent's baseline calls this). Target file: `docs/history/backlog.md`.
3
+ Queue. Baseline scaffold, created if missing by the `maintenance` agent's baseline. Target file: `docs/history/backlog.md`. A row is appended when work is discovered and deleted when the work lands; it is never marked done in place, because the plan or changelog entry that did the work is the record.
4
4
 
5
5
  ```
6
6
  # Backlog
7
7
 
8
- Tracked work items, technical debt, and planned improvements. Append new items under the appropriate priority.
8
+ Open work items, technical debt, and planned improvements — a queue. Append new items under the appropriate priority; delete an item's row when its work lands.
9
9
 
10
10
  ---
11
11
 
@@ -1,8 +1,8 @@
1
- # Behavioral Checklist (docs/tests/{feature}.md)
1
+ # Behavioral checklist (docs/tests/{feature}.md)
2
2
 
3
3
  Truth document. Use for: **how to verify one feature's promised behavior by driving the real product** — the browser, the CLI binary, HTTP against the running service. One file per feature, named for the feature doc that owns the code (`docs/features/auth.md` → `docs/tests/auth.md`).
4
4
 
5
- **Frontmatter is two keys, and `verifies:` is the load-bearing one:**
5
+ **Frontmatter is three keys, and `verifies:` is the load-bearing one:**
6
6
 
7
7
  ```yaml
8
8
  ---
@@ -12,13 +12,7 @@ verifies: [docs/features/auth.md] # required — the doc(s) whose promi
12
12
  ---
13
13
  ```
14
14
 
15
- A checklist owns no code, so it carries no `owns:`. What it carries instead is the edge back to
16
- its subject. **The filename convention is not the edge** — a same-named file is a coincidence a
17
- resolver cannot trust, it breaks the moment a checklist spans two docs or a feature is renamed, and
18
- it leaves nothing to implicate this file when its subject changes. Without `verifies:` a checklist
19
- is unreachable: no change reaches it, so it goes stale and the staleness is undetectable. Several
20
- values are correct where one checklist proves promises two docs decide; the inverse — which
21
- checklists cover a feature — is generated, never listed in the feature doc.
15
+ A checklist owns no code, so it carries no `owns:`. What it carries instead is the edge back to its subject. **The filename convention is not the edge** — a same-named file is a coincidence a resolver cannot trust, it breaks the moment a checklist spans two docs or a feature is renamed, and it leaves nothing to implicate this file when its subject changes. Without `verifies:` a checklist is unreachable: no change reaches it, so it goes stale and the staleness is undetectable. Several values are correct where one checklist proves promises two docs decide; the inverse — which checklists cover a feature — is generated, never listed in the feature doc.
22
16
 
23
17
  **This is the driving script, and it is the source the suite is drawn from.** At the verification gate it does double duty: rung 1 drives the real surface *against these steps*, and rung 2 pins the durable subset *of these assertions* as suite tests. Writing it is therefore not a report written afterwards — it is authored or updated **before** the driving, so the gate has something to execute and the tests have something to be derived from. Which assertions earn a permanent test is decided by the `testing` skill (gate mode) § What earns a suite test, and each section records the answer on its `Pinned:` line.
24
18
 
@@ -43,18 +37,18 @@ Required: **Conventions**, at least one numbered behavior section, **Failure Rep
43
37
  # {Feature} Test Plan
44
38
 
45
39
  {What this covers, and what neighbouring checklists cover instead, with links. Close with:}
40
+
46
41
  Each step is an action; each **Assert** is the observable it must produce.
47
42
 
48
43
  ## Test Inputs
49
44
 
50
- - **URL / entry point** — where the run starts
51
- - **Identity** — the account or role required, and how it is obtained
52
- - **State** — the fixture or seeded state the run assumes, stated as counts a reader can check
45
+ - **URL / entry point:** where the run starts
46
+ - **Identity:** the account or role required, and how it is obtained
47
+ - **State:** the fixture or seeded state the run assumes, stated as counts a reader can check
53
48
 
54
49
  ## Conventions
55
50
 
56
- - {The invariants a reader needs to interpret the assertions — the vocabulary, the scoping rule,
57
- the guarantee that makes a surprising assertion correct. Not a restatement of the LLD.}
51
+ - {The invariants a reader needs to interpret the assertions — the vocabulary, the scoping rule, the guarantee that makes a surprising assertion correct. Not a restatement of the LLD.}
58
52
 
59
53
  ---
60
54
 
@@ -80,14 +74,13 @@ Each step is an action; each **Assert** is the observable it must produce.
80
74
 
81
75
  State-based signals, never fixed sleeps:
82
76
 
83
- - **{Milestone}** — {the signal that proves it, as a selector or an observable}
77
+ - **{Milestone}:** {the signal that proves it, as a selector or an observable}
84
78
 
85
79
  Timeouts: {operation} **{n}s**.
86
80
 
87
81
  ## Driving notes
88
82
 
89
- - {Hard-won facts about driving this surface that cost someone an hour — an environment trap, a
90
- harness quirk, a signal that lies. Not general advice.}
83
+ - {Hard-won facts about driving this surface that cost someone an hour — an environment trap, a harness quirk, a signal that lies. Not general advice.}
91
84
 
92
85
  ## Failure Report
93
86
 
@@ -1,6 +1,6 @@
1
1
  # Bookkeeping ledger (docs/operations/bookkeeping.md)
2
2
 
3
- Truth document with an unusual lifecycle: a **work queue**, not an archive. Rows are appended mechanically by the awareness hook (`auto:`) and deliberately by working sessions (`note:`), drained by the `bookkeeper` agent, and walled at Stop, at commit, and in CI. What survives in git — `waived:` and `needs-session:` rows — is exactly what a PR reviewer should see.
3
+ Queue (`templates/Readme.md` § The three natures): a **work queue**, not an archive. Rows are appended mechanically by the awareness hook (`auto:`) and deliberately by working sessions (`note:`), drained by the `bookkeeper` agent, and walled at Stop, at commit, and in CI. What survives in git — `waived:` and `needs-session:` rows — is exactly what a PR reviewer should see.
4
4
 
5
5
  **Each wall reads the queue at its own width, and re-verifies conditions at gate time.** Stop takes the ending session's own rows, because accountability for an arc is per session. The commit gate takes only the rows **implicating that commit's staged files** — a row names the file its finding is about, and holding a commit behind rows raised by somebody else's edits is a wait nothing the committer may do can clear. CI takes every row on the branch, where there is no staged set to scope by. All three re-test each row against the repo before blocking, so a row whose condition has died walls nothing. Fail-closed cases stay repo-wide at the commit gate: a row whose grammar names no path, a `needs-session:` row, an expired waiver, and a commit staging nothing at all.
6
6
 
@@ -21,4 +21,4 @@ The shared work queue keeping documentation and code in sync — a queue, never
21
21
 
22
22
  **A waiver covers a finding only when it names the finding's kind and its subject in backticks** — the matcher (`waiverCovers`) tests the backticked subject exactly, so a waiver written without them silences nothing and the wall stands. A `waived:` row's `expires=` date is enforced: CI honors the waiver until the date, then fails. `dead-glob` waivers double as the dead-glob allowlist; `ownership-overlap` waivers cover the CI ownership check the same way.
23
23
 
24
- Finding kinds for `auto:`: `dead-glob` · `doc-implicated` · `doc-lint` · `header-missing` · `package-rejected` · `frozen-record-edited` · `source-lint`. The CI ownership check additionally accepts `waived:` rows of kind `ownership-overlap`.
24
+ Finding kinds for `auto:`: `dead-glob` · `doc-implicated` · `doc-lint` · `header-missing` · `package-rejected` · `frozen-record-edited` · `source-lint`. The CI ownership check additionally accepts `waived:` rows of kind `ownership-overlap` and `dangling-edge` (a `verifies:` target that does not exist, the subject being that target's path).
@@ -1,4 +1,4 @@
1
- # Changelog Entry
1
+ # Changelog entry
2
2
 
3
3
  Record. Use for: the per-unit-of-work journal of what changed and how it was refined — one file per entry under `docs/history/changelog/YYYY-MM-DD-{three-words}.md`, written by whoever does the work and frozen inside the commit it describes. The three words name the work, not the commit. Trigger and lifecycle policy: the `changelog` rule; distillation is the `retro` agent.
4
4
 
@@ -50,7 +50,7 @@ A commit is the smallest unit an entry may describe. Above that the mapping is j
50
50
 
51
51
  ## The index
52
52
 
53
- Every entry appends one row to `docs/history/CHANGELOG.md` — date, link, one-line summary — in the same pass that writes the entry.
53
+ The heading line is the entry's one-line summary, and the only one: `docs/history/CHANGELOG.md` is the folder's guide and takes no row per entry, so `grep -m1 -H '^# ' docs/history/changelog/*.md` is the index.
54
54
 
55
55
  ## Exemptions (closed list)
56
56
 
@@ -1,41 +1,33 @@
1
- # Scaffold: docs/history/CHANGELOG.md
1
+ # Changelog guide (docs/history/CHANGELOG.md)
2
2
 
3
- Baseline scaffold — created if missing (the `maintenance` agent's baseline calls this). Target file: `docs/history/CHANGELOG.md`.
4
-
5
- ```
6
- # Changelog
7
-
8
- All notable changes to {Project Name} will be documented in this file.
9
-
10
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
3
+ Truth document. Baseline scaffold, created if missing by the `maintenance` agent's baseline. It explains the changelog folder beside it and is never appended to: an entry is found by listing `docs/history/changelog/`, and each entry's first line is its one-line summary, so a row per entry here would be a second copy of that line that someone has to keep in step. The guide is rewritten only when the changelog's rules change.
11
4
 
5
+ ```markdown
12
6
  ---
13
-
14
- ## [Unreleased]
15
-
16
- {entries added here as work proceeds; promoting them under a release heading is the one sanctioned edit to this index — the dated entry files themselves stay frozen}
17
-
7
+ type: changelog-guide
8
+ description: "How {Project Name}'s changelog works: one entry per unit of work under changelog/, what each entry records, when one is owed, and how to read the folder."
18
9
  ---
19
10
 
20
- ## Links
11
+ # Changelog
21
12
 
22
- - [Setup Guide](../operations/setup.md)
23
- - [Architecture](../architecture/)
13
+ **Goal:** what changed in {Project Name}, and how it was refined, one entry per unit of work.
24
14
 
25
- ---
15
+ ## Entries
16
+
17
+ - **Location:** `changelog/YYYY-MM-DD-{three-words}.md`, one file per unit of work; the three words name the work, not the commit.
18
+ - **Summary line:** each entry opens `# {date} · {surface} — {one-line outcome}`, the line a reader scans.
19
+ - **Content:** the ask in the user's words, what was rejected, which skills held, what changed and what running it taught (the `documentation` skill's `templates/changelog-entry.md`).
20
+ - **Lifecycle:** a draft until its commit; frozen from then on. A correction is a new entry that links back.
26
21
 
27
- ## How to Update This Changelog
22
+ ## Owed entries
28
23
 
29
- 1. Create a dated change file in `docs/history/changelog/`:
30
- `docs/history/changelog/YYYY-MM-DD-feature-name.md`
24
+ - **Plan completion:** a draft entry, written when the plan reaches `Status: Complete`.
25
+ - **Commit:** every non-exempt commit carries its entry inside it (the closed exemption list is the `documentation` skill's `templates/changelog-entry.md`).
31
26
 
32
- 2. Update this CHANGELOG.md with a high-level summary linking to the detail file
27
+ ## Reading the changelog
33
28
 
34
- 3. Follow Keep a Changelog categories:
35
- - **Added** for new features
36
- - **Changed** for changes in existing functionality
37
- - **Deprecated** for soon-to-be removed features
38
- - **Removed** for now removed features
39
- - **Fixed** for bug fixes
40
- - **Security** for security improvements
29
+ - **Newest first:** `ls -r changelog/`
30
+ - **One line per entry:** `grep -m1 -H '^# ' changelog/*.md`
31
+ - **One surface:** `grep -l '· {surface} —' changelog/*.md`
32
+ - **Distilled lessons:** the `retro` agent turns accumulated entries into a punch list on demand.
41
33
  ```
@@ -1,8 +1,8 @@
1
- # docs/README.md (Documentation Root)
1
+ # docs/README.md (documentation root)
2
2
 
3
- Truth document. Use for: the entry point for all documentation in a repo. Created during baseline audit.
3
+ Truth document. Use for: the entry point for all documentation in a repo, created by the `maintenance` agent's baseline.
4
4
 
5
- **This file describes directories, never files.** Each section names one folder under `docs/` and says what the folder holds, who reads it and how its files are named — a description of the directory, not of its contents. No per-file rows, no file tree, no `├──` block: the tree is `structure.md`'s, as the authority on placement, and `ls` is the roster. A row per file forces an index edit on every file added, renamed or retired, and the index's own history then records roster churn instead of what the index said — a repo carried 103 commits on `docs/README.md` before this rule, most of them row edits. Each section below names a folder and says what the folder holds and how its files are named; the only files an index may name are the mandated scaffolds (`structure.md`, `operations/setup.md`, `history/CHANGELOG.md`, `history/backlog.md`) and the root `CLAUDE.md`. The repo-root `README.md` routes the team and agents in by intent; this file describes the folders of the docs tree — each links the other once and neither restates the other. Naming a file without a link is the same row: no filename, no record ID (`AD-010`), no per-record table. Each file's own `description:` frontmatter is its account, read with `grep -m1 '^description:' <folder>/*.md`. `doc-lint` blocks a folder index that links an individual document (`index-lists-files`), names one (`index-names-records`) or draws a tree (`index-file-tree`).
5
+ **This file describes directories, never files.** Each section names one folder under `docs/` and says what the folder holds, who reads it and how its files are named. No per-file rows, no file tree, no `├──` block: the tree is `structure.md`'s, as the authority on placement, and `ls` is the roster. A row per file forces an index edit on every file added, renamed or retired, so the index's history records roster churn instead of what the index said. Naming a file without a link is the same row: no filename, no record ID (`AD-010`), no per-record table. The only files an index may name are the mandated scaffolds and the root instruction files (`SKILL.md` § Indexes and descriptions). Each file's own `description:` frontmatter is its account, read with `grep -m1 '^description:' <folder>/*.md`. `doc-lint` blocks a folder index that links an individual document (`index-lists-files`), names one (`index-names-records`) or draws a tree (`index-file-tree`). The repo-root `README.md` routes the team and agents in by intent and this file describes the folders of the docs tree; each links the other once and neither restates the other.
6
6
 
7
7
  **Link only what exists.** Every row below is a placeholder — drop any whose target the repo does not have. Most `history/` and `architecture/` folders are created on first use, so linking them unconditionally ships a docs index with dead links on day one. An index is a browse page: a link that resolves to nothing is worse than an absent row.
8
8
 
@@ -38,7 +38,7 @@ The design layer — [architecture/](architecture/): {what the folder holds —
38
38
 
39
39
  ## History
40
40
 
41
- [history/](history/) — the records: `plans/` (one dated plan per unit of work, frozen at completion), `changelog/` (one entry per unit of work, indexed by [CHANGELOG.md](history/CHANGELOG.md)), `migrations/` (one-shot runbooks), `brainstorms/`, `research/`, and [backlog.md](history/backlog.md).
41
+ [history/](history/) — the records, and two queues: `plans/` (one dated plan per unit of work, frozen at completion), `changelog/` (one entry per unit of work; [CHANGELOG.md](history/CHANGELOG.md) explains how to read it), `migrations/` (one-shot runbooks), `brainstorms/`, `research/`, [backlog.md](history/backlog.md) (open work; a finished item is deleted) and `journal.md` (mid-execution facts awaiting their owning doc).
42
42
 
43
43
  ## Research and memory
44
44
 
@@ -1,4 +1,4 @@
1
- # Doctrine Documentation (docs/architecture/common/{concern}.md)
1
+ # Doctrine documentation (docs/architecture/common/{concern}.md)
2
2
 
3
3
  Truth document. Use for **one concern the platform handles everywhere**: authentication, authorization, storage, the API protocol, credentials, telemetry. One file per concern, named for the concern. A doctrine document speaks for no code: no source header names it, and it carries no `owns:`. The surfaces bound by it are the documents that design or touch the objects it governs, computed through those objects, and each names it in its Scope.
4
4
 
@@ -24,7 +24,7 @@ Nothing else: the neighbouring documents live in **For the agent**, the one clos
24
24
  type: doctrine # required tooling key
25
25
  description: "{at most 300 characters: what this document settles and where its boundary sits}" # required — the per-file account a folder is browsed by (references/frontmatter.md)
26
26
  status: active # required — active | draft
27
- objects: [principal, credential, device grant] # recommended — the concepts this doctrine governs, by their graph names
27
+ objects: [principal, credential, device grant] # required — the concepts this doctrine governs, by their graph names
28
28
  ---
29
29
  ```
30
30
 
@@ -79,4 +79,4 @@ Code cannot reveal what it does not yet do, so decided-but-unbuilt intent is one
79
79
  | A tour of the code that implements the concern | The code graph |
80
80
  | The catalog of routes, error codes or variables | An API reference or environment registry |
81
81
  | The one feature that happens to use the concern most | That feature's own document, which names this doctrine in its Scope |
82
- | The story of how the concern got this way | A decision record (`decisions/`) for the why, and the changelog for the when |
82
+ | The story of how the concern got this way | The subject's architecture decision (`decisions/`), whose Decision Changelog tail carries how it moved, and the changelog for the when |
@@ -1,10 +1,15 @@
1
- # Domain Model (docs/architecture/domain-model.md)
1
+ # Domain model (docs/architecture/domain-model.md)
2
2
 
3
3
  Truth document. Use for: the entities the system is about — what they are, how they relate, and who owns their state. The vocabulary here must match the glossary and the code; when they disagree, fix the disagreement, don't document around it.
4
4
 
5
5
  Required: **Entities**, **Relationships**. Optional: Lifecycle states, Invariants.
6
6
 
7
- ```
7
+ ```markdown
8
+ ---
9
+ type: domain-model
10
+ description: "{at most 300 characters: what this document settles and where its boundary sits}"
11
+ ---
12
+
8
13
  # Domain Model
9
14
 
10
15
  ## Entities
@@ -15,14 +20,14 @@ Required: **Entities**, **Relationships**. Optional: Lifecycle states, Invariant
15
20
 
16
21
  ## Relationships
17
22
 
18
- - {EntityA} 1—N {EntityB} — {the meaning of the link}
19
- - {EntityB} N—N {EntityC} via {join} — {meaning}
23
+ - **{EntityA} 1—N {EntityB}:** {the meaning of the link}
24
+ - **{EntityB} N—N {EntityC} via {join}:** {meaning}
20
25
 
21
26
  ## Lifecycle states
22
27
 
23
28
  {Only for entities with real state machines.}
24
29
 
25
- - **{Entity}**: draft → active → archived — {what moves it between states}
30
+ - **{Entity}:** draft → active → archived, moved by {what moves it between states}
26
31
 
27
32
  ## Invariants
28
33
 
@@ -1,10 +1,15 @@
1
- # Environment Registry (docs/operations/environment.md)
1
+ # Environment registry (docs/operations/environment.md)
2
2
 
3
3
  Truth document. Use for: the config surface — every variable the code reads, in one table. `.env.example` mirrors this doc's variable list.
4
4
 
5
5
  **Placeholders only, never real values.** A real-looking password, account ID, or personal profile name in a doc is a leak, and one developer's local setup written as the canonical value is a trap for everyone else. Values in this doc are `{placeholder}` descriptions.
6
6
 
7
- ```
7
+ ```markdown
8
+ ---
9
+ type: environment-registry
10
+ description: "{at most 300 characters: what this document settles and where its boundary sits}"
11
+ ---
12
+
8
13
  # Environment Registry
9
14
 
10
15
  Every variable the code reads. `.env.example` mirrors this list.
@@ -1,4 +1,4 @@
1
- # Feature Documentation (docs/features/{feature}.md)
1
+ # Feature documentation (docs/features/{feature}.md)
2
2
 
3
3
  Truth document. Use for every feature in `docs/features/`: something a person points at, such as an address, a command family or a named control. One file per feature, cut by the objects it designs, never by the code's routers, tables, plans or packages. The file persists from design (`status: draft`) to live reference (`status: active`).
4
4
 
@@ -8,9 +8,9 @@ Truth document. Use for every feature in `docs/features/`: something a person po
8
8
  - **Each bullet is a bold label, then one or two third-person sentences** saying what happens: "**Organization user:** user lands in their existing organization", never "you land…".
9
9
  - **Flows carry the journey; Decisions carry the reasons; Promises run deepest.**
10
10
 
11
- The frontmatter names the objects the feature designs; which files it speaks for is computed from the source headers and the object closure, never listed (`references/frontmatter.md`). Every computable fact (columns, vocabularies, foreign keys, writers, routes, guards, files) is the code graph's (`docs/architecture/systems/knowledge-layer.md`), and a hand-typed copy is the defect this genre removes. Code is named only where a person types or sees it (a page, a command, a flag, an environment variable) or at a cross-cutting seam the graph would not lead a reader to.
11
+ The frontmatter names the objects the feature designs; which files it speaks for is never listed in the body. The ownership scan reads its transitional `owns:` region glob, and each owned source file's header names this document, ready for when the scan switches (`references/frontmatter.md`). Every computable fact (columns, vocabularies, foreign keys, writers, routes, guards, files) is the code graph's (`docs/architecture/systems/knowledge-layer.md`), and a hand-typed copy is the defect this genre removes. Code is named only where a person types or sees it (a page, a command, a flag, an environment variable) or at a cross-cutting seam the graph would not lead a reader to.
12
12
 
13
- **A feature document runs deepest toward its end.** Scope and Flows are the model and the journey. **Promises** goes as deep as the behaviour does: every state the surface can be in, every edge case, what a refusal tells the person, and the exact wording wherever the wording itself is promised. That depth is earned because a person or a test checks it and the code cannot state it as intent. It still stops before mechanism. A promise reads "a removed membership shows a panel, not a redirect", never which route answers it.
13
+ **A feature document runs deepest toward its end.** Scope and Flows are the model and the journey. **Promises** goes as deep as the behaviour does: every state the surface can be in, every edge case, what a refusal tells the person, and the exact wording wherever the wording itself is promised. That depth is earned because a person or a test checks it and the code cannot state it as intent. It stops before mechanism. A promise reads "a removed membership shows a panel, not a redirect", never which route answers it.
14
14
 
15
15
  **Sections:**
16
16
 
@@ -19,7 +19,7 @@ The frontmatter names the objects the feature designs; which files it speaks for
19
19
  | Frontmatter | required |
20
20
  | Goal line | required |
21
21
  | `Scope` | required |
22
- | `Flows` | required |
22
+ | `Flows` | required once `status: active`; omitted at `draft`, before there is a shipped surface to describe |
23
23
  | `Decisions` | once any choice was made that the code cannot explain |
24
24
  | `Promises` | required |
25
25
  | `Gaps` | only when there is one |
@@ -64,7 +64,7 @@ owns: ["packages/studio/src/server/devices/**"] # transitional — one region
64
64
 
65
65
  ### {Theme as a noun phrase — e.g. "Sign-in failures", "Gate outcomes", "Terminal grant states"}
66
66
 
67
- {A table where the cases are parallel states — | Situation | What the person sees | — carrying the exact wording where the wording is promised. Bullets otherwise:}
67
+ {A table where the cases are parallel states — | Situation | Outcome | — carrying the exact wording where the wording is promised. Bullets otherwise:}
68
68
 
69
69
  - **{Noun-phrase label}:** {the guarantee or refusal, checkable by a person or a test.}
70
70
 
@@ -79,7 +79,7 @@ owns: ["packages/studio/src/server/devices/**"] # transitional — one region
79
79
  - **Commands:** {`nustack …`}
80
80
  - **Code roots:** {`packages/…/src/…/`}, directories where the graph should start
81
81
  - **Seams:** {`name`}, only where the roots would not lead to them
82
- - **Checklist:** `tests/{feature}.md`
82
+ - **Checklist:** `docs/tests/{feature}.md`, once the verification gate has written it
83
83
  - **See also:** {neighbour}: {why}
84
84
 
85
85
  No tables, routes or symbol rosters — those are the graph's.
@@ -2,7 +2,12 @@
2
2
 
3
3
  Truth document. Use for: the project's vocabulary — one name per concept, one line per name. Alphabetical. When the code uses a different name than the docs, record it in **In code** so readers can bridge; one concept never gets two doc names.
4
4
 
5
- ```
5
+ ```markdown
6
+ ---
7
+ type: glossary
8
+ description: "{at most 300 characters: what this document settles and where its boundary sits}"
9
+ ---
10
+
6
11
  # Glossary
7
12
 
8
13
  | Term | Meaning | In code |
@@ -2,7 +2,7 @@
2
2
 
3
3
  Record. Use for: the account an **unattended or multi-session build** leaves the person who owns it — written by the orchestrating session as its last act, before the owner's first decision, read in one sitting. It is a **decision queue, an undo manual and a resume file**, in that order: is it done · what must I decide today · what escaped the repository and how do I undo it · can I see it working · what was decided for me and how do I overturn it · what is red and whose it is. Everything below the divider is for the next session, not the owner. It is not a pull-request description (which argues for a diff), not a changelog entry (which carries refinement context) and not a plan (which is frozen). It is mutable while `status: open` — a successor that re-proves a state line corrects it in place and appends one Timeline row — and **freezes when the owner has acted on § 1 (`status: accepted`)**; a correction after that is a new dated hand-over linking back. Raw artefacts (plans, hand-offs, notes) live in a same-named folder beside it.
4
4
 
5
- Required: **Verdict**, **Decide today**, **Live-world ledger** (even when empty), **See it work**, **Decided for you**, **Red board**, **What was built**, **Proof**, **State**, **Open loops**, **Artefacts & mandate**. Optional: Left alone, Discoveries, Debt, Cost, Timeline.
5
+ Required: **Verdict**, **Owner decisions due**, **Live-world ledger** (even when empty), **Ten-minute walkthrough**, **Rulings on the owner's behalf**, **Red board**, **What was built**, **Proof**, **State**, **Open loops**, **Artefacts & mandate**. Optional: Untouched scope, Discoveries, Deferrable debt, Cost, Timeline.
6
6
 
7
7
  **Reading order is act → verify → understand.** Owner half, ~20 minutes: Verdict (1) · § 1 (2) · § 2 (2) · § 3 (10, at the product) · § 4 (3) · § 5–6 (2). Successor half, read when the job arrives: § 8–14 (~10).
8
8
 
@@ -31,17 +31,17 @@ prs:
31
31
  | Built | {N} units · {N} plans · ledger rows {N}, discharged {N}, blocked {N} |
32
32
  | Proof | {N} tests pass / {N} fail — on `{sha}`, verified {HH:MM} |
33
33
  | Decide today | **{N}** — § 1 |
34
- | Touched the live world | **{N}** acts, **{N}** you cannot undo — § 2 |
34
+ | Touched the live world | **{N}** acts, **{N}** irreversible — § 2 |
35
35
  | Red | {N} mine · {N} pre-existing · {N} environment — § 5 |
36
36
  | See it work | {N} min — § 3 |
37
37
  | Taken alone | {N} decisions, {N} stops filed of {N} — § 4 |
38
38
 
39
39
  **Start here:** `{the one command that brings the reader's machine to the state everything below describes}`
40
- **If you only act on one thing:** {act} — by {YYYY-MM-DD}, or {consequence}.
40
+ **Single most urgent act:** {act} — by {YYYY-MM-DD}, or {consequence}.
41
41
 
42
- ## 1. Decide today
42
+ ## 1. Owner decisions due
43
43
 
44
- | # | Decision or act | Why today | If you say nothing | Decide by | Do it (exact) | Evidence |
44
+ | # | Decision or act | Why today | Default on silence | Decide by | Do it (exact) | Evidence |
45
45
  | --- | --- | --- | --- | --- | --- | --- |
46
46
  | 1 | {one line, no mechanism} | {what a week costs} | {the outcome silence produces} | {date} | `{command}` / {PR link} / {UI path} | `{path:line · sha · PR}` |
47
47
 
@@ -55,19 +55,19 @@ Everything that left the repository, hardest to undo first. Verified {HH:MM}.
55
55
 
56
56
  **Did not happen, and the proof:** {claim} — `{command}`.
57
57
 
58
- ## 3. See it work in ten minutes
58
+ ## 3. Ten-minute walkthrough
59
59
 
60
- **Before you start:** `{command}` · **Sign in as:** {who} · **Total:** {N} min
60
+ **Prerequisite:** `{command}` · **Sign in as:** {who} · **Total:** {N} min
61
61
 
62
- | # | Do (URL → click) | You should see | It proves | If not |
62
+ | # | Do (URL → click) | Expected result | It proves | If not |
63
63
  | --- | --- | --- | --- | --- |
64
64
  | 1 | {url} → {action} | {an observable a person can be wrong about} | {unit from § 6} | {§ 5 row, or "file it — new"} |
65
65
 
66
- ## 4. Decided for you
66
+ ## 4. Rulings on the owner's behalf
67
67
 
68
68
  Each was taken because waiting would have stopped the run. Sorted by cost to reverse.
69
69
 
70
- | # | I decided | Instead of | Why | Authority | Landed at | Overturn — exact | If you say nothing | Hardens when |
70
+ | # | Ruling | Instead of | Why | Authority | Landed at | Overturn — exact | Default on silence | Hardens when |
71
71
  | --- | --- | --- | --- | --- | --- | --- | --- | --- |
72
72
  | D-1 | {the ruling} | {the alternative, fairly} | {the constraint} | {owner said so HH:MM "…" / auto-ruled as recommended / taken alone — by {agent · model}} | `{file:line}` | `{edit or command}` | {default} | {event} |
73
73
 
@@ -85,7 +85,7 @@ Each was taken because waiting would have stopped the run. Sorted by cost to rev
85
85
  | --- | --- | --- | --- |
86
86
  | {name} | {one clause, behaviour before mechanism} | {branch · PR · release} | {suite + counts, or "driven only", or empty} |
87
87
 
88
- ## 7. Left alone
88
+ ## 7. Untouched scope
89
89
 
90
90
  | Thing | State | Why untouched |
91
91
  | --- | --- | --- |
@@ -126,13 +126,13 @@ Present tense; every row true of `as_of_commit`, and every row re-provable by it
126
126
  | --- | --- | --- | --- | --- | --- |
127
127
  | L-1 | {present tense} | {session / owner / external} | `{command}` or {the question, with the default in force} | {id / —} | `{path:line}` |
128
128
 
129
- ## 11. Discoveries — do not pay for these twice
129
+ ## 11. Discoveries
130
130
 
131
131
  | # | Trap | The truth | Cost paid | Guard |
132
132
  | --- | --- | --- | --- | --- |
133
133
  | X-1 | {what it looks like from outside} | {present-tense fact} | {hours / runs} | `{command}` or `none — {what would hold it}` |
134
134
 
135
- ## 12. Debt and can wait
135
+ ## 12. Deferrable debt
136
136
 
137
137
  | # | What | Why not now | Re-open when | Parked at |
138
138
  | --- | --- | --- | --- | --- |
@@ -160,15 +160,15 @@ Present tense; every row true of `as_of_commit`, and every row re-provable by it
160
160
  ## Field rules
161
161
 
162
162
  - **Verdict (≤14 lines).** One token from the closed set — `DONE` · `DONE, NEEDS YOUR CALLS` · `PARTIAL` · `STOPPED AT BUDGET` · `FAILED` — first in the body; a paragraph before it is a format violation. The scoreboard is always the same seven rows in that order, and a zero is written `0` — `Touched the live world: 0` is one of the most valuable lines the file can carry. `Start here` is exactly one command.
163
- - **§ 1 Decide today (≤7 rows).** Owner-only acts, sorted by cost of deferral descending. `Do it (exact)` is a command, a link or a literal UI path — `git revert -m 1 {sha}`, never "revert the merge". `If you say nothing` is mandatory and honest. **A decision has an alternative and belongs in § 4; an act outside the repository with no alternative is a chore and belongs here.**
163
+ - **§ 1 Owner decisions due (≤7 rows).** Owner-only acts, sorted by cost of deferral descending. `Do it (exact)` is a command, a link or a literal UI path — `git revert -m 1 {sha}`, never "revert the merge". `Default on silence` is mandatory and honest. **A decision has an alternative and belongs in § 4; an act outside the repository with no alternative is a chore and belongs here.**
164
164
  - **§ 2 Live-world ledger.** Required even when empty — `none — nothing left the repository`, with the command that proves it. Sorted hardest-to-undo first, never chronologically. `Reversible` takes three values: `no` states what now exists in the world, `with loss` names what is lost, `yes` carries the command. An act reversible only forward (redeploy, reseed, a superseding publish) is `no`, and the forward path goes in `Undo`. A backup states its expiry; copying a volatile backup somewhere durable is row 1 of § 1.
165
- - **§ 3 See it work (≤6 steps, ≤10 min).** Every `You should see` is an observable a person can be wrong about — a number, a named control, a status code — never "the page loads". It is the only check the owner performs with his own eyes rather than on the build's word.
166
- - **§ 4 Decided for you (≤10 rows).** Sorted by cost to reverse. `Authority` takes exactly three values — the owner said so (with the words and the time) · auto-ruled as recommended · taken alone — recorded per decision, never per run: it is the distinction an unattended run exists to preserve. `Overturn` is an edit or a command. `Hardens when` names the event after which reversal stops being cheap. A ruling with no reversal path is a constraint, not a decision — it moves to § 12.
165
+ - **§ 3 Ten-minute walkthrough (≤6 steps, ≤10 min).** Every `Expected result` is an observable a person can be wrong about — a number, a named control, a status code — never "the page loads". It is the only check the owner performs with his own eyes rather than on the build's word.
166
+ - **§ 4 Rulings on the owner's behalf (≤10 rows).** Sorted by cost to reverse. `Authority` takes exactly three values — the owner said so (with the words and the time) · auto-ruled as recommended · taken alone — recorded per decision, never per run: it is the distinction an unattended run exists to preserve. `Overturn` is an edit or a command. `Hardens when` names the event after which reversal stops being cheap. A ruling with no reversal path is a constraint, not a decision — it moves to § 12.
167
167
  - **§ 5–7.** One home per fact: a red appears in § 5 even when a decision caused it, and the decision cites the row. `Mine?` is proved by the command or stash in `Proof`; `mine` is the default when no proof is offered. § 6 leads with behaviour, not plan slugs. § 7 exists so an owner scanning the repository does not mistake somebody else's branch for the run's debris.
168
168
  - **§ 8 Proof.** **An unproven claim is an empty cell, never a sentence** — prose has no empty cell to scan for. `Independent?` reads `no` whenever one agent authored both the code and its pin, or found, fixed and pinned the same defect, and names who. Ledger counts are parsed from the plan, never quoted from an agent's summary, so `blocked` cannot hide inside "discharged". Every `G-n` names the command that would close it.
169
169
  - **§ 9 State.** Present tense; a claim that cannot be re-proved by its `Re-prove` command does not belong here — it moves to § 15 as a dated event. Volatile things (`/tmp`, pid files, ports, tokens, browser connections) declare a lifetime and the command that makes them durable.
170
170
  - **§ 10–12.** A loop is a runnable command or a named question, never a noun phrase and never "investigate"; one needing a person's judgment states the question and the default in force. A discovery is a present-tense fact with a guard — "Workers Builds does not fire on a `dev` merge", not "we found that it didn't"; `none — {what would hold it}` is an honest guard that feeds the backlog. Debt names where it now lives, so this file can be deleted without losing it.
171
- - **§ 13–14.** Every uninstrumented number reads `unmeasured — {what would have measured it}`; a blank reports a cheaper run than the one that happened. **State whether the run's own corpus is version-controlled** — an untracked corpus is one `rm -rf` from being three PR descriptions, and archiving it is a § 1 row.
171
+ - **§ 13–14.** Every uninstrumented number reads `unmeasured — {what would measure it}`; a blank reports a cheaper run than the one that happened. **State whether the run's own corpus is version-controlled** — an untracked corpus is one `rm -rf` from being three PR descriptions, and archiving it is a § 1 row.
172
172
  - **Ids are stable and run-global** — `D-`, `G-`, `L-`, `X-`, `T-` — so a PR comment or a successor cites a row instead of re-describing it. A withdrawn row keeps its id and states what disproved it.
173
173
  - **Evidence is an address that outlives the run** — `path:line`, a 7-char sha, a PR number, a URL, or a command. A branch name is not a pointer; a `/tmp` log is not evidence — copy it into the record folder first.
174
174
  - **Blanket claims are banned.** "All suites green", "every ledger discharged", "nothing was deployed" carry a count and the sha they are true of, or they become a `G-n` row.
@@ -1,4 +1,4 @@
1
- # Implementation Map (docs/operations/implementation-map.md)
1
+ # Implementation map (docs/operations/implementation-map.md)
2
2
 
3
3
  Truth document. Use for: **the cold-start execution contract of a project being built from its documented design** — one per repo, at `docs/operations/implementation-map.md`. It is authored by the **executing session at build start**, never generated at design time: build order is derived from the repo's actual feature docs and their stated dependencies, and a design-time prediction of it goes stale the day reality disagrees. It lives in operations because it says *how to proceed*, not *what is true of the design*.
4
4
 
@@ -8,9 +8,14 @@ Truth document. Use for: **the cold-start execution contract of a project being
8
8
  - **A wave's done criterion is observable** — its plans' verification gates passed, the suite green, a named surface driveable. Never "feels complete".
9
9
  - **Authority order names this repo's own docs, most specific wins.** A contradiction between documents is repaired in the owning truth doc *before* code — never reinterpreted while planning.
10
10
  - **Plans are records, not an execution queue.** The map points at the active wave's dated plan; historical plans are read only when a truth doc cites them as provenance.
11
- - **Update in place as waves complete** — the map states the current build position in present tense; the journey lives in the plans and changelog entries.
11
+ - **Update in place as waves complete** — the map names the active wave and links its plan; which waves are finished is read from their plans' `Status:`, the progress record, never restated here.
12
+
13
+ ```markdown
14
+ ---
15
+ type: implementation-map
16
+ description: "{at most 300 characters: what this document settles and where its boundary sits}"
17
+ ---
12
18
 
13
- ```
14
19
  # {Project} implementation map
15
20
 
16
21
  ## Cold-start contract
@@ -36,7 +41,7 @@ When documents disagree:
36
41
  | 1 | {docs/features/x.md, docs/features/y.md} | — | {observable criterion} |
37
42
  | 2 | {…} | 1 | {…} |
38
43
 
39
- ## Current position
44
+ ## Active wave
40
45
 
41
- {One line per wave: complete · in progress ([plan](../history/plans/YYYY-MM-DD-slug.md)) · pending.}
46
+ {The wave being built, linked to its open plan ([plan](../history/plans/YYYY-MM-DD-slug.md)).}
42
47
  ```
@@ -1,13 +1,13 @@
1
1
  # Journal (docs/history/journal.md)
2
2
 
3
- Record — append-only. Use for: durable mid-execution knowledge — a fact discovered while building that some owning doc will eventually carry, captured the moment it exists so it survives the session. A row is resolved by landing in its owning doc: the row is deleted and the changelog entry cites it. The file stays short by construction; a journal that only grows is a queue nobody drains.
3
+ Queue: rows are appended, never rewritten, and deleted once resolved. Use for: durable mid-execution knowledge — a fact discovered while building that some owning doc will eventually carry, captured the moment it exists so it survives the session. A row is resolved by landing in its owning doc: the row is deleted and the changelog entry cites it. The file stays short by construction; a journal that only grows is a queue nobody drains.
4
4
 
5
5
  One line per fact. Never narrative, never progress notes (progress lives in the plan), never user preferences (those go to the runtime's memory store).
6
6
 
7
7
  ```
8
8
  # Journal
9
9
 
10
- Append-only capture of mid-execution knowledge — one line per fact, written the moment it exists, resolved by landing in its owning doc (delete the row, cite it in the changelog entry). Format: `YYYY-MM-DD · <area> · <one-line fact> → lands-in: <owning doc | backlog | memory>`
10
+ Capture of mid-execution knowledge — one line per fact, written the moment it exists, resolved by landing in its owning doc (delete the row, cite it in the changelog entry). Format: `YYYY-MM-DD · <area> · <one-line fact> → lands-in: <owning doc | backlog | memory>`
11
11
 
12
12
  - YYYY-MM-DD · {area} · {one-line fact} → lands-in: {owning doc | backlog | memory}
13
13
  ```
@@ -1,6 +1,6 @@
1
1
  # Scaffold: docs/memory/main.md
2
2
 
3
- Baseline scaffold — created if missing (the `maintenance` agent's baseline calls this). Target file: `docs/memory/main.md`.
3
+ Queue. Baseline scaffold, created if missing by the `maintenance` agent's baseline. Target file: `docs/memory/main.md`. Entries are appended, and retired by deletion when a document or the code comes to say the same thing, or a later entry replaces them; an entry is never edited to stay current.
4
4
 
5
5
  ```
6
6
  ---
@@ -11,7 +11,7 @@ description: Project-wide patterns and conventions confirmed in this codebase. P
11
11
 
12
12
  # Main Agent — Project Memory
13
13
 
14
- Append entries below, oldest at bottom. Format:
14
+ Append entries below, newest at the bottom. Format:
15
15
 
16
16
  ## YYYY-MM-DD — {topic}
17
17
 
@@ -1,4 +1,4 @@
1
- # Migration Runbook (docs/history/migrations/YYYY-MM-DD-{slug}.md)
1
+ # Migration runbook (docs/history/migrations/YYYY-MM-DD-{slug}.md)
2
2
 
3
3
  Record. Use for: a **one-shot** migration, upgrade, or data operation — authored before execution, executed once, then outcome-stamped and frozen. Supporting scripts live beside it in a same-named folder when needed (`YYYY-MM-DD-{slug}/`).
4
4