@mindrian_os/install 1.13.0-beta.17 → 1.13.0-beta.19

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 (182) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +26 -0
  3. package/commands/act.md +1 -0
  4. package/commands/admin.md +1 -0
  5. package/commands/analyze-needs.md +2 -0
  6. package/commands/analyze-systems.md +2 -0
  7. package/commands/analyze-timing.md +2 -0
  8. package/commands/auto-explore.md +2 -0
  9. package/commands/beautiful-question.md +2 -0
  10. package/commands/brain-derive.md +2 -0
  11. package/commands/build-knowledge.md +2 -0
  12. package/commands/build-thesis.md +2 -0
  13. package/commands/causal.md +2 -0
  14. package/commands/challenge-assumptions.md +2 -0
  15. package/commands/compare-ventures.md +2 -0
  16. package/commands/dashboard.md +2 -1
  17. package/commands/deep-grade.md +2 -0
  18. package/commands/diagnose.md +21 -1
  19. package/commands/diagnostics.md +14 -3
  20. package/commands/doctor.md +4 -1
  21. package/commands/dogfood-flush.md +92 -0
  22. package/commands/dominant-designs.md +2 -0
  23. package/commands/explain-decision.md +2 -0
  24. package/commands/explore-domains.md +2 -0
  25. package/commands/explore-futures.md +2 -0
  26. package/commands/explore-trends.md +2 -0
  27. package/commands/export.md +1 -0
  28. package/commands/feynman-timeline-refresh.md +2 -0
  29. package/commands/file-meeting.md +2 -0
  30. package/commands/find-analogies.md +1 -0
  31. package/commands/find-bottlenecks.md +2 -0
  32. package/commands/find-connections.md +2 -0
  33. package/commands/funding.md +1 -0
  34. package/commands/grade.md +2 -0
  35. package/commands/graph.md +1 -0
  36. package/commands/hat-briefing.md +1 -0
  37. package/commands/heal.md +22 -170
  38. package/commands/help.md +54 -334
  39. package/commands/hmi-status.md +23 -144
  40. package/commands/jtbd.md +1 -0
  41. package/commands/leadership.md +2 -0
  42. package/commands/lean-canvas.md +2 -0
  43. package/commands/macro-trends.md +2 -0
  44. package/commands/map-unknowns.md +2 -0
  45. package/commands/memory.md +1 -0
  46. package/commands/models.md +1 -0
  47. package/commands/mos-reason.md +2 -0
  48. package/commands/mos.md +139 -0
  49. package/commands/mullins.md +2 -0
  50. package/commands/mva-brief.md +2 -0
  51. package/commands/mva-option.md +2 -0
  52. package/commands/new-project.md +2 -0
  53. package/commands/onboard.md +20 -7
  54. package/commands/operator.md +1 -0
  55. package/commands/opportunities.md +1 -0
  56. package/commands/organize.md +22 -469
  57. package/commands/persona.md +1 -0
  58. package/commands/pipeline.md +2 -0
  59. package/commands/present.md +1 -0
  60. package/commands/publish.md +2 -0
  61. package/commands/query.md +24 -102
  62. package/commands/radar.md +2 -0
  63. package/commands/reanalyze.md +1 -0
  64. package/commands/research.md +2 -0
  65. package/commands/room.md +2 -0
  66. package/commands/rooms.md +1 -0
  67. package/commands/root-cause.md +2 -0
  68. package/commands/rs-experts.md +1 -0
  69. package/commands/rs-explain.md +1 -0
  70. package/commands/rs-fetch.md +1 -0
  71. package/commands/rs-thesis.md +1 -0
  72. package/commands/scenario-plan.md +2 -0
  73. package/commands/scheduled-tasks.md +1 -0
  74. package/commands/score-innovation.md +2 -0
  75. package/commands/scout.md +1 -0
  76. package/commands/setup.md +2 -0
  77. package/commands/snapshot.md +2 -0
  78. package/commands/speakers.md +1 -0
  79. package/commands/splash.md +5 -2
  80. package/commands/status.md +1 -0
  81. package/commands/structure-argument.md +2 -0
  82. package/commands/suggest-next.md +2 -0
  83. package/commands/systems-thinking.md +2 -0
  84. package/commands/think-hats.md +2 -0
  85. package/commands/update.md +2 -0
  86. package/commands/user-needs.md +2 -0
  87. package/commands/validate.md +2 -0
  88. package/commands/value-proposition.md +2 -0
  89. package/commands/vault.md +2 -0
  90. package/commands/visualize.md +24 -29
  91. package/commands/whitespace.md +2 -1
  92. package/commands/wiki.md +1 -0
  93. package/hooks/hooks.json +22 -88
  94. package/lib/agents/auto-explore-agent.cjs +82 -0
  95. package/lib/core/breakthrough/canary.cjs +134 -0
  96. package/lib/core/breakthrough/canary.test.cjs +136 -0
  97. package/lib/core/breakthrough/detectors.cjs +359 -0
  98. package/lib/core/breakthrough/detectors.test.cjs +333 -0
  99. package/lib/core/breakthrough/ethics-fence.cjs +127 -0
  100. package/lib/core/breakthrough/ethics-fence.test.cjs +178 -0
  101. package/lib/core/breakthrough/resurfacing.cjs +150 -0
  102. package/lib/core/breakthrough/resurfacing.test.cjs +233 -0
  103. package/lib/core/breakthrough/review-queue.cjs +154 -0
  104. package/lib/core/breakthrough/review-queue.test.cjs +160 -0
  105. package/lib/core/breakthrough/scanner-d17-d18.test.cjs +229 -0
  106. package/lib/core/breakthrough/scanner.cjs +426 -0
  107. package/lib/core/breakthrough/scanner.test.cjs +267 -0
  108. package/lib/core/breakthrough/schema.cjs +164 -0
  109. package/lib/core/breakthrough/schema.test.cjs +256 -0
  110. package/lib/core/breakthrough/scoring.cjs +293 -0
  111. package/lib/core/breakthrough/scoring.test.cjs +423 -0
  112. package/lib/core/breakthrough/verb-dispatch.cjs +221 -0
  113. package/lib/core/breakthrough/verb-dispatch.test.cjs +185 -0
  114. package/lib/core/breakthrough/voice-scaffold.cjs +247 -0
  115. package/lib/core/breakthrough/voice-scaffold.test.cjs +251 -0
  116. package/lib/core/first-touch-version-stamper.cjs +113 -0
  117. package/lib/core/larry-thinness-acknowledgment.cjs +64 -0
  118. package/lib/core/larry-thinness-acknowledgment.test.cjs +97 -0
  119. package/lib/core/llm-name-suggester.cjs +194 -0
  120. package/lib/core/llm-name-suggester.test.cjs +132 -0
  121. package/lib/core/mva-orchestrator.cjs +41 -0
  122. package/lib/core/mva-telemetry.cjs +31 -143
  123. package/lib/core/navigation/edges.cjs +35 -0
  124. package/lib/core/navigation/memory-events.cjs +126 -0
  125. package/lib/core/room-auto-create.cjs +318 -0
  126. package/lib/core/room-auto-create.test.cjs +198 -0
  127. package/lib/core/room-discard-cascade.cjs +225 -0
  128. package/lib/core/room-discard-cascade.test.cjs +135 -0
  129. package/lib/core/room-name-validator.cjs +132 -0
  130. package/lib/core/room-name-validator.test.cjs +156 -0
  131. package/lib/core/room-naming-selector.cjs +357 -0
  132. package/lib/core/room-naming-selector.test.cjs +277 -0
  133. package/lib/core/room-receipt-emit.cjs +63 -0
  134. package/lib/core/room-skeleton-scaffold.cjs +315 -0
  135. package/lib/core/room-skeleton-scaffold.test.cjs +291 -0
  136. package/lib/core/stale-copy-scanner.cjs +190 -0
  137. package/lib/core/state-aware-router.cjs +78 -0
  138. package/lib/core/telemetry/schema.cjs +168 -0
  139. package/lib/core/telemetry/schema.test.cjs +124 -0
  140. package/lib/core/telemetry/validator.cjs +197 -0
  141. package/lib/core/telemetry/validator.test.cjs +188 -0
  142. package/lib/core/telemetry/writer.cjs +141 -0
  143. package/lib/core/telemetry/writer.test.cjs +331 -0
  144. package/lib/core/terminal-capability.cjs +88 -0
  145. package/lib/core/venture-shape-nudge.cjs +163 -0
  146. package/lib/core/venture-shape-nudge.test.cjs +161 -0
  147. package/lib/core/visual-ops.cjs +70 -2
  148. package/lib/hmi/selector-dispatcher.cjs +90 -1
  149. package/lib/hmi/shape-f7-breakthrough-renderer.cjs +222 -0
  150. package/lib/hmi/shape-f7-breakthrough-renderer.test.cjs +233 -0
  151. package/lib/memory/body-shape-coverage.test.cjs +268 -0
  152. package/lib/memory/doctor-deprecation-surface.test.cjs +185 -0
  153. package/lib/memory/first-touch-version.test.cjs +198 -0
  154. package/lib/memory/help-coverage.test.cjs +108 -0
  155. package/lib/memory/help-renderer.test.cjs +145 -0
  156. package/lib/memory/palette-consistency.test.cjs +127 -0
  157. package/lib/memory/pending-tension-store.cjs +80 -0
  158. package/lib/memory/render-v2-disposition.test.cjs +199 -0
  159. package/lib/memory/run-feynman-tests.cjs +213 -0
  160. package/lib/memory/sessionstart-coordinator.test.cjs +446 -0
  161. package/lib/memory/skill-vs-code-drift.test.cjs +257 -0
  162. package/lib/memory/soft-alias.test.cjs +144 -0
  163. package/lib/memory/stale-copy-scanner.test.cjs +291 -0
  164. package/lib/memory/state-aware-router.test.cjs +90 -0
  165. package/lib/memory/statusline-two-row.test.cjs +338 -0
  166. package/lib/memory/terminal-capability.test.cjs +155 -0
  167. package/lib/render/ROOM.md +74 -22
  168. package/lib/sessionstart/budget-compressor.cjs +130 -0
  169. package/lib/sessionstart/contributor-interface.cjs +134 -0
  170. package/lib/sessionstart/contributor-isolator.cjs +128 -0
  171. package/lib/sessionstart/precedence-ladder.cjs +47 -0
  172. package/lib/statusline/governing-thought-truncator.cjs +45 -0
  173. package/lib/statusline/two-row-renderer.cjs +186 -0
  174. package/lib/statusline/version-resolver.cjs +81 -0
  175. package/package.json +1 -1
  176. package/references/visual/ROOM.md +55 -0
  177. package/references/visual/palette.json +54 -0
  178. package/skills/larry-personality/SKILL.md +34 -0
  179. package/skills/ui-system/SKILL.md +109 -1
  180. package/skills/ui-system/rules/dual-palette.md +156 -0
  181. package/skills/ui-system/rules/glyph-disambiguation.md +171 -0
  182. package/skills/ui-system/rules/shape-f-zero-and-six.md +169 -0
package/commands/heal.md CHANGED
@@ -1,11 +1,14 @@
1
1
  ---
2
2
  name: heal
3
- description: Heal a room's structural drift after plugin upgrade
3
+ description: "[Deprecated] Heal a room's structural drift (use /mos:doctor --heal-room)"
4
+ help_jtbd: "Repair drift in your room's structure (deprecated: use /mos:doctor --heal-room)."
4
5
  argument-hint: "[room-dir]"
5
6
  body_shape: E (Action Report)
6
- body_shape_detail: 10-step heal table mirrors recipe provenance section
7
7
  serves_jtbd: ["audit-room"]
8
- teaching: "When a plugin upgrade leaves the room with structural drift, /mos:heal repairs the missing ROOM.md, broken backlinks, and stale section state. Use after every major version bump."
8
+ deprecated: true
9
+ deprecated_redirect: "doctor --heal-room"
10
+ deprecated_removal: "v1.14.0"
11
+ teaching: "Deprecated alias. Use /mos:doctor --heal-room to repair structural drift; the canonical heal logic lives in doctor class E. Scheduled removal: v1.14.0."
9
12
  ui_reference: skills/ui-system/SKILL.md
10
13
  allowed-tools:
11
14
  - Bash
@@ -13,185 +16,34 @@ allowed-tools:
13
16
  - Write
14
17
  ---
15
18
 
16
- # /mos:heal [room-dir]
19
+ # /mos:heal
17
20
 
18
- You are Larry. This command repairs structural drift in a room after a plugin upgrade. It wraps the v1.11.0 room-wiring heal recipe (10 idempotent steps) and produces a typed `heal-log.json` envelope per Canon Part 4 (every choice is graph data).
21
+ > Deprecated. /mos:heal now redirects to /mos:doctor --heal-room. Scheduled removal: v1.14.0. Use /mos:doctor --heal-room going forward.
19
22
 
20
- The recipe was dog-fooded on the mindrianOS room itself on 2026-04-29. Source-of-truth: `~/MindrianRooms/mindrianOS/methodology/2026-04-29-v1-11-0-room-wiring-heal-process.md`.
23
+ You are Larry. The user invoked /mos:heal. Per D-09 (LOCKED 2026-05-16, Phase 121.5-08 Sub-plan J) /mos:heal is a soft-alias stub for the v1.13.x window. The canonical surface is /mos:doctor --heal-room.
21
24
 
22
- ## When to invoke
25
+ ## Steps
23
26
 
24
- - After upgrading the plugin across a major version (v1.10.x to v1.11.x)
25
- - When `/mos:status` surfaces `EMPTY -- GAP` on canonical sections that should have ROOMs
26
- - When the on-stop invariant report shows `severity: error` violations
27
- - When `minto-stale.json` shows `artifacts_newer_than_minto` for many sections
28
- - Before generating a power demo, vault export, or first-contact viewer artifact
27
+ 1. Emit the deprecation note above to the user as a single cyan line (Larry voice; no em-dash; one sentence per skills/ui-system/SKILL.md Section 6).
29
28
 
30
- ## Canon traceability
31
-
32
- - **Part 7 (Reuse Before Build):** wraps existing `scripts/migrate-lazygraph.cjs` + `scripts/vault-section-state-generator.cjs` + `scripts/vault-section-minto-generator.cjs` + `scripts/compute-state`. Zero net-new methodology.
33
- - **Part 4 (Every Choice Is Graph Data):** writes `<room>/.mindrian/heal-log.json` capturing every section touched + every transition + every result.
34
- - **Part 8 (Graph Boundary):** heal is LOCAL-only. Reads STATE.md / ROOM.md / MINTO.md, runs local graph rebuild, writes local heal-log. Zero Brain queries; brain-derivation-queue is read-only in v1.11.1 (drain deferred to v1.12).
35
-
36
- ## Step 1: Resolve target room
37
-
38
- If the user passed an argument, treat it as the absolute or relative room directory. Otherwise heal the current working directory.
39
-
40
- ```bash
41
- ROOM_DIR="${1:-$PWD}"
42
- ```
43
-
44
- If `ROOM_DIR` does not exist on disk, render the 3-line error pattern from `skills/ui-system/SKILL.md` Section 7 and stop.
45
-
46
- ## Step 2: Run the orchestrator
47
-
48
- Invoke the 10-step heal orchestrator. The orchestrator is pure CJS and never throws on per-step failure (every step logs a status; mega-section MINTO writes that exceed FEYNMINTO-01 budget gracefully degrade with `status='blocked_feynminto_01'`).
29
+ 2. Invoke /mos:doctor --heal-room with the user's original arguments. The doctor command's class E fix engine handles all heal-room logic verbatim. Run:
49
30
 
50
31
  ```bash
51
- node "${CLAUDE_PLUGIN_ROOT}/scripts/heal-command.cjs" "$ROOM_DIR"
52
- ```
53
-
54
- Optional flags the orchestrator supports:
55
-
56
- - `--dry-run` plan only, zero mutation. Useful for previewing what heal would touch.
57
- - `--skip-step <N>` skip step N (1-10) on a re-run.
58
- - `--section <name>` restrict step 7 (MINTO regeneration) to one section.
59
-
60
- ## Step 3: Read the heal-log envelope
61
-
62
- After the orchestrator returns, read `<room>/.mindrian/heal-log.json`. The envelope schema:
63
-
64
- ```json
65
- {
66
- "schema_version": "1.0",
67
- "started_at": "ISO-8601",
68
- "ended_at": "ISO-8601",
69
- "room_dir": "/abs/path",
70
- "backup_dir": ".heal-backup/<TS>",
71
- "steps": [
72
- { "step": "step_01_backup", "status": "ok", "duration_ms": 27, "details": { ... } },
73
- ...
74
- ],
75
- "summary": {
76
- "ok_count": 0,
77
- "skipped_count": 0,
78
- "blocked_count": 0,
79
- "error_count": 0,
80
- "exit_code": 0
81
- }
82
- }
83
- ```
84
-
85
- ## Step 4: Render 4-zone output
86
-
87
- Follow `skills/ui-system/SKILL.md` Section 1 strictly. No reordering. No invention.
88
-
89
- ### Zone 1 -- Header Panel
90
-
91
- ```
92
- -- {room name} -- heal -- {venture stage from STATE.md frontmatter} --
32
+ node "${CLAUDE_PLUGIN_ROOT}/scripts/soft-alias-runner.cjs" --from heal --to "doctor --heal-room" --remaining-args $ARGUMENTS
93
33
  ```
94
34
 
95
- If no STATE.md frontmatter exists yet (heal just bootstrapped the room), use `Pre-Opportunity` as the stage. If `room name` cannot be resolved, fall back to the basename of `$ROOM_DIR`.
96
-
97
- ### Zone 2 -- Content Body (Shape E: Action Report)
98
-
99
- Mirror the recipe's "What this heal touched" provenance table. One row per orchestrator step, with status glyph + per-step details.
100
-
101
- ```
102
- [heal] action: 10-step room wiring heal
103
- [heal] source: scripts/heal-command.cjs (recipe 2026-04-29)
104
- [heal] backup: .heal-backup/<TS>/
105
-
106
- step status ms detail
107
- step_01_backup [check] 27ms N files copied to .heal-backup/<TS>/
108
- step_02_scaffold_sections [check] 1ms M sections created, K already present
109
- step_03_section_seed [check] 4ms P sections seeded
110
- step_04_lazygraph_rebuild [check] 226ms room.db: A artifacts, B sections, C nodes, D edges
111
- step_05_backfill_room_md [check] 3ms Q sections backfilled, R already present
112
- step_06_section_state [check] 82ms S sections with STATE.md
113
- step_07_section_minto [warn] 528ms T sections OK, U blocked_feynminto_01 (mega)
114
- step_08_queue_check [check] 0ms queue depth V, oldest enqueued YYYY-MM-DD
115
- step_09_root_state [check] 1020ms STATE.md regenerated, W bytes
116
- step_10_invariant_scan [dot] 0ms no_report_yet (writes on next /mos:* call)
117
-
118
- summary: ok=N blocked=M skipped=K error=0 exit_code=0
119
- ```
35
+ The runner emits a JSON envelope: `{redirect, deprecation_note, args, ok}`. Use it to confirm the redirect target then proceed with /mos:doctor --heal-room behavior. The user sees ONE deprecation note + the doctor heal output.
120
36
 
121
- Glyph mapping (per `skills/ui-system/SKILL.md` Section 3):
37
+ 3. Pass through any output from /mos:doctor verbatim.
122
38
 
123
- - `status='ok'` or `status='ok_with_blocked'` -> `[check]` (green)
124
- - `status='skipped'` -> `[dot]` (gray)
125
- - `status` startswith `'blocked_'` -> `[warn]` (yellow)
126
- - `status` startswith `'error_'` -> `[x]` (red)
39
+ ## Why this is a soft-alias
127
40
 
128
- The status column is a single ASCII glyph; the detail column is a one-line summary extracted from `step.details`.
129
-
130
- ### Zone 3 -- Intelligence Strip (conditional)
131
-
132
- Only render this zone when at least one of the following is true. Maximum 3 lines. Each indented 2 spaces.
133
-
134
- - Any step has `status` starting with `'blocked_feynminto_01'`
135
- -> `[warn] section <name> exceeded FEYNMINTO-01 budget; tier-0 fallback written`
136
- - Any step has `status` starting with `'error_'`
137
- -> `[x] step <name> errored: <reason>`
138
- - `step_08_queue_check.details.queue_depth > 0`
139
- -> `[empty-square] brain-derivation queue holds N entries (oldest M days); drain deferred to v1.12`
140
-
141
- If none of these conditions fire, omit Zone 3 entirely.
142
-
143
- ### Zone 4 -- Action Footer (NEVER omit)
144
-
145
- Three grounded next-commands. Primary marker `>` on the most relevant line, alternatives marked `>` as well per `skills/ui-system/SKILL.md` Section 1.
146
-
147
- ```
148
- > /mos:status review the regenerated STATE.md and per-section state
149
- > /mos:dashboard open the De Stijl knowledge-graph viewer over the rebuilt room.db
150
- > /mos:scout run the next overnight intelligence sweep on the healed room
151
- ```
152
-
153
- If any step status is `blocked_feynminto_01`, replace the third row with:
154
-
155
- ```
156
- > /mos:open <section>/MINTO.md review the tier-0 fallback MINTO; v1.12 will fix the budget
157
- ```
158
-
159
- ## What /mos:heal does NOT do (v1.11.1)
160
-
161
- These items are explicitly deferred to v1.12. Do not surprise the user; surface them when relevant.
162
-
163
- - **FEYNMINTO-01 budget scaling for mega-sections (BUG-1).** When a section has 40+ artifacts, the rendered source list alone consumes most of the 1500-token budget. v1.11.1 graceful-degrades with tier-0 fallback. v1.12 plan candidate: relax budget OR introduce sub-section hierarchy OR archive-folder pattern. Re-trigger condition: any monitored room with a 40+ artifact section reports inability to regenerate MINTO.
164
- - **brain-derivation-queue auto-drain hook (BUG-2).** The queue is read-only in heal Step 8 (reports depth + age of oldest entry). Drain hook deferred to v1.12. Re-trigger condition: next session-start hook OR /mos:* command-completion hook is being modified for unrelated reasons; bundle the drain hook in.
165
- - **Section auto-creation on plugin upgrade (BUG-5, recipe Open Issue 3).** When the plugin adds a new canonical section across versions, existing rooms do not auto-scaffold the new section directory on first /mos:* invocation. Heal Step 2 covers this for users running heal post-upgrade; the auto-scaffold-on-upgrade behavior remains unimplemented. Re-trigger condition: next plugin version adds a canonical section.
166
-
167
- ## Voice rules
168
-
169
- - Terse, structural, confident. Per `skills/ui-system/SKILL.md` Section 6.
170
- - Never apologize for blocked sections; surface them as a warn glyph in Zone 3 with the v1.12 candidate named.
171
- - One insight per line. Never combine warning + queue depth into a single sentence.
172
- - NO EMOJI. Use only the 12 glyphs from the symbol vocabulary.
173
- - Never re-run heal automatically. The user always confirms before any second invocation.
174
-
175
- ## Error handling
176
-
177
- If the orchestrator exits with code 2 (no-step-success), render the 3-line error pattern:
178
-
179
- ```
180
- x heal completed with zero successful steps
181
- Why: every step errored; check .mindrian/heal-log.json for per-step reasons
182
- Fix: /mos:open .mindrian/heal-log.json
183
- ```
184
-
185
- If the orchestrator crashes (uncaught exception, exit code != 0 and != 2), render:
186
-
187
- ```
188
- x heal-command crashed
189
- Why: <error message tail from stderr>
190
- Fix: node scripts/heal-command.cjs <room-dir> --dry-run
191
- ```
41
+ Cluster 5 audit (2026-05-15) found four diagnostic commands with overlapping semantics: heal vs doctor, query vs graph, organize vs rooms, visualize vs dashboard. /mos:heal's behavior (10-step room wiring heal) is structurally identical to what /mos:doctor's class E does on a room subtree. Folding heal into doctor --heal-room collapses the naming-drift surface without breaking tester muscle memory.
192
42
 
193
- The dry-run path is the safest path to surface what heal would attempt without mutating any room state.
43
+ Per D-09 the old command stays as a soft-alias stub for v1.13.x; removal is scheduled v1.14.0. CHANGELOG announces the rename.
194
44
 
195
- ## Provenance
45
+ ## Cross-references
196
46
 
197
- This command was authored as the v1.11.1 GA closing artifact (Phase 94.1-01). The 10-step recipe was dog-fooded on the mindrianOS room itself during the 2026-04-29 wiring audit. Source: `~/MindrianRooms/mindrianOS/methodology/2026-04-29-v1-11-0-room-wiring-heal-process.md`. The orchestrator (`scripts/heal-command.cjs`) and the fixture suite (`lib/memory/heal-command.test.cjs`) ship under BSL 1.1.
47
+ - `commands/doctor.md` -- the canonical target with the full heal logic.
48
+ - `scripts/soft-alias-runner.cjs` -- the shared runner the 5 soft-alias stubs share.
49
+ - Canon Part 7 (Reuse Before Build) -- consolidation rationale.