@nurix/etna 0.20.36 → 0.20.38

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 (212) hide show
  1. package/data/catalog/rules/frontend.md +5 -5
  2. package/data/catalog/rules/pnpm.md +2 -2
  3. package/data/catalog/skills/nustack/SKILL.md +2 -2
  4. package/data/catalog/skills/nustack/references/cli-design.md +35 -35
  5. package/data/catalog/skills/nustack/references/monorepo-master-list.md +6 -6
  6. package/data/catalog/skills/nustack/references/monorepo-setup.md +13 -13
  7. package/data/catalog/skills/nustack/references/publishing.md +40 -39
  8. package/data/harness-index.json +1 -1
  9. package/data/harnesses/code/harness.json +2 -2
  10. package/data/harnesses/code/hooks/approved-packages.md +1 -2
  11. package/data/harnesses/code/rules/frontend.md +5 -5
  12. package/data/harnesses/code/rules/pnpm.md +2 -2
  13. package/data/harnesses/code/skills/boundary/SKILL.md +33 -22
  14. package/data/harnesses/code/skills/boundary/references/index.md +2 -4
  15. package/data/harnesses/code/skills/boundary/references/mechanisms.md +3 -10
  16. package/data/harnesses/code/skills/boundary/references/packs/build-config-runtime.md +1 -1
  17. package/data/harnesses/code/skills/boundary/references/packs/frontend.md +17 -17
  18. package/data/harnesses/code/skills/boundary/references/packs/generic-tail.md +1 -1
  19. package/data/harnesses/code/skills/brainstorm/README.md +11 -13
  20. package/data/harnesses/code/skills/brainstorm/SKILL.md +150 -132
  21. package/data/harnesses/code/skills/brainstorm/references/doctrine.md +48 -51
  22. package/data/harnesses/code/skills/brainstorm/references/harvest.md +51 -56
  23. package/data/harnesses/code/skills/brainstorm/references/session-schema.md +48 -42
  24. package/data/harnesses/code/skills/design/SKILL.md +31 -35
  25. package/data/harnesses/code/skills/design/components/charts.md +121 -43
  26. package/data/harnesses/code/skills/design/components/collections.md +209 -41
  27. package/data/harnesses/code/skills/design/components/feedback.md +86 -25
  28. package/data/harnesses/code/skills/design/components/hooks.md +198 -12
  29. package/data/harnesses/code/skills/design/components/index.md +93 -71
  30. package/data/harnesses/code/skills/design/components/inputs.md +249 -157
  31. package/data/harnesses/code/skills/design/components/layout.md +98 -38
  32. package/data/harnesses/code/skills/design/components/media.md +46 -25
  33. package/data/harnesses/code/skills/design/components/motion.md +56 -46
  34. package/data/harnesses/code/skills/design/components/navigation.md +54 -15
  35. package/data/harnesses/code/skills/design/components/overlays.md +51 -41
  36. package/data/harnesses/code/skills/design/components/setup.md +84 -5
  37. package/data/harnesses/code/skills/design/components/typography.md +72 -22
  38. package/data/harnesses/code/skills/design/components/utils.md +47 -13
  39. package/data/harnesses/code/skills/design/data/chrome/board-column.md +12 -12
  40. package/data/harnesses/code/skills/design/data/chrome/data-table.md +6 -6
  41. package/data/harnesses/code/skills/design/data/chrome/side-panel.md +15 -15
  42. package/data/harnesses/code/skills/design/data/chrome/sidebar.md +25 -25
  43. package/data/harnesses/code/skills/design/data/chrome/stat-cards.md +22 -22
  44. package/data/harnesses/code/skills/design/data/chrome/topbar.md +12 -12
  45. package/data/harnesses/code/skills/design/data/iconography.md +2 -2
  46. package/data/harnesses/code/skills/design/references/compose.md +14 -16
  47. package/data/harnesses/code/skills/design/references/emission.md +6 -6
  48. package/data/harnesses/code/skills/design/references/foundations.md +5 -5
  49. package/data/harnesses/code/skills/design/references/intake.md +6 -6
  50. package/data/harnesses/code/skills/design/references/object-pass.md +1 -1
  51. package/data/harnesses/code/skills/design/references/ship-gate.md +5 -5
  52. package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +4 -4
  53. package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +1 -1
  54. package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +1 -1
  55. package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +1 -1
  56. package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +1 -1
  57. package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +2 -2
  58. package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +1 -1
  59. package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +1 -1
  60. package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +1 -1
  61. package/data/harnesses/code/skills/design/scripts/README-validator.md +20 -8
  62. package/data/harnesses/code/skills/design/scripts/validate-design-md.mjs +15 -10
  63. package/data/harnesses/code/skills/documentation/SKILL.md +5 -5
  64. package/data/harnesses/code/skills/documentation/references/examples.md +22 -22
  65. package/data/harnesses/code/skills/documentation/references/frontmatter.md +3 -3
  66. package/data/harnesses/code/skills/documentation/references/instruction-style.md +3 -3
  67. package/data/harnesses/code/skills/documentation/references/source-comments.md +3 -3
  68. package/data/harnesses/code/skills/documentation/references/style-guide.md +5 -5
  69. package/data/harnesses/code/skills/documentation/references/untemplated.md +8 -8
  70. package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +3 -2
  71. package/data/harnesses/code/skills/documentation/templates/Readme.md +1 -1
  72. package/data/harnesses/code/skills/documentation/templates/acceptance-criteria.md +1 -1
  73. package/data/harnesses/code/skills/documentation/templates/api-reference.md +1 -1
  74. package/data/harnesses/code/skills/documentation/templates/architecture-decision.md +3 -7
  75. package/data/harnesses/code/skills/documentation/templates/behavioral-checklist.md +1 -1
  76. package/data/harnesses/code/skills/documentation/templates/changelog-entry.md +1 -1
  77. package/data/harnesses/code/skills/documentation/templates/changelog-index.md +1 -1
  78. package/data/harnesses/code/skills/documentation/templates/docs-readme.md +3 -3
  79. package/data/harnesses/code/skills/documentation/templates/doctrine.md +1 -1
  80. package/data/harnesses/code/skills/documentation/templates/domain-model.md +1 -1
  81. package/data/harnesses/code/skills/documentation/templates/environment-registry.md +1 -1
  82. package/data/harnesses/code/skills/documentation/templates/feature.md +3 -3
  83. package/data/harnesses/code/skills/documentation/templates/handover.md +2 -2
  84. package/data/harnesses/code/skills/documentation/templates/implementation-map.md +1 -1
  85. package/data/harnesses/code/skills/documentation/templates/migration-runbook.md +1 -1
  86. package/data/harnesses/code/skills/documentation/templates/non-goals.md +1 -1
  87. package/data/harnesses/code/skills/documentation/templates/operations-procedure.md +2 -2
  88. package/data/harnesses/code/skills/documentation/templates/package.md +1 -1
  89. package/data/harnesses/code/skills/documentation/templates/protected-files.md +1 -1
  90. package/data/harnesses/code/skills/documentation/templates/root-readme.md +1 -1
  91. package/data/harnesses/code/skills/documentation/templates/security-overview.md +1 -1
  92. package/data/harnesses/code/skills/documentation/templates/system-overview.md +1 -1
  93. package/data/harnesses/code/skills/documentation/templates/system.md +1 -1
  94. package/data/harnesses/code/skills/documentation/templates/testing-strategy.md +1 -1
  95. package/data/harnesses/code/skills/documentation/templates/ux-behavior.md +3 -5
  96. package/data/harnesses/code/skills/issue-bridge/SKILL.md +51 -16
  97. package/data/harnesses/code/skills/issue-bridge/references/trackers/github.md +5 -5
  98. package/data/harnesses/code/skills/issue-bridge/references/trackers/jira.md +11 -8
  99. package/data/harnesses/code/skills/issue-bridge/references/trackers/linear.md +16 -11
  100. package/data/harnesses/code/skills/nustack-graph/SKILL.md +38 -29
  101. package/data/harnesses/code/skills/polygraph/references/dispatch.md +31 -18
  102. package/data/harnesses/code/skills/polygraph/references/rows.md +11 -6
  103. package/data/harnesses/code/skills/schema-design/SKILL.md +39 -41
  104. package/data/harnesses/code/skills/test/SKILL.md +38 -42
  105. package/data/harnesses/code/skills/testing/SKILL.md +83 -73
  106. package/data/harnesses/code/skills/workflow-mapper/SKILL.md +156 -193
  107. package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +15 -15
  108. package/data/harnesses/delivery/harness.json +2 -2
  109. package/data/harnesses/delivery/skills/brainstorm/README.md +11 -13
  110. package/data/harnesses/delivery/skills/brainstorm/SKILL.md +150 -132
  111. package/data/harnesses/delivery/skills/brainstorm/references/doctrine.md +48 -51
  112. package/data/harnesses/delivery/skills/brainstorm/references/harvest.md +51 -56
  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 +5 -5
  116. package/data/harnesses/delivery/skills/documentation/references/examples.md +22 -22
  117. package/data/harnesses/delivery/skills/documentation/references/frontmatter.md +3 -3
  118. package/data/harnesses/delivery/skills/documentation/references/instruction-style.md +3 -3
  119. package/data/harnesses/delivery/skills/documentation/references/source-comments.md +3 -3
  120. package/data/harnesses/delivery/skills/documentation/references/style-guide.md +5 -5
  121. package/data/harnesses/delivery/skills/documentation/references/untemplated.md +8 -8
  122. package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +3 -2
  123. package/data/harnesses/delivery/skills/documentation/templates/Readme.md +1 -1
  124. package/data/harnesses/delivery/skills/documentation/templates/acceptance-criteria.md +1 -1
  125. package/data/harnesses/delivery/skills/documentation/templates/api-reference.md +1 -1
  126. package/data/harnesses/delivery/skills/documentation/templates/architecture-decision.md +3 -7
  127. package/data/harnesses/delivery/skills/documentation/templates/behavioral-checklist.md +1 -1
  128. package/data/harnesses/delivery/skills/documentation/templates/changelog-entry.md +1 -1
  129. package/data/harnesses/delivery/skills/documentation/templates/changelog-index.md +1 -1
  130. package/data/harnesses/delivery/skills/documentation/templates/docs-readme.md +3 -3
  131. package/data/harnesses/delivery/skills/documentation/templates/doctrine.md +1 -1
  132. package/data/harnesses/delivery/skills/documentation/templates/domain-model.md +1 -1
  133. package/data/harnesses/delivery/skills/documentation/templates/environment-registry.md +1 -1
  134. package/data/harnesses/delivery/skills/documentation/templates/feature.md +3 -3
  135. package/data/harnesses/delivery/skills/documentation/templates/handover.md +2 -2
  136. package/data/harnesses/delivery/skills/documentation/templates/implementation-map.md +1 -1
  137. package/data/harnesses/delivery/skills/documentation/templates/migration-runbook.md +1 -1
  138. package/data/harnesses/delivery/skills/documentation/templates/non-goals.md +1 -1
  139. package/data/harnesses/delivery/skills/documentation/templates/operations-procedure.md +2 -2
  140. package/data/harnesses/delivery/skills/documentation/templates/package.md +1 -1
  141. package/data/harnesses/delivery/skills/documentation/templates/protected-files.md +1 -1
  142. package/data/harnesses/delivery/skills/documentation/templates/root-readme.md +1 -1
  143. package/data/harnesses/delivery/skills/documentation/templates/security-overview.md +1 -1
  144. package/data/harnesses/delivery/skills/documentation/templates/system-overview.md +1 -1
  145. package/data/harnesses/delivery/skills/documentation/templates/system.md +1 -1
  146. package/data/harnesses/delivery/skills/documentation/templates/testing-strategy.md +1 -1
  147. package/data/harnesses/delivery/skills/documentation/templates/ux-behavior.md +3 -5
  148. package/data/harnesses/delivery/skills/escalate/SKILL.md +11 -11
  149. package/data/harnesses/delivery/skills/prompt-eval/SKILL.md +8 -8
  150. package/data/harnesses/delivery/skills/prompt-library/SKILL.md +30 -9
  151. package/data/harnesses/delivery/skills/route/SKILL.md +8 -8
  152. package/data/harnesses/etna/harness.json +2 -2
  153. package/data/harnesses/etna/skills/boundary/SKILL.md +33 -22
  154. package/data/harnesses/etna/skills/boundary/references/index.md +2 -4
  155. package/data/harnesses/etna/skills/boundary/references/mechanisms.md +3 -10
  156. package/data/harnesses/etna/skills/boundary/references/packs/build-config-runtime.md +1 -1
  157. package/data/harnesses/etna/skills/boundary/references/packs/frontend.md +17 -17
  158. package/data/harnesses/etna/skills/boundary/references/packs/generic-tail.md +1 -1
  159. package/data/harnesses/etna/skills/brainstorm/README.md +11 -13
  160. package/data/harnesses/etna/skills/brainstorm/SKILL.md +150 -132
  161. package/data/harnesses/etna/skills/brainstorm/references/doctrine.md +48 -51
  162. package/data/harnesses/etna/skills/brainstorm/references/harvest.md +51 -56
  163. package/data/harnesses/etna/skills/brainstorm/references/session-schema.md +48 -42
  164. package/data/harnesses/etna/skills/documentation/SKILL.md +5 -5
  165. package/data/harnesses/etna/skills/documentation/references/examples.md +22 -22
  166. package/data/harnesses/etna/skills/documentation/references/frontmatter.md +3 -3
  167. package/data/harnesses/etna/skills/documentation/references/instruction-style.md +3 -3
  168. package/data/harnesses/etna/skills/documentation/references/source-comments.md +3 -3
  169. package/data/harnesses/etna/skills/documentation/references/style-guide.md +5 -5
  170. package/data/harnesses/etna/skills/documentation/references/untemplated.md +8 -8
  171. package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +3 -2
  172. package/data/harnesses/etna/skills/documentation/templates/Readme.md +1 -1
  173. package/data/harnesses/etna/skills/documentation/templates/acceptance-criteria.md +1 -1
  174. package/data/harnesses/etna/skills/documentation/templates/api-reference.md +1 -1
  175. package/data/harnesses/etna/skills/documentation/templates/architecture-decision.md +3 -7
  176. package/data/harnesses/etna/skills/documentation/templates/behavioral-checklist.md +1 -1
  177. package/data/harnesses/etna/skills/documentation/templates/changelog-entry.md +1 -1
  178. package/data/harnesses/etna/skills/documentation/templates/changelog-index.md +1 -1
  179. package/data/harnesses/etna/skills/documentation/templates/docs-readme.md +3 -3
  180. package/data/harnesses/etna/skills/documentation/templates/doctrine.md +1 -1
  181. package/data/harnesses/etna/skills/documentation/templates/domain-model.md +1 -1
  182. package/data/harnesses/etna/skills/documentation/templates/environment-registry.md +1 -1
  183. package/data/harnesses/etna/skills/documentation/templates/feature.md +3 -3
  184. package/data/harnesses/etna/skills/documentation/templates/handover.md +2 -2
  185. package/data/harnesses/etna/skills/documentation/templates/implementation-map.md +1 -1
  186. package/data/harnesses/etna/skills/documentation/templates/migration-runbook.md +1 -1
  187. package/data/harnesses/etna/skills/documentation/templates/non-goals.md +1 -1
  188. package/data/harnesses/etna/skills/documentation/templates/operations-procedure.md +2 -2
  189. package/data/harnesses/etna/skills/documentation/templates/package.md +1 -1
  190. package/data/harnesses/etna/skills/documentation/templates/protected-files.md +1 -1
  191. package/data/harnesses/etna/skills/documentation/templates/root-readme.md +1 -1
  192. package/data/harnesses/etna/skills/documentation/templates/security-overview.md +1 -1
  193. package/data/harnesses/etna/skills/documentation/templates/system-overview.md +1 -1
  194. package/data/harnesses/etna/skills/documentation/templates/system.md +1 -1
  195. package/data/harnesses/etna/skills/documentation/templates/testing-strategy.md +1 -1
  196. package/data/harnesses/etna/skills/documentation/templates/ux-behavior.md +3 -5
  197. package/data/harnesses/etna/skills/workflow-mapper/SKILL.md +156 -193
  198. package/data/harnesses/etna/skills/workflow-mapper/references/patterns.md +15 -15
  199. package/data/harnesses/hr/harness.json +2 -2
  200. package/data/harnesses/hr/skills/evaluator/SKILL.md +71 -73
  201. package/data/harnesses/hr/skills/evaluator/criteria/code-quality.md +28 -47
  202. package/data/harnesses/hr/skills/evaluator/criteria/deployment-readiness.md +33 -43
  203. package/data/harnesses/hr/skills/evaluator/criteria/maintainability.md +34 -46
  204. package/data/harnesses/hr/skills/evaluator/criteria/mechanical-ambition.md +13 -13
  205. package/data/harnesses/hr/skills/evaluator/criteria/problem-substantiveness.md +7 -7
  206. package/data/harnesses/hr/skills/evaluator/criteria/testing.md +36 -41
  207. package/data/harnesses/hr/skills/evaluator/criteria/ux-mechanics.md +25 -11
  208. package/data/harnesses/hr/skills/evaluator/criteria/value-articulation.md +7 -7
  209. package/data/harnesses/hr/skills/evaluator/preflight.md +27 -46
  210. package/data/harnesses/hr/skills/interview-eval/SKILL.md +37 -42
  211. package/data/harnesses/hr/skills/interview-eval/rubric.md +21 -23
  212. package/package.json +2 -2
@@ -12,8 +12,8 @@ commits it.
12
12
 
13
13
  ## The architecture — one capability, two seats
14
14
 
15
- Prose obligations decay in the conversing seat: the fleet audit behind v3 found the same rules
16
- dying in every real session, even the successful ones. So the capability is split:
15
+ Prose obligations decay in the conversing seat: an audit of real sessions finds the same rules
16
+ dying in every one, the successful ones included. So the capability is split:
17
17
 
18
18
  | Seat | Component | Owns |
19
19
  | --- | --- | --- |
@@ -27,17 +27,15 @@ line, the twin writes the result — so reconciliation is observable, never asse
27
27
 
28
28
  ## The session lifecycle
29
29
 
30
- ```
31
- /brainstorm start
32
- → basis gate (a document, an old session folder of any format, or a brain dump)
33
- → bootstrap docs/research/{topic}-brainstorm/ (ops/ untracked; twin writes the surface)
34
- → converse: dump / interview / probe / blindspot / converge — steerable in plain language
35
- → "let me read" anytime: compose on demand, read the thesis, come back
36
- /brainstorm stop
37
- → converge → manifest → ONE user approval → apply → uselessness test
38
- → folder moves to docs/history/brainstorms/{topic}/ (the completion marker)
39
- → the user decides: delete or commit
40
- ```
30
+ - **`/brainstorm start`**
31
+ 1. Basis gate — a document, a prior session folder in any format, or a brain dump.
32
+ 2. Bootstrap `docs/research/{topic}-brainstorm/` — `ops/` untracked; the twin writes the surface.
33
+ 3. Converse — dump, interview, probe, blindspot, converge — steerable in plain language.
34
+ 4. "Let me read" anytime — compose on demand, read the thesis, come back.
35
+ - **`/brainstorm stop`**
36
+ 1. Converge → manifest → **one** user approval → apply → uselessness test.
37
+ 2. The folder moves to `docs/history/brainstorms/{topic}/` — the completion marker.
38
+ 3. The user decides: delete or commit.
41
39
 
42
40
  The working surface: `thesis.md` (claim → argument → what changed, recomposed whole, stamped),
43
41
  `forks.md` (open questions with close conditions — the only convergence currency), `ledger.md`
@@ -9,166 +9,184 @@ Help the user think correctly about a large-scale change, in a record that reads
9
9
  pause, and end with a harvest so complete the session folder is useless. You are the
10
10
  **facilitator** — the conversation seat of a capability split across two seats:
11
11
 
12
- - **You (this skill, main loop)** hold the conversation. Your only writes: append to
13
- `ops/capture.md` every turn, write sync-log dispatch lines, and freeze the basis at intake.
14
- - **The twin (the `brainstorm` agent, pinned strong tier)** owns the paper: it distills ops into
15
- the working surface, recomposes the thesis whole, audits, and drives the harvest. You dispatch
16
- it at gates and relay its reports. You never write the working surface yourself — prose
17
- obligations decay in the conversing seat; that is the whole architecture.
18
- - **The detector** (`scripts/detector.mjs`) owns mechanical integrity; the twin runs it.
19
-
20
- References — load at the named moments, and read the routed file in full (no skimming to save
21
- context; this skill is sized by completeness):
22
-
23
- - `references/doctrine.md` — when judging what a turn's substance *is* (force, fork, commitment)
24
- or how to word what you capture.
25
- - `references/session-schema.md` — when bootstrapping a session or interpreting detector/twin
26
- output.
27
- - `references/harvest.md` — at `stop`, before orchestrating the pipeline.
12
+ | Seat | Owns | Writes |
13
+ | --- | --- | --- |
14
+ | **You** (this skill, main loop) | the conversation; dispatching the twin at gates and relaying its reports | `ops/capture.md` every turn, the sync-log dispatch lines, the basis at intake — **nothing else** |
15
+ | **The twin** (the `brainstorm` agent, pinned strong tier) | the paper: distilling ops into the working surface, recomposing the thesis whole, audits, the harvest | every other file in the folder |
16
+ | **The detector** (`scripts/detector.mjs`, run by the twin) | mechanical integrity | — |
17
+
18
+ **Never write the working surface yourself** — prose obligations decay in the conversing seat, and
19
+ the split exists to keep them out of it.
20
+
21
+ Load each reference at its moment and read it in full — **never skim to save context**; this skill
22
+ is sized by completeness:
23
+
24
+ | Reference | Load when |
25
+ | --- | --- |
26
+ | `references/doctrine.md` | judging what a turn's substance *is* (force, fork, commitment), or how to word what you capture |
27
+ | `references/session-schema.md` | bootstrapping a session, or interpreting detector or twin output |
28
+ | `references/harvest.md` | at `stop`, before orchestrating the pipeline |
28
29
 
29
30
  ## The one habit that is yours: capture
30
31
 
31
- Append to `ops/capture.md` **every turn**, both sides, lowest bar — raw notes, not prose:
32
- what the user said that matters, and your own substance (causal diagnoses, informed rejections of
33
- options you presented, definitions, reasoning chains behind recommendations), plus residue you
34
- judge not worth filing. Turn-stamped per the schema (`### T# · <ISO datetime>`). Never distill
35
- here — distillation is the twin's. If a piece of your reasoning lives only in the chat when the
36
- twin next dispatches, you leaked it. This habit is also what makes every re-entry cheap: the
37
- folder plus ops is the session's whole memory.
32
+ Append to `ops/capture.md` **every turn**, both sides, at the lowest bar — raw notes, not prose:
33
+
34
+ - what the user said that matters;
35
+ - your own substance — causal diagnoses, informed rejections of options you presented,
36
+ definitions, reasoning chains behind recommendations;
37
+ - residue you judge not worth filing.
38
+
39
+ Stamp each turn per the schema (`### T# · <ISO datetime>`). **Never distill here** — distillation is
40
+ the twin's. Reasoning that lives only in the chat when the twin next dispatches has leaked. The
41
+ folder plus ops is the session's whole memory, which is what makes every re-entry cheap.
38
42
 
39
43
  ## `start`
40
44
 
41
- Find sessions by their folders — no index keeps a row per session: `docs/research/*-brainstorm/`
42
- (active) and `docs/history/brainstorms/*/` (harvested), the folder name being the topic and each
43
- `thesis.md` heading its subject. Topic matches an active session → resume it
44
- (re-entry, below). Harvested or prior-generation match → offer it **as a basis** for a fresh
45
- session. No match → new session.
46
-
47
- **1 · The entry gate.** A session needs substance: ask for a **basis** — a reference document
48
- (path or URL), a prior session folder of *any* format or generation, or a one-shot brain dump in
49
- prose, now. Information is information: an old v2 brainstorm folder is ingested exactly like a
50
- PRD — copied into `basis/`, frozen, distilled; never operated on in place, never migrated.
51
- Drip-sized input (a bug fix, one button) → say this skill is the wrong tool and don't open the
45
+ Find sessions by their folders — **no index keeps a row per session**. Active sessions are
46
+ `docs/research/*-brainstorm/`, harvested ones `docs/history/brainstorms/*/`; the folder name is the
47
+ topic and each `thesis.md` heading its subject.
48
+
49
+ | Topic matches | Do |
50
+ | --- | --- |
51
+ | an active session | resume it (Re-entry, below) |
52
+ | a harvested session, or a session folder in another format | offer it **as a basis** for a fresh session |
53
+ | nothing | open a new session |
54
+
55
+ **1 · The entry gate.** A session needs substance. Ask for a **basis**, now:
56
+
57
+ - a reference document (path or URL);
58
+ - a prior session folder, in any format — ingested exactly like a PRD: copied into `basis/`,
59
+ frozen, distilled; **never** operated on in place, **never** migrated;
60
+ - a one-shot brain dump in prose.
61
+
62
+ Drip-sized input (a bug fix, one button): say this skill is the wrong tool, and do not open the
52
63
  session unless the user explicitly overrides. No basis, no session.
53
64
 
54
- **2 · Bootstrap.** Folder `docs/research/{topic}-brainstorm/` (kebab slug, confirm in one line).
55
- Create `ops/` with a `.gitignore` containing `*`, `ops/capture.md`, `ops/sync-log.md`; copy the
56
- basis into `basis/`. No index row: the folder is the session's entry. Then write the sync-log dispatch
57
- line and dispatch the twin (gate: start) to write the initial surface — you don't scaffold
58
- `state.md`/`thesis.md`/`forks.md`/`ledger.md` yourself.
59
-
60
- **3 · Calibrate + frame.** Distill the basis first — it seeds everything. Calibrate from the
61
- living docs (the ownership index, recent decision records, any open-questions doc) so your
62
- questions match this repo, not a template. Then one `AskUserQuestion` batch: **sitting** (single
63
- sprint — the default and the shape that succeeds — or explicitly multi), **execution reality**
64
- (greenfield / brownfield / hybrid — migration gotchas discovered at plan time are discovered too
65
- late), and **where the idea is right now** (fully in their head → dump; half-formed → interview).
66
- Propose the **aspect map** — the thinking dimensions for *this* idea, derived from the basis,
67
- no fixed list; the user edits it; it lives in `state.md`.
68
-
69
- **4 · Orient.** 3–4 lines, assuming a first-time user: how the session works (you talk, the
65
+ **2 · Bootstrap.**
66
+
67
+ 1. Name the folder `docs/research/{topic}-brainstorm/` (kebab slug); confirm it in one line.
68
+ 2. Create `ops/` holding a `.gitignore` containing `*`, `ops/capture.md`, and `ops/sync-log.md`.
69
+ 3. Copy the basis into `basis/`. Add no index row — the folder is the session's entry.
70
+ 4. Write the sync-log dispatch line and dispatch the twin (gate: start) to write the initial
71
+ surface. **Never scaffold** `state.md`, `thesis.md`, `forks.md`, or `ledger.md` yourself.
72
+
73
+ **3 · Calibrate and frame.**
74
+
75
+ 1. Distill the basis first — it seeds everything.
76
+ 2. Calibrate from the living docs (the ownership index, recent decision records, any
77
+ open-questions doc), so your questions match this repo, not a template.
78
+ 3. Ask one `AskUserQuestion` batch:
79
+ - **sitting** — single sprint (the default, and the shape that succeeds) or explicitly multi;
80
+ - **execution reality** — greenfield, brownfield, or hybrid; a migration gotcha found at plan
81
+ time is found too late;
82
+ - **where the idea is now** — fully in their head → dump; half-formed → interview.
83
+ 4. Propose the **aspect map** — the thinking dimensions for *this* idea, derived from the basis,
84
+ from no fixed list. The user edits it; it lives in `state.md`.
85
+
86
+ **4 · Orient.** In 3–4 lines, written for a first-time user: how the session works (you talk, the
70
87
  folder keeps everything), the steering verbs in plain words, "let me read" (pause and read the
71
88
  thesis anytime), and what `stop` does (converge → your approval → harvest → the folder moves and
72
- you choose delete or commit). Then begin — **always in dump or interview**; probe and converge
73
- are mid-session moves, never starting postures.
89
+ you choose delete or commit). Then begin — **always in dump or interview**; probe and converge are
90
+ mid-session moves, never starting postures.
74
91
 
75
92
  ## The moves
76
93
 
77
- Five named, user-steerable interlocution moves — who drives, how much gets asked. No `MODE:`
78
- field, no switch ceremony, no sanctioned trigger words: **any phrasing that implies a move
79
- triggers it** ("I want to poke holes" → probe; "what am I missing?" → blindspot; "let's decide"
80
- → converge). The first time each
81
- move fires, name in one line what you're doing. Offer a switch when the signals say so (the user
82
- monologues mid-interview; every probe answer is "haven't thought about it") — one offer, never
83
- seized.
84
-
85
- - **dump** — user drives. No questions mid-stream. Reflect back the shape, contradictions, and
86
- implications as they land — that reflection *is* active listening; never sit silent.
87
- - **interview** — you drive. `AskUserQuestion` batches of 2–3, scoped to one aspect at a time.
88
- Questions derive from the basis and the current surface — never from a template inventory;
89
- never interview to fill empty files.
90
- - **probe** — you challenge: flaws, edge cases, conflicts with the tech fragment or domain
91
- fragment. Each finding is noted in ops and moves on — don't demand resolution mid-probe.
92
- - **blindspot** — hunt unknown unknowns. This move is dispatched, not conversed: you co-built
93
- the frame, so the outside view is structurally the twin's — dispatch it (gate: on demand,
94
- scope: blindspot) to cold-read the whole surface against the thesis's stated goal. Candidates
95
- die at the twin's quality gate (grounded in this folder, material to the design, new,
96
- answerable) so the user never over-replies to noise; at most five survivors arrive, each
97
- already filed as a fork. Relay them in prose — finding → why it's material here → what
98
- answering it would change — never as a question barrage: the user engages what matters and
99
- converge burns the rest down later. Don't wait to be asked — a user-only trigger makes
100
- coverage depend on the user remembering to ask: self-initiate a pass occasionally, at the
101
- moments the frame settles (an aspect closes, a converge burst lands, the thesis materially
102
- recomposes), by widening a reconcile dispatch's scope. Self-initiation needs no offer — it
103
- seizes nothing; survivors land as forks either way, and zero survivors is one relay line,
104
- never manufactured findings.
105
- - **converge** — burn forks down to commitments or explicit parks. `AskUserQuestion` for picks.
106
- Each resolution carries Why + How to apply (the twin files it; you capture it).
94
+ Five user-steerable moves set who drives and how much gets asked. There is no `MODE:` field, no
95
+ switch ceremony, and no sanctioned trigger word: **any phrasing that implies a move triggers it**
96
+ ("I want to poke holes" → probe; "what am I missing?" → blindspot; "let's decide" → converge). The
97
+ first time each move fires, name what you are doing in one line. When the signals call for a
98
+ switch (the user monologues mid-interview; every probe answer is "haven't thought about it"), offer
99
+ it once — never seize it.
100
+
101
+ - **dump** — the user drives. Ask no questions mid-stream. Reflect back the shape, contradictions,
102
+ and implications as they land — that reflection is the active listening; **never sit silent**.
103
+ - **interview** — you drive. `AskUserQuestion` batches of 2–3, one aspect at a time. Derive the
104
+ questions from the basis and the current surface — **never** from a template inventory, and
105
+ **never** interview to fill empty files.
106
+ - **probe** — you challenge: flaws, edge cases, conflicts with the tech or domain fragment. Note
107
+ each finding in ops and move on; **never** demand resolution mid-probe.
108
+ - **blindspot** — the hunt for unknown unknowns, **dispatched, never conversed**: you co-built the
109
+ frame, so the outside view belongs to the twin.
110
+ 1. Dispatch the twin (gate: on demand, scope: blindspot) to cold-read the whole surface against
111
+ the thesis's stated goal. Its quality gate kills any candidate not grounded in this folder,
112
+ material to the design, new, and answerable; at most five survivors return, each already
113
+ filed as a fork.
114
+ 2. Relay survivors in prose — finding → why it is material here → what answering it would
115
+ change — **never** as a question barrage: the user engages what matters, and converge burns
116
+ the rest down later. Zero survivors is one relay line; **never** manufacture findings.
117
+ 3. Self-initiate a pass, without offering, whenever the frame settles — an aspect closes, a
118
+ converge burst lands, the thesis materially recomposes — by widening a reconcile dispatch's
119
+ scope. A user-only trigger makes coverage depend on the user remembering to ask.
120
+ - **converge** — burn forks down to commitments or explicit parks, with `AskUserQuestion` for
121
+ picks. Each resolution carries Why and How to apply; you capture it, the twin files it.
107
122
 
108
123
  ## Twin dispatches — the gates
109
124
 
110
- Dispatch at: **start** (bootstrap), **on demand** (below), **pause**, **stop**. One dispatch in
111
- flight at a time. For every dispatch *you* write the dispatch line to `ops/sync-log.md`
112
- (`S# | gate: <g> | dispatched: <ts> | scope: <s>`) — the twin appends the result; the pairing is
113
- how reconciliation stays observable instead of asserted. Relay the twin's one-line report at the
114
- next turn break ("4 edits · 2 new forks · 6 open · untouched: risks") — the only ambient
115
- convergence pressure this skill applies — plus what the recompose changed, so a rewrite of the
116
- user's thinking is never silent. A `failed` result: tell the user plainly and re-dispatch at the
117
- next gate.
118
-
119
- **On demand** means: the user asks ("let me read", "sync up", "what's open?"), or you judge the
120
- capture has accumulated enough that the surface has fallen meaningfully behind. **"Let me read"**
121
- is a recognized pause act: dispatch a compose (say honestly that it takes a couple of minutes),
122
- then point them at `thesis.md` — mandated shape, claim → argument → what changed, stamped — and
123
- pick the conversation back up when they return. Reading one's own thinking mid-session is a
124
- designed-for act, not an interruption.
125
+ Dispatch at **start** (bootstrap), **on demand** (below), **pause**, and **stop** — **one dispatch in
126
+ flight at a time**.
127
+
128
+ 1. Before each dispatch, write its line to `ops/sync-log.md`
129
+ (`S# | gate: <g> | dispatched: <ts> | scope: <s>`). The twin appends the result; the pairing
130
+ keeps reconciliation observable instead of asserted.
131
+ 2. At the next turn break, relay the twin's one-line report ("4 edits · 2 new forks · 6 open ·
132
+ untouched: risks") plus what the recompose changed — a rewrite of the user's thinking is
133
+ **never** silent. The report is the only ambient convergence pressure this skill applies.
134
+ 3. On a `failed` result, tell the user plainly and re-dispatch at the next gate.
135
+
136
+ **On demand** means the user asks ("let me read", "sync up", "what's open?"), or you judge the
137
+ capture has outrun the surface meaningfully. **"Let me read"** is a designed-for pause, not an
138
+ interruption: dispatch a compose (say honestly it takes a couple of minutes), point the user at
139
+ `thesis.md` — claim → argument → what changed, stamped — and resume when they return.
125
140
 
126
141
  ## Re-entry — resume, or context loss
127
142
 
128
- Re-entry is a read, not a reconstruction: re-read this skill's hub, `state.md` (posture line
129
- first), and the tail of `ops/capture.md`; then dispatch the twin (gate: on demand) for a
130
- re-brief + freshness audit. This covers three triggers identically: resuming a parked session,
131
- a new sitting, and **loss of conversational context mid-session (compaction)** — if you find
132
- yourself mid-session without memory of it, this is the procedure; the folder was built so that
133
- nothing you "remembered" matters. While a session folder exists, read `state.md` at the start of
134
- every turn.
143
+ Re-entry is a read, not a reconstruction. It covers three triggers identically: resuming a parked
144
+ session, a new sitting, and **losing conversational context mid-session (compaction)** — finding
145
+ yourself mid-session without memory of it means running this procedure; nothing you "remembered"
146
+ matters.
147
+
148
+ 1. Re-read this hub, `state.md` (posture line first), and the tail of `ops/capture.md`.
149
+ 2. Dispatch the twin (gate: on demand) for a re-brief and freshness audit.
150
+
151
+ While a session folder exists, read `state.md` at the start of every turn.
135
152
 
136
153
  ## `stop` — the fixed pipeline
137
154
 
138
- Read `references/harvest.md` first. The pipeline always runs — a stop *is* convergence plus
139
- harvest; you orchestrate, the twin executes each leg:
155
+ Read `references/harvest.md` first. The pipeline **always** runs — a stop *is* convergence plus
156
+ harvest. You orchestrate; the twin executes each leg.
140
157
 
141
- 1. **Converge** — every open fork resolved now or explicitly parked with a destination
142
- (mini-converge in conversation; the scope-guard trio in `harvest.md` disambiguates parks).
143
- If no blindspot round has run this session, offer one first (one offer, never seized) — an
144
- unknown unknown found after commitments freeze is the expensive kind.
145
- 2. **Final sync + manifest** — dispatch the twin (gate: stop). It builds the manifest only when
158
+ 1. **Converge** — resolve every open fork now, or park it explicitly with a destination
159
+ (mini-converge in conversation; the scope-guard trio in `harvest.md` disambiguates parks). If no
160
+ blindspot round has run this session, offer one first, once — an unknown unknown found after
161
+ commitments freeze is the expensive kind.
162
+ 2. **Final sync and manifest** — dispatch the twin (gate: stop). It builds the manifest only when
146
163
  the detector's manifest gate is clean; relay anything blocking.
147
- 3. **One approval** — present the manifest via `AskUserQuestion`. Gap rounds later re-enter here:
148
- every write to canonical docs is user-approved, no exceptions.
149
- 4. **Apply → uselessness test → move** — the twin's legs; relay results. Harvest fails loud:
150
- a partial apply leaves the folder visibly unfinished in `docs/research/` and the user restarts
151
- the stop — never resume silently.
152
- 5. **The offer** — after the move to `docs/history/brainstorms/{topic}/`: **delete the folder, or
153
- commit it** — the user decides; the design assumes deletion. Relay via `AskUserQuestion`.
164
+ 3. **One approval** — present the manifest via `AskUserQuestion`. Gap rounds re-enter here: every
165
+ write to canonical docs is user-approved, **no exceptions**.
166
+ 4. **Apply → uselessness test → move** — the twin's legs; relay the results. Harvest fails loud: a
167
+ partial apply leaves the folder visibly unfinished in `docs/research/` and the user restarts the
168
+ stop — **never** resume silently.
169
+ 5. **The offer** — after the move to `docs/history/brainstorms/{topic}/`, ask via
170
+ `AskUserQuestion`: **delete the folder, or commit it**. The user decides; the design assumes
171
+ deletion.
154
172
 
155
173
  ## Conduct — holds for the whole session
156
174
 
157
- 1. **Speak plain English; codes live in files.** Name every item by what it is; append the code
158
- in parentheses only when traceability needs it ("…the timeout question (F2)"). Never lead
159
- with a bare `F3`/`D7`.
160
- 2. **No production code outside the session folder while open.** Illustrative snippets live in
161
- the folder. Asked for production code: offer a sketch inside the folder, or `/brainstorm stop`
175
+ 1. **Speak plain English; codes live in files.** Name every item by what it is, with the code in
176
+ parentheses only where traceability needs it ("…the timeout question (F2)"). **Never** lead with
177
+ a bare `F3`/`D7`.
178
+ 2. **No production code outside the session folder while it is open.** Illustrative snippets live
179
+ in the folder. Asked for production code, offer a sketch inside the folder, or `/brainstorm stop`
162
180
  first.
163
- 3. **`AskUserQuestion` at exactly four sites:** the intake frame batch, interview batches,
164
- converge picks, and the stop approvals (manifest; delete-or-commit). Everywhere else, prose.
181
+ 3. **`AskUserQuestion` at exactly four sites:** the intake frame batch, interview batches, converge
182
+ picks, and the stop approvals (manifest; delete-or-commit). Everywhere else, prose.
165
183
  4. **Suggested, never seized.** Moves, abstractions, probes — one offer each; accept refusal
166
- without re-litigating. Exemption: a self-initiated blindspot dispatch — it takes no
167
- conversational control; its findings arrive as forks the user may simply ignore.
168
- 5. **Nothing lives only in the transcript.** Ops is the floor: if it isn't in the folder or in
169
- ops, it doesn't exist. Flaws, gaps, and contradictions surface to the twin as capture — the
170
- twin turns them into forks; forks are the only convergence currency.
171
- 6. **The user decides when to converge and when to stop.** Distance-to-coherent is visible in
172
- every relayed twin report; you never say "let's decide now."
184
+ without re-litigating. The one exemption is a self-initiated blindspot dispatch: it takes no
185
+ conversational control, and its findings arrive as forks the user may ignore.
186
+ 5. **Nothing lives only in the transcript.** What is not in the folder or in ops does not exist.
187
+ Flaws, gaps, and contradictions reach the twin as capture; the twin turns them into forks, the
188
+ only convergence currency.
189
+ 6. **The user decides when to converge and when to stop.** Distance-to-coherent is visible in every
190
+ relayed twin report; **never** say "let's decide now."
173
191
  7. **Only `/brainstorm start` and `/brainstorm stop` enter or leave a session.** No
174
192
  auto-invocation, ever.
@@ -3,56 +3,54 @@
3
3
  Load when: composing or auditing any working-surface file; deciding what a turn's substance *is*
4
4
  (a force, a fork, a commitment); judging whether a record is complete enough to harvest.
5
5
 
6
- The session's product is a defensible design position. Five elements carry it — thesis, forces,
7
- forks, commitments, consequences. They are ADR epistemics with the ceremony removed: everything
8
- that made a decision record *citable* survives; everything that made it *bureaucratic* is dropped.
6
+ The session's product is a defensible design position, carried by five elements — thesis, forces,
7
+ forks, commitments, consequences. They are ADR epistemics without the ceremony: what makes a
8
+ decision record *citable* stays; what makes it *bureaucratic* is out.
9
9
 
10
10
  ## The five elements
11
11
 
12
12
  **Thesis** — the claim under construction. One composed document (`thesis.md`) in a mandated
13
13
  readable shape: the **claim** (what we are building and the position taken), the **argument** (the
14
14
  forces bearing on it and the reasoning chain from forces to claim), then **what most recently
15
- changed and why**. Composed prose from turn one, rewritten whole at every compose — a document
16
- maintained by appending can never read well. Every compose carries a `Current as of:` stamp so
17
- staleness is visible instead of trusted.
15
+ changed and why**. Composed prose from turn one, rewritten whole at every compose — **never**
16
+ appended, because an appended document never reads well. Every compose carries a `Current as of:`
17
+ stamp, so staleness is visible instead of trusted.
18
18
 
19
19
  **Forces** — the pressures that shape the design: user constraints stated in the conversation,
20
- evidence from the repo or the field, platform realities, costs, prior doctrine. Forces are not a
21
- file; they are the argument's raw material. A force lives wherever the reasoning that uses it
22
- lives — the thesis argument, a commitment's Why — and is stated concretely enough to be checked
23
- ("the CLI gates consumer refresh", never "deployment concerns").
20
+ evidence from the repo or the field, platform realities, costs, prior doctrine. Forces have no file;
21
+ each lives wherever the reasoning that uses it lives — the thesis argument, a commitment's Why — and
22
+ is stated concretely enough to check ("the CLI gates consumer refresh", never "deployment
23
+ concerns").
24
24
 
25
- **Forks** — the open questions. A fork is the session's only convergence currency: flaws, gaps,
26
- contradictions, uncovered aspects all funnel into `forks.md` or they don't exist. Every fork
27
- carries a **close condition** — what resolution looks like: a pick, a confirmed fact, an accepted
28
- risk. A fork with no close condition is not askable and gets rewritten until it is.
25
+ **Forks** — the open questions, and the session's only convergence currency: flaws, gaps,
26
+ contradictions, and uncovered aspects funnel into `forks.md` or do not exist. Every fork carries a
27
+ **close condition** — what resolution looks like: a pick, a confirmed fact, an accepted risk. A
28
+ fork without one is not askable; rewrite it until it is.
29
29
 
30
30
  **Commitments** — the resolved calls, in `ledger.md`. Field set per entry:
31
31
 
32
32
  - **Decision** — the call, one sentence, present tense.
33
- - **Why** — the forces and reasoning that produced it. This is where declined options live:
34
- a **Declined:** line inside the commitment names the option, the evidence it was declined
35
- against *at decline time*, and a **re-evaluate condition** where one exists — the condition
36
- under which the rejection deserves another look. A deliberate call must never read later as an
37
- unexamined one; the re-evaluate condition is what turns a past-tense rejection into a standing
38
- tripwire.
33
+ - **Why** — the forces and reasoning that produced it, including declined options: a
34
+ **Declined:** line names the option, the evidence it was declined against *at decline time*, and
35
+ a **re-evaluate condition** where one exists — the condition under which the rejection deserves
36
+ another look. The line keeps a deliberate call from reading later as an unexamined one, and the
37
+ re-evaluate condition turns a past rejection into a standing tripwire.
39
38
  - **How to apply** — what acting on the decision looks like in this repo.
40
39
  - **Resolves** — the fork(s) this closes.
41
40
 
42
41
  The ledger is **append-only with amendment-by-annotation**: a decision is real the moment it
43
- lands; reversing it is a new entry that names what it reverses, plus a one-line annotation on the
44
- old entry ("Reversed by …"). There is no tentative/committed/rescinded state machine — the fleet's
45
- best sessions all proved append-plus-annotation carries the same information with none of the
46
- ceremony.
42
+ lands; reversing it is a new entry naming what it reverses, plus a one-line annotation on the old
43
+ entry ("Reversed by …"). **Never** add a tentative/committed/rescinded state machine —
44
+ append-plus-annotation carries the same information with none of the ceremony.
47
45
 
48
- **Consequences** — what a commitment obligates beyond itself: follow-on work, constraints it
49
- places on future decisions, and where its knowledge must land at harvest. Consequences surface as
50
- new forks ("committing to X opens the question of Y"), backlog candidates, or fragment content —
51
- they are the element that keeps a ledger from being a list of verdicts with no forward pressure.
46
+ **Consequences** — what a commitment obligates beyond itself: follow-on work, constraints on
47
+ future decisions, and where its knowledge must land at harvest. They surface as new forks
48
+ ("committing to X opens the question of Y"), backlog candidates, or fragment content, and keep the
49
+ ledger from being a list of verdicts with no forward pressure.
52
50
 
53
51
  ## What ADR epistemics keep
54
52
 
55
- The parts that made decision records worth citing in shipped source:
53
+ The parts that make a decision record worth citing in shipped source:
56
54
 
57
55
  - A decision is **addressable** — it can be named, cited, amended, and reversed by reference.
58
56
  - The **reasoning travels with the verdict** — Why is mandatory, and declined alternatives ride
@@ -62,7 +60,7 @@ The parts that made decision records worth citing in shipped source:
62
60
 
63
61
  ## What ceremony drops
64
62
 
65
- The parts that died in every real session, kept out deliberately:
63
+ The parts real sessions abandon, kept out deliberately:
66
64
 
67
65
  - **Status lifecycles** (Proposed → Accepted → Deprecated) — a commitment is live when it lands;
68
66
  reversal is an entry, not a state transition.
@@ -76,10 +74,11 @@ The parts that died in every real session, kept out deliberately:
76
74
 
77
75
  ## Epistemic rules
78
76
 
79
- These bind every writer of the working surface — facilitator (ops), twin (everything else):
77
+ Binding on every writer of the working surface — the facilitator (ops) and the twin (everything
78
+ else):
80
79
 
81
80
  1. **Distilled, never verbatim.** Capture is interpretation: name the claim, the reasoning, and
82
- the implication. The ban is on transcript-pasting, not on quoting — integrity copies (printed
81
+ the implication. The ban is on pasting transcript, not on quoting — integrity copies (printed
83
82
  enumerations, cited excerpts) are self-containment, not stenography.
84
83
  2. **Examples are examples.** Record the general claim and cite the user's phrase as an instance
85
84
  of it. Never promote one phrasing into the frame — a thesis that reads beautifully but no
@@ -91,22 +90,23 @@ These bind every writer of the working surface — facilitator (ops), twin (ever
91
90
  checks it there.
92
91
  4. **Both sides are session knowledge.** The facilitator's own substance — causal diagnoses,
93
92
  informed rejections of options it presented, definitions of terms the surface cites, reasoning
94
- chains behind recommendations — is captured with the same discipline as the user's words. This
95
- is the historically leaked knowledge class; the ops ledger exists so it lands at zero cost.
93
+ chains behind recommendations — is captured with the same discipline as the user's words. It is
94
+ the knowledge class that leaks; the ops ledger exists so it lands at zero cost.
96
95
  5. **Directional steering is not feature truth.** A harvested principle informs many decisions
97
96
  and changes slowly; a feature fact belongs to its feature doc and changes at code speed. The
98
97
  harvest links between the two layers, never duplicates prose across them.
99
98
 
100
99
  ## Field lessons — capture and converge
101
100
 
102
- Measured on live sessions; each is the rule, distilled.
101
+ Each is a rule measured on live sessions.
103
102
 
104
103
  - **Separate user voice from facilitator re-derivation before ledgering** when both arrive in one
105
- turn. Only the user's half is ledgerable; a re-derivation that quietly re-reads an existing
106
- commitment into a new shape is caught as a fork with a named amendment to the affected `D#`,
107
- never as an edit — a commitment recorded in the user's words is amended only by the user.
108
- - **Stamp in UTC, always** — take the stamp from `date -u`, never from the runtime's injected
109
- local date; the two disagree for part of every working day in some offsets, and a local-date
104
+ turn — say, the user states a segregation and the facilitator re-derives a whole architecture
105
+ from it. **Only** the user's half is ledgerable. A re-derivation that re-reads an existing
106
+ commitment into a new shape is a fork carrying a named amendment to the affected `D#`, **never**
107
+ an edit — a commitment recorded in the user's words is amended only by the user.
108
+ - **Stamp in UTC, always** — take the stamp from `date -u`, **never** from the runtime's injected
109
+ local date; in some offsets the two disagree for part of every working day, and a local-date
110
110
  stamp runs the ledger a day ahead of capture.
111
111
  - **Run the blindspot pass immediately after a converge burst, before the manifest gate.** When
112
112
  several picks land in one sitting the strain migrates *between* them — collisions between
@@ -118,20 +118,17 @@ Measured on live sessions; each is the rule, distilled.
118
118
  - **When a ledger entry's `Why` contains "already", verify it before the manifest.** A commitment
119
119
  that declines to build something because it already exists rests on a fact, not a judgment, and
120
120
  the stop gate is the last place that fact is checkable — after the folder moves it is not.
121
- - **Verify a doctrine claim against disk before building an argument on it.** Truth docs outrun
122
- package rebuilds: a guardrail can assert a guard path that exists nowhere, inside a suppression
123
- wrapper naming packages already deleted. When a session's centre is a recorded prohibition, `ls`
124
- the guard path, read the owning package's config, and confirm the package is still in the tree.
125
- - **Read the decision records before framing a session around a pillar contradiction.** An AD
126
- accepted last week can already contradict the pillars; a session convened to *decide* a reversal
127
- may be *ratifying* one that shipped — a materially different conversation.
121
+ - **Verify a doctrine claim against disk before building an argument on it.** Truth docs drift
122
+ from package rebuilds: a guardrail can assert a guard path that exists nowhere, inside a
123
+ suppression wrapper naming packages absent from the tree. When a session's centre is a recorded
124
+ prohibition, `ls` the guard path, read the owning package's config, and confirm the package is in
125
+ the tree.
126
+ - **Read the decision records before framing a session around a pillar contradiction.** A recently
127
+ accepted AD can already contradict the pillars; a session convened to *decide* a reversal may be
128
+ *ratifying* one that shipped — a materially different conversation.
128
129
  - **Give the opening map at least one aspect organised by seam.** A map organised by system layer
129
130
  owns none of the questions that land on the boundary between two planes or two phases, which is
130
131
  where the real design questions sit.
131
- - **Ledger only the user's half of a re-derivation turn.** When the user states a segregation and
132
- the facilitator re-derives a whole architecture from it in the same entry, only the first half is
133
- ledgerable; a re-derivation that re-reads an existing commitment into a new shape is a fork with a
134
- named amendment, never an edit.
135
132
  - **Check the ledger prefix against the product's vocabulary.** `D#` reads two ways in a product
136
133
  whose state lives in a database called D1; add a disambiguation line to the ledger header and
137
134
  write the colliding term in full inside entries.