@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
@@ -6,27 +6,26 @@ this reference carries the routing judgment.
6
6
 
7
7
  The pipeline, end to end:
8
8
 
9
- ```
10
- converge → final sync/compose → manifest (Status: proposed)
11
- → ONE user approval (Status: approved)
12
- → apply, reading both sides of every destination (Status: applied)
13
- → uselessness test → gaps? new Round, back to approval
14
- → move to docs/history/brainstorms/{topic}/ ← the completion marker
15
- → offer: delete or commit — the user decides
16
- ```
17
-
18
- **Harvest fails loud, never silent.** The move happens only after the full apply passes the
19
- uselessness test. A partial apply — twin death, session kill, anything — leaves the folder
20
- visibly unfinished in `docs/research/` and the user restarts the stop. The pipeline never resumes
21
- silently from a half-applied state, and canonical docs are never written without an approved
22
- manifest (gap-round fixes included).
9
+ 1. Converge.
10
+ 2. Final sync and compose → manifest (`Status: proposed`).
11
+ 3. **One** user approval (`Status: approved`).
12
+ 4. Apply, reading both sides of every destination (`Status: applied`).
13
+ 5. Uselessness test — gaps open a new `Round` and return to step 3.
14
+ 6. Move to `docs/history/brainstorms/{topic}/` — the completion marker.
15
+ 7. Offer: delete or commit — the user decides.
16
+
17
+ **Harvest fails loud, never silent.** The move happens **only** after the full apply passes the
18
+ uselessness test. A partial apply — twin death, session kill, anything — leaves the folder visibly
19
+ unfinished in `docs/research/`, and the user restarts the stop. The pipeline **never** resumes
20
+ silently from a half-applied state, and **never** writes a canonical doc without an approved
21
+ manifest, gap-round fixes included.
23
22
 
24
23
  ## The routing map
25
24
 
26
- Route each piece of the surface by scope. Format every artifact via the `documentation` skill;
27
- where it is unavailable, fall back to own formatting and record which path ran in the manifest.
28
- Read **both sides** of every destination before writing — the destination's current content is a
29
- contract, not a blank page.
25
+ Route each piece of the surface by scope. Format every artifact through the `documentation` skill;
26
+ where it is unavailable, format it yourself and record in the manifest which path ran. Read **both
27
+ sides** of every destination before writing — the destination's current content is a contract, not
28
+ a blank page.
30
29
 
31
30
  | What | Goes to | Shape |
32
31
  | --- | --- | --- |
@@ -36,7 +35,7 @@ contract, not a blank page.
36
35
  | **Domain-model changes** | The living domain-model doc | The information-architecture contract the `boundary` skill reads at the next plan check |
37
36
  | **Still-open (parked) forks** | The repo's open-questions home | Each with a *resolution-lands-in* pointer |
38
37
  | **Backlog items** | The repo backlog | See the scope-guard trio below |
39
- | **Fragments** | Their destinations — they were drafted in destination format precisely so this is a move, not a translation | Merge per the destination's existing structure |
38
+ | **Fragments** | Their destinations — drafted in destination format, so this is a move, not a translation | Merge per the destination's existing structure |
40
39
 
41
40
  **The scope-guard trio** disambiguates everything that isn't a commitment:
42
41
 
@@ -47,13 +46,12 @@ contract, not a blank page.
47
46
 
48
47
  **Directional steering is not feature truth.** A harvested principle informs many decisions and
49
48
  changes slowly; a feature fact belongs to its feature doc and changes at code speed. The harvest
50
- **links** between the steering layer and feature docs — it never duplicates prose across them,
51
- and it never invents a new top-level home for principles (they land in the *existing* living
52
- docs).
49
+ **links** between the steering layer and feature docs — **never** duplicates prose across them, and
50
+ **never** invents a new top-level home for principles; they land in the *existing* living docs.
53
51
 
54
- Rejection rationale and reasoning chains must have explicit destinations — options-considered
55
- sections, decision changelogs — or the uselessness test fails: the folder may never be deleted
56
- into a knowledge loss.
52
+ Rejection rationale and reasoning chains **must** have explicit destinations — options-considered
53
+ sections, decision changelogs — or the uselessness test fails: the folder is **never** deleted into
54
+ a knowledge loss.
57
55
 
58
56
  ## The uselessness test
59
57
 
@@ -68,49 +66,53 @@ The deletion-safety gate: after the apply, the post-harvest living docs alone mu
68
66
  - **The task:** reconstruct the design — thesis, commitments, reasoning, declined branches — from
69
67
  the allowed paths only.
70
68
  - **Grading:** the twin diffs the reconstruction against the ledger and thesis and names every
71
- gap; the session-replay evals audit the grading itself. Anything unrecoverable is a named
72
- harvest gap → recorded in the manifest (`Result: fail`), fixes enter a new manifest `Round`,
73
- approved like the first. Iterate until the folder is redundant.
69
+ gap; the session-replay evals audit the grading itself. Anything unrecoverable is a named harvest
70
+ gap, recorded in the manifest (`Result: fail`); its fixes enter a new manifest `Round`, approved
71
+ like the first. Iterate until the folder is redundant.
74
72
 
75
73
  ## The move, and the offer
76
74
 
77
- When the detector's move gate is clean: delete `ops/` entirely (transcript-grade residue never
78
- enters git), `git mv` the folder to `docs/history/brainstorms/{topic}/`, set
79
- `Status: harvested`, and update both indexes (row out of `docs/research/Readme.md`, row into
80
- `docs/history/brainstorms/Readme.md`). The move is the completion marker — a folder still under
75
+ When the detector's move gate is clean:
76
+
77
+ 1. Delete `ops/` entirely — transcript-grade residue **never** enters git.
78
+ 2. `git mv` the folder to `docs/history/brainstorms/{topic}/`.
79
+ 3. Set `Status: harvested` in `state.md`.
80
+
81
+ Update no index — none keeps a row per session. The move is the completion marker: a folder under
81
82
  `docs/research/` is by definition unfinished, which is exactly what the maintenance census reads.
82
83
 
83
84
  Then the offer, relayed by the facilitator: **delete the moved folder, or commit it.** The user
84
- decides; the design assumes deletion — nothing anywhere may depend on the folder surviving.
85
- Committing is the explicit way to keep git-history forensics; an uncommitted folder deleted here
86
- is gone, and that residual is accepted by design.
85
+ decides; the design assumes deletion — **nothing** anywhere may depend on the folder surviving.
86
+ Committing is the explicit way to keep git-history forensics; an uncommitted folder deleted here is
87
+ gone, and that loss is accepted by design.
87
88
 
88
89
  ## Field lessons — apply
89
90
 
90
- Measured on live harvests; each is the rule, distilled.
91
+ Each is a rule measured on live harvests.
91
92
 
92
93
  - **Run the move gate clean immediately before the move and treat that as the verdict** — the
93
94
  gate's checks read `ops/`, which the move deletes, so a post-move re-run fails by construction.
94
- Verify the post-move state by hand: `Status: harvested`, no `ops/`, both index rows,
95
- `check-links` clean. And **distil the process record into `state.md` before the move** — the
96
- sync log dies with `ops/`, and a ten-line dispatch summary is what separates a record that shows
97
- its workings from one that asserts its commitments from nowhere.
95
+ Verify the post-move state by hand: `Status: harvested`, no `ops/`, `check-links` clean.
96
+ - **Distil the process record into `state.md` before the move** — the sync log dies with `ops/`,
97
+ and a ten-line dispatch summary separates a record that shows its workings from one that asserts
98
+ its commitments from nowhere.
98
99
  - **Uncommitted harvest artifacts are deleted, not deprecated** — deprecate-in-place protects
99
100
  readers holding a pointer, and a never-committed file has none; a tombstone for a
100
101
  twenty-minute-old file is ceremony.
101
- - **Audit the *other* decision records for impact at manifest time** — the manifest routes
102
- through the docs the commitments name and will not think of the neighbours. The test is
103
- commitment-level, not textual (grep finds nothing); read each AD's Decision and Open Questions
104
- against the new commitments, and report the unimpacted verdicts with evidence too.
105
- - **A manifest enumerates sites; the file you open contains more of them.** Fix every
106
- same-doctrine site inside a file the manifest already opens — a self-contradicting document is
107
- worse than a wider diff — but never wander into an unnamed file: that becomes a backlog row.
108
- Say which you did, per row, in the application record.
102
+ - **At manifest time, read every existing AD's Decision and Open Questions against the new
103
+ commitments.** A harvest routes only through the docs its commitments name, and the test is
104
+ commitment-level, not textual — grep finds nothing, because the ledger never names the
105
+ neighbours. Report the unimpacted verdicts with their evidence too.
106
+ - **A manifest row names one site; the file you open holds more.** Fix every same-doctrine site
107
+ inside a file the manifest already opens — a self-contradicting document is worse than a wider
108
+ diff — but **never** wander into an unnamed file: that becomes a backlog row, because a canonical
109
+ doc is not rewritten outside an approved scope. Say which you did, per row, in the application
110
+ record.
109
111
  - **Re-run the uselessness test when the destination *set* changes**, not only when content does —
110
112
  a consolidation that moves referrers produces a document set no cold reader has graded. The
111
113
  recurring find: a truth doc stating a decided-but-unbuilt mechanism in the present tense; the
112
114
  fix is one clause naming the unbuilt prerequisite.
113
- - **Retirement wording beats suppression.** doc-lint's heuristics block the honest retirement
115
+ - **Retirement wording beats suppression.** `doc-lint`'s heuristics block the honest retirement
114
116
  sentence (`superseded by`, `no longer`); rephrase with no loss of meaning — "retired by
115
117
  AD-00N", "is not the product's position", "lives in a package that is gone" — and reach for
116
118
  `doc-lint-disable` only when the banned phrase is itself the claim.
@@ -135,14 +137,6 @@ Measured on live harvests; each is the rule, distilled.
135
137
  keeping its Decision, Why and Declined table — and a separate AD only for a genuinely different
136
138
  subject. Link with section anchors where a bare pointer loses precision, and verify anchors by
137
139
  hand: the link checker strips them before resolving.
138
- - **At manifest time, read every existing AD's Decision and Open Questions against the new
139
- commitments.** A harvest routes only through the docs its commitments name, and grep finds
140
- nothing because the ledger never names the others; report the unimpacted verdicts with their
141
- evidence too.
142
- - **A manifest row names one site; the file you open holds more.** Fix the same-doctrine sites
143
- inside a file the manifest already opens, but never wander into an unnamed file — that becomes a
144
- backlog row, because a canonical doc is not rewritten outside an approved scope. Say which you did,
145
- per row, in the application record.
146
140
  - **The per-file lint hook reads intermediate states.** It appends queue rows from mid-edit files;
147
141
  run the linter over the whole edited set before declaring the apply done, and leave the stale
148
142
  rows for the facilitator rather than draining them.
@@ -2,35 +2,36 @@
2
2
 
3
3
  Load when: bootstrapping a session, writing any working-surface file, dispatching the twin, or
4
4
  interpreting detector output. The detector (`scripts/detector.mjs`) is the mechanical half of this
5
- contract — every rule below that carries a rule ID is machine-checked; everything else is the
6
- twin's semantic judgment.
5
+ contract: every rule below carrying a rule ID is machine-checked; everything else is the twin's
6
+ semantic judgment.
7
7
 
8
8
  ## Folder layout
9
9
 
10
- ```
11
- docs/research/{topic}-brainstorm/ ← open session (kebab-case topic slug)
12
- ├── state.md ← anchor + aspect map (twin-written)
13
- ├── thesis.md ← composed claim → argument → what changed (twin-written)
14
- ├── forks.md ← open questions with close conditions (twin-written)
15
- ├── ledger.md ← commitments (twin-written)
16
- ├── basis/ ← frozen entry material (facilitator-written once, at intake)
17
- ├── fragments/ ← harvest-native fragments (twin-written; materialize on
18
- │ first real content, drafted in destination format)
19
- └── ops/ ← untracked capture layer (deleted at stop)
20
- ├── .gitignore ← contains `*` — ops/ never enters git [BS-OPS-01/02]
21
- ├── capture.md ← facilitator's raw append ledger (its ONLY write)
22
- ├── sync-log.md ← paired twin-dispatch log
23
- └── manifest.md ← harvest manifest (created by the stop pipeline)
24
- ```
25
-
26
- On a passed harvest the folder **moves** to `docs/history/brainstorms/{topic}/` (ops/ deleted
27
- first) — the move is the completion marker; the user then deletes or commits it. A folder still
10
+ An open session is `docs/research/{topic}-brainstorm/` (kebab-case topic slug):
11
+
12
+ | Path | Holds | Writer |
13
+ | --- | --- | --- |
14
+ | `state.md` | anchor + aspect map | twin |
15
+ | `thesis.md` | composed claim → argument → what changed | twin |
16
+ | `forks.md` | open questions with close conditions | twin |
17
+ | `ledger.md` | commitments | twin |
18
+ | `basis/` | frozen entry material | facilitator, once, at intake |
19
+ | `fragments/` | harvest-native fragments, drafted in destination format; created on first real content | twin |
20
+ | `ops/` | the untracked capture layer, deleted at stop | — |
21
+ | `ops/.gitignore` | `*` — `ops/` **never** enters git [BS-OPS-01/02] | facilitator |
22
+ | `ops/capture.md` | the facilitator's raw append ledger | facilitator |
23
+ | `ops/sync-log.md` | the paired twin-dispatch log | both (see below) |
24
+ | `ops/manifest.md` | the harvest manifest | twin, in the stop pipeline |
25
+
26
+ On a passed harvest the folder **moves** to `docs/history/brainstorms/{topic}/`, `ops/` deleted
27
+ first. The move is the completion marker; the user then deletes or commits the folder. A folder
28
28
  under `docs/research/` is by definition unfinished.
29
29
 
30
- **Write protocol (one writer per file):** the facilitator appends to `ops/capture.md` and writes
31
- the initial `basis/` copy plus the sync-log *dispatch* lines — nothing else, ever. The twin writes
32
- every other file, at gates. The user may hand-edit anything; the twin diffs each file against its
33
- own last compose before rewriting and folds foreign edits as first-class user signal.
30
+ **Write protocol (one writer per file; the sync log is paired):** the facilitator bootstraps `ops/` at intake, appends to
31
+ `ops/capture.md`, and writes the initial `basis/` copy plus the sync-log *dispatch* lines —
32
+ **nothing else, ever**. The twin writes every other file, at gates. The user may hand-edit anything;
33
+ the twin diffs each file against its own last compose before rewriting and folds foreign edits in
34
+ as first-class user signal.
34
35
 
35
36
  ## state.md
36
37
 
@@ -50,8 +51,8 @@ own last compose before rewriting and folds foreign edits as first-class user si
50
51
  - risks — failure modes and mitigations → none yet
51
52
  ```
52
53
 
53
- - `Status` transitions only forward: `open → stopping → harvested` (the twin flips `stopping` when
54
- the stop pipeline begins, `harvested` at the move). [BS-STATE-01]
54
+ - `Status` moves **only** forward: `open → stopping → harvested` — the twin sets `stopping` when the
55
+ stop pipeline begins and `harvested` at the move [BS-STATE-01].
55
56
  - The aspect map is derived per idea from the basis and edited by the user. Each aspect carries
56
57
  `→` refs to the content covering it: fork IDs (`F#`), ledger IDs (`D#`), `thesis`,
57
58
  `fragment:{name}`, or `none yet` (an open coverage gap — informational mid-session
@@ -70,8 +71,8 @@ Current as of: 2026-07-08T14:30Z
70
71
  ## What changed
71
72
  ```
72
73
 
73
- Composed prose, rewritten whole at every compose, never appended. The three sections and the
74
- stamp are mandatory [BS-THESIS-01]; the stamp must equal state.md's `Last compose`
74
+ Composed prose, rewritten whole at every compose, **never** appended. The three sections and the
75
+ stamp are mandatory [BS-THESIS-01]; the stamp must equal `state.md`'s `Last compose`
75
76
  [BS-COMPOSE-01]. At the manifest gate, `Last compose` must be later than the newest
76
77
  `ops/capture.md` entry — a compose over unsynced capture is stale [BS-COMPOSE-02].
77
78
 
@@ -89,8 +90,8 @@ Full self-contained prose in the user's framing.
89
90
  - IDs `F1, F2, …` unique, never reused [BS-FORK-01]. Status marker: `[open]` or
90
91
  `[parked → {destination}]`. Every fork carries `Closes when:` [BS-FORK-01].
91
92
  - `Raised by: twin (S#)` must cite a reconciled sync-log entry [BS-SYNC-02].
92
- - **A resolved fork's entry is deleted** by the twin — the resolving ledger entry's `Resolves:`
93
- field is the record. forks.md holds only open and parked forks; a ledger `Resolves: F3`
93
+ - **The twin deletes a resolved fork's entry** — the resolving ledger entry's `Resolves:` field is
94
+ the record. `forks.md` holds only open and parked forks; a ledger `Resolves: F3`
94
95
  coexisting with an open F3 is an inconsistency [BS-FORK-02]. Parked forks survive to the
95
96
  manifest, which must route each one [BS-MANIFEST-01].
96
97
  - The manifest gate requires zero `[open]` forks [BS-FORK-03].
@@ -115,10 +116,10 @@ Full self-contained prose in the user's framing.
115
116
 
116
117
  ## ops/capture.md
117
118
 
118
- The facilitator's per-turn append — its one write duty. Lowest possible bar: raw, unpolished,
119
- everything session-relevant from *both* sides (user substance and facilitator substance —
120
- diagnoses, informed rejections, definitions, reasoning chains), including residue judged not
121
- worth pillar filing. Format:
119
+ The facilitator's per-turn append. Lowest possible bar: raw, unpolished, everything
120
+ session-relevant from *both* sides (user substance and facilitator substance — diagnoses, informed
121
+ rejections, definitions, reasoning chains), including residue judged not worth pillar filing.
122
+ Format:
122
123
 
123
124
  ```markdown
124
125
  ---
@@ -127,8 +128,8 @@ worth pillar filing. Format:
127
128
  <raw notes for this turn>
128
129
  ```
129
130
 
130
- Turn IDs `T#` ascending with an ISO timestamp — the timestamp is what compose-freshness checks
131
- against [BS-COMPOSE-02]. Never distill here; distillation is the twin's job.
131
+ Turn IDs `T#` ascend, each with an ISO timestamp — the timestamp compose-freshness checks against
132
+ [BS-COMPOSE-02]. **Never** distill here; distillation is the twin's.
132
133
 
133
134
  ## ops/sync-log.md
134
135
 
@@ -140,7 +141,7 @@ S4 → reconciled | 2026-07-08T14:29Z | 4 edits · 2 new forks · 6 open · unto
140
141
  ```
141
142
 
142
143
  The **facilitator** writes the dispatch line as it dispatches; the **twin** appends the result
143
- line (`reconciled` or `failed`) on return — no single author holds both sides. Every dispatch
144
+ line (`reconciled` or `failed`) on return — **never** one author for both sides. Every dispatch
144
145
  line must acquire a result line; only the newest entry may be unpaired (in flight) [BS-SYNC-01].
145
146
  A `failed` result is surfaced to the user at the next turn break and re-run at the next gate.
146
147
 
@@ -181,8 +182,13 @@ the move to history requires a recorded passing uselessness test [BS-USELESS-01]
181
182
  - `move` — adds the post-apply gates (manifest applied, uselessness pass recorded, no links into
182
183
  scaffolding); the folder may not move while any fail.
183
184
 
184
- Exit code 0 = clean, 1 = violations (listed with rule IDs), 2 = unusable input. A run always
185
- prints output — per-rule lines plus a `clean`/`failing` summary (or a usage/error message);
186
- **exit 0 with empty output means the detector never executed** and is a failure, never a pass. Rules degrade
187
- gracefully: no git context ⇒ BS-OPS-02 reports `skipped`, never blocks. Rule IDs are stable —
188
- consumers (the twin, the evals, the maintenance census) key on them.
185
+ | Exit | Meaning |
186
+ | --- | --- |
187
+ | `0` | clean |
188
+ | `1` | violations, listed with rule IDs |
189
+ | `2` | unusable input |
190
+
191
+ A run always prints output — per-rule lines plus a `clean`/`failing` summary, or a usage/error
192
+ message. **Exit 0 with empty output means the detector never executed** — a failure, **never** a
193
+ pass. Rules degrade gracefully: with no git context, `BS-OPS-02` reports `skipped` and never blocks.
194
+ Rule IDs are stable — the twin, the evals, and the maintenance census key on them.
@@ -5,20 +5,20 @@ description: Use when the organization wants to see or tune spend - "what are we
5
5
 
6
6
  # Cost Report — aggregate, flag, propose
7
7
 
8
- The spend policy's audit surface. Reads only in-repo records — escalation entries and the changelog; it queries no billing API and parses no session logs.
8
+ The spend policy's audit surface. It reads only in-repo records — the changelog and the escalation entries in it. **Never** query a billing API or parse session logs; a question only those could answer (raw token counts, per-session spend) is out of scope — say so rather than estimate.
9
9
 
10
10
  ## Procedure
11
11
 
12
- 1. **Collect** every entry in `docs/history/changelog/` carrying `Class: escalation` since the last report (the `escalate` skill owns that format — match its keyword, don't restate its shape).
13
- 2. **Aggregate by routing row**: per task type — escalations up, demotions passed, one-off vs. standing promotions.
12
+ 1. **Collect** every entry in `docs/history/changelog/` carrying `Class: escalation` since the last report, plus the tier usage the other entries record. Match on the keyword only — the `escalate` skill owns the entry's shape.
13
+ 2. **Aggregate by routing row**: per task type, count escalations up, demotions passed, and one-off vs. standing promotions.
14
14
  3. **Flag drift**:
15
- - A row with repeated upward escalations ⇒ the tier is under-provisioned; propose moving the row up.
16
- - A row whose demotion experiments keep passing ⇒ over-provisioned; propose moving it down.
17
- - Frontier dispatches with no matching row or escalation entry ⇒ a routing-guardrail violation to surface, not to normalize.
18
- 4. **Report in chat**: a short table — row · tier · escalations · demotions · proposal — followed by the proposed routing-table edits. **Propose, never apply**: the routing table is `CLAUDE.md` policy and moves by its own reviewed edit; standing proposals also land in `docs/history/backlog.md`.
15
+ - Repeated upward escalations on a row ⇒ the tier is under-provisioned; propose moving the row up.
16
+ - Demotion experiments that keep passing on a row ⇒ over-provisioned; propose moving it down.
17
+ - A frontier dispatch with no matching row or escalation entry ⇒ a routing-guardrail violation. Surface it; never fold it into the row's normal usage.
18
+ 4. **Report in chat**: a table — row · tier · escalations · demotions · proposal — then the proposed routing-table edits. Append each standing proposal to `docs/history/backlog.md`.
19
19
 
20
20
  ## Rules
21
21
 
22
- - **Evidence or silence** — every proposal cites its entries by filename; no vibes-based rebalancing.
23
- - **This skill measures the policy, not the people.** Escalation counts tune the table; they are never framed as individual performance data.
24
- - Tier-usage questions the changelog cannot answer (raw token counts, per-session spend) are out of scope by design — recorded as a deferral in the harness doc, re-evaluated when a consumer actually needs them.
22
+ - **Propose, never apply.** The routing table is `CLAUDE.md` policy and moves only by its own reviewed edit.
23
+ - **Evidence or silence** — every proposal cites its entries by filename.
24
+ - **Measure the policy, never the people.** Escalation counts tune the table; never frame them as individual performance data.