@mindrian_os/cli 2.0.0-beta.3 → 2.0.0-beta.31

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 (1829) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/.mcp.json +14 -0
  3. package/CHANGELOG.md +467 -0
  4. package/agents/analogy-query-fetcher.md +119 -0
  5. package/agents/brain-query.md +91 -0
  6. package/agents/competitor-watch-fetcher.md +94 -0
  7. package/agents/framework-runner.md +258 -0
  8. package/agents/grading.md +216 -0
  9. package/agents/grant-reviewer.md +191 -0
  10. package/agents/investor.md +141 -0
  11. package/agents/larry-extended.md +215 -0
  12. package/agents/meeting-perspective-extractor.md +94 -0
  13. package/agents/opportunity-scanner.md +105 -0
  14. package/agents/persona-analyst.md +201 -0
  15. package/agents/research.md +103 -0
  16. package/agents/reverse-salient-agent.md +42 -0
  17. package/agents/vault-section-reviewer.md +107 -0
  18. package/assets/banner-showcase.html +537 -0
  19. package/assets/fonts/BebasNeue-Regular.ttf +0 -0
  20. package/assets/fonts/Inter-Bold.ttf +0 -0
  21. package/assets/fonts/Inter-Regular.ttf +0 -0
  22. package/assets/logo.svg +10 -0
  23. package/bin/local-chain-recommender.cjs +256 -0
  24. package/bin/mindrian-brain-mcp-client.cjs +319 -0
  25. package/bin/mindrian-mcp-server.cjs +445 -0
  26. package/bin/mindrian-mcp-shim.cjs +100 -0
  27. package/bin/mindrian-tools.cjs +784 -0
  28. package/commands/act.md +529 -0
  29. package/commands/admin.md +439 -0
  30. package/commands/agentshield.md +49 -0
  31. package/commands/analyze-needs.md +78 -0
  32. package/commands/analyze-systems.md +73 -0
  33. package/commands/analyze-timing.md +98 -0
  34. package/commands/auto-explore.md +85 -0
  35. package/commands/beautiful-question.md +76 -0
  36. package/commands/bono.md +152 -0
  37. package/commands/brain-derive.md +137 -0
  38. package/commands/build-knowledge.md +121 -0
  39. package/commands/build-thesis.md +94 -0
  40. package/commands/causal.md +269 -0
  41. package/commands/challenge-assumptions.md +78 -0
  42. package/commands/compare-ventures.md +117 -0
  43. package/commands/correct-reference-now.md +88 -0
  44. package/commands/dashboard.md +144 -0
  45. package/commands/deck.md +117 -0
  46. package/commands/deep-grade.md +214 -0
  47. package/commands/diagnose.md +131 -0
  48. package/commands/diagnostics.md +195 -0
  49. package/commands/dial-memory-refresh.md +113 -0
  50. package/commands/diffusion.md +129 -0
  51. package/commands/discover.md +221 -0
  52. package/commands/doctor.md +271 -0
  53. package/commands/dogfood-flush.md +130 -0
  54. package/commands/dominant-designs.md +76 -0
  55. package/commands/eureka.md +315 -0
  56. package/commands/explain-decision.md +135 -0
  57. package/commands/explore-domains.md +78 -0
  58. package/commands/explore-futures.md +67 -0
  59. package/commands/explore-opportunity.md +172 -0
  60. package/commands/explore-trends.md +78 -0
  61. package/commands/export.md +128 -0
  62. package/commands/feynman-timeline-refresh.md +102 -0
  63. package/commands/file-meeting.md +1195 -0
  64. package/commands/find-analogies.md +369 -0
  65. package/commands/find-bottlenecks.md +108 -0
  66. package/commands/find-connections.md +111 -0
  67. package/commands/funding.md +114 -0
  68. package/commands/futures.md +128 -0
  69. package/commands/grade-grant.md +297 -0
  70. package/commands/grade.md +257 -0
  71. package/commands/graph.md +218 -0
  72. package/commands/hat-briefing.md +163 -0
  73. package/commands/heal.md +72 -0
  74. package/commands/help.md +176 -0
  75. package/commands/hmi-status.md +75 -0
  76. package/commands/ignite.md +229 -0
  77. package/commands/ingest-methodology.md +128 -0
  78. package/commands/intel-pipeline.md +133 -0
  79. package/commands/jtbd.md +262 -0
  80. package/commands/leadership.md +113 -0
  81. package/commands/lean-canvas.md +74 -0
  82. package/commands/macro-trends.md +88 -0
  83. package/commands/map-unknowns.md +76 -0
  84. package/commands/memory-cortex-reach.md +79 -0
  85. package/commands/memory.md +213 -0
  86. package/commands/models.md +200 -0
  87. package/commands/mos-reason.md +489 -0
  88. package/commands/mos.md +162 -0
  89. package/commands/mullins.md +155 -0
  90. package/commands/mva-brief.md +86 -0
  91. package/commands/mva-option.md +119 -0
  92. package/commands/mva-report.md +76 -0
  93. package/commands/new-project.md +633 -0
  94. package/commands/new-surface.md +116 -0
  95. package/commands/onboard.md +489 -0
  96. package/commands/operator.md +168 -0
  97. package/commands/opportunities.md +177 -0
  98. package/commands/organize.md +74 -0
  99. package/commands/persona.md +276 -0
  100. package/commands/pipeline.md +167 -0
  101. package/commands/present.md +125 -0
  102. package/commands/publish.md +227 -0
  103. package/commands/pws-brain.md +154 -0
  104. package/commands/qualify-opportunity.md +113 -0
  105. package/commands/query.md +70 -0
  106. package/commands/radar.md +110 -0
  107. package/commands/reanalyze.md +124 -0
  108. package/commands/research.md +467 -0
  109. package/commands/room.md +385 -0
  110. package/commands/rooms.md +682 -0
  111. package/commands/root-cause.md +77 -0
  112. package/commands/rs-experts.md +153 -0
  113. package/commands/rs-explain.md +134 -0
  114. package/commands/rs-fetch.md +119 -0
  115. package/commands/rs-thesis.md +131 -0
  116. package/commands/scenario-plan.md +80 -0
  117. package/commands/scheduled-tasks.md +308 -0
  118. package/commands/score-innovation.md +78 -0
  119. package/commands/scout.md +379 -0
  120. package/commands/setup.md +658 -0
  121. package/commands/show.md +71 -0
  122. package/commands/skill.md +108 -0
  123. package/commands/snapshot.md +179 -0
  124. package/commands/speakers.md +118 -0
  125. package/commands/splash.md +55 -0
  126. package/commands/stance.md +91 -0
  127. package/commands/status.md +109 -0
  128. package/commands/structure-argument.md +82 -0
  129. package/commands/suggest-next.md +141 -0
  130. package/commands/systems-thinking.md +224 -0
  131. package/commands/think-hats.md +86 -0
  132. package/commands/trending-to-absurd.md +151 -0
  133. package/commands/update.md +256 -0
  134. package/commands/user-needs.md +77 -0
  135. package/commands/validate.md +77 -0
  136. package/commands/value-proposition.md +116 -0
  137. package/commands/vault.md +330 -0
  138. package/commands/visualize.md +71 -0
  139. package/commands/whitespace.md +541 -0
  140. package/commands/wiki.md +96 -0
  141. package/data/ROOM.md +47 -0
  142. package/data/brain-census.generated.json +2617 -0
  143. package/data/brain-orchestration-projection.json +4973 -0
  144. package/data/brain-packet-schema.json +545 -0
  145. package/data/brain-surface-contract.json +32 -0
  146. package/data/capability-ledger.json +391 -0
  147. package/data/capability-map-registry.json +23 -0
  148. package/data/command-registry.json +2433 -0
  149. package/data/connector-coverage-ledger.json +1618 -0
  150. package/data/connector-out-of-spine-allowlist.json +71 -0
  151. package/data/connector-registry.json +3637 -0
  152. package/data/corpus-stats-source.json +11 -0
  153. package/data/corpus-stats.generated.json +10 -0
  154. package/data/cross-domain-analogues.json +15 -0
  155. package/data/deck-aliases.json +6 -0
  156. package/data/deck-styles.json +85 -0
  157. package/data/deployment-surfaces.json +69 -0
  158. package/data/dispatch-framework-map.json +18 -0
  159. package/data/doctor-modules.json +206 -0
  160. package/data/dual-graph-health-baseline.json +12 -0
  161. package/data/eureka-critic-tags.json +32 -0
  162. package/data/first-reward-surfaces.json +66 -0
  163. package/data/first-touch-surfaces.json +60 -0
  164. package/data/flagship-floor-set.json +37 -0
  165. package/data/framework-names.json +121 -0
  166. package/data/grant-rubric-fixtures/early-stage-pre-seed.json +18 -0
  167. package/data/grant-rubric-fixtures/early-stage-round-a.json +18 -0
  168. package/data/grant-rubric-fixtures/early-stage-seed.json +18 -0
  169. package/data/grant-rubric-fixtures/hybrid-seed-incentive.json +18 -0
  170. package/data/grant-rubric-fixtures/rd-fund.json +18 -0
  171. package/data/grant-rubric-fixtures/regional-innovation-incubators.json +18 -0
  172. package/data/grant-rubric-fixtures/technology-incubators.json +18 -0
  173. package/data/grant-rubric-fixtures/tnufa.json +167 -0
  174. package/data/grant-rubric-schema.json +33 -0
  175. package/data/harness-fixtures/converged-room/.context/ROOM.md +13 -0
  176. package/data/harness-fixtures/converged-room/.intelligence/ROOM.md +13 -0
  177. package/data/harness-fixtures/converged-room/.snapshots/ROOM.md +13 -0
  178. package/data/harness-fixtures/converged-room/MINTO.md +19 -0
  179. package/data/harness-fixtures/converged-room/STATE.md +73 -0
  180. package/data/harness-fixtures/converged-room/USER.md +23 -0
  181. package/data/harness-fixtures/converged-room/assets/ROOM.md +13 -0
  182. package/data/harness-fixtures/converged-room/business-model/CONTEXT.md +32 -0
  183. package/data/harness-fixtures/converged-room/business-model/ROOM.md +36 -0
  184. package/data/harness-fixtures/converged-room/competitive-analysis/CONTEXT.md +33 -0
  185. package/data/harness-fixtures/converged-room/competitive-analysis/ROOM.md +35 -0
  186. package/data/harness-fixtures/converged-room/financial-model/CONTEXT.md +30 -0
  187. package/data/harness-fixtures/converged-room/financial-model/ROOM.md +35 -0
  188. package/data/harness-fixtures/converged-room/funding/CONTEXT.md +41 -0
  189. package/data/harness-fixtures/converged-room/funding/ROOM.md +35 -0
  190. package/data/harness-fixtures/converged-room/legal-ip/CONTEXT.md +30 -0
  191. package/data/harness-fixtures/converged-room/legal-ip/ROOM.md +35 -0
  192. package/data/harness-fixtures/converged-room/market-analysis/CONTEXT.md +32 -0
  193. package/data/harness-fixtures/converged-room/market-analysis/ROOM.md +35 -0
  194. package/data/harness-fixtures/converged-room/opportunity-bank/CONTEXT.md +39 -0
  195. package/data/harness-fixtures/converged-room/opportunity-bank/ROOM.md +36 -0
  196. package/data/harness-fixtures/converged-room/problem-definition/CONTEXT.md +32 -0
  197. package/data/harness-fixtures/converged-room/problem-definition/ROOM.md +36 -0
  198. package/data/harness-fixtures/converged-room/references/ROOM.md +13 -0
  199. package/data/harness-fixtures/converged-room/references/SECTION-SCHEMA.md +213 -0
  200. package/data/harness-fixtures/converged-room/references/SUB-SCHEMAS.md +91 -0
  201. package/data/harness-fixtures/converged-room/solution-design/CONTEXT.md +36 -0
  202. package/data/harness-fixtures/converged-room/solution-design/ROOM.md +36 -0
  203. package/data/harness-fixtures/converged-room/strategy/CONTEXT.md +35 -0
  204. package/data/harness-fixtures/converged-room/strategy/ROOM.md +35 -0
  205. package/data/harness-fixtures/converged-room/team/ROOM.md +13 -0
  206. package/data/harness-fixtures/converged-room/team-execution/CONTEXT.md +36 -0
  207. package/data/harness-fixtures/converged-room/team-execution/ROOM.md +35 -0
  208. package/data/harness-manifest.json +74 -0
  209. package/data/harness-policies/CONTEXT.md +55 -0
  210. package/data/harness-policies/_schema.json +42 -0
  211. package/data/harness-policies/contract-parity-larry.json +63 -0
  212. package/data/harness-policies/gate-card-fire.json +13 -0
  213. package/data/harness-policies/gate-graph-derive-health.json +13 -0
  214. package/data/harness-policies/gate-shape-declaration.json +13 -0
  215. package/data/harness-policies/gate-tool-honesty.json +13 -0
  216. package/data/harness-policies/gate-worktree-hygiene.json +13 -0
  217. package/data/harness-policies/memory-write-policy.json +28 -0
  218. package/data/harness-policies/registry-drift.json +13 -0
  219. package/data/harness-policies/release-payload-ceiling.json +13 -0
  220. package/data/harness-policies/voice-backend-noun-free.json +13 -0
  221. package/data/harness-policies/voice-fork-as-card.json +13 -0
  222. package/data/harness-policies/voice-glyph-present.json +13 -0
  223. package/data/harness-policies/voice-hyphens-only.json +13 -0
  224. package/data/help-groups.json +236 -0
  225. package/data/hitl-shape-backfill.json +777 -0
  226. package/data/hitl-shape-declaration-fixtures/invalid-bad-shape.json +5 -0
  227. package/data/hitl-shape-declaration-fixtures/invalid-missing-why.json +4 -0
  228. package/data/hitl-shape-declaration-fixtures/invalid-ranker-contradiction.json +6 -0
  229. package/data/hitl-shape-declaration-fixtures/invalid-skill-gap.json +3 -0
  230. package/data/hitl-shape-declaration-fixtures/valid-multi-stage.json +7 -0
  231. package/data/hitl-shape-declaration-fixtures/valid-single-shape.json +5 -0
  232. package/data/hitl-shape-declaration-fixtures/valid-skill-exempt.json +5 -0
  233. package/data/hitl-shape-declaration-schema.json +34 -0
  234. package/data/hitl-stages-fixtures/bono.json +10 -0
  235. package/data/hitl-stages-fixtures/pipeline-1.json +9 -0
  236. package/data/hitl-stages-fixtures/pipeline-2.json +9 -0
  237. package/data/hitl-stages-fixtures/pipeline-3.json +10 -0
  238. package/data/hitl-stages-fixtures/research.json +10 -0
  239. package/data/hitl-stages-fixtures/rs-convergence.json +10 -0
  240. package/data/hitl-stages-fixtures/rs-family.json +11 -0
  241. package/data/hitl-stages-fixtures/rs-reverse-salient.json +10 -0
  242. package/data/hitl-stages-fixtures/trending-to-absurd.json +11 -0
  243. package/data/hitl-stages-schema.json +26 -0
  244. package/data/mcp-tool-connectors.json +464 -0
  245. package/data/mva-agent-prompts.json +31 -0
  246. package/data/mva-deck-template.html +15 -0
  247. package/data/mva-heuristic-keywords.json +35 -0
  248. package/data/orchestration-command-ledger.json +576 -0
  249. package/data/orchestration-unwired-allowlist.json +6 -0
  250. package/data/portfolio-ahp-matrix.json +16 -0
  251. package/data/publish-needs.json +76 -0
  252. package/data/render-coverage-registry.json +1152 -0
  253. package/data/research-sources.json +58 -0
  254. package/data/roadmap-type-chains.json +28 -0
  255. package/data/room-blueprints.json +156 -0
  256. package/data/subagent-dispatch-grants.json +150 -0
  257. package/hooks/hooks.json +493 -0
  258. package/hooks/run-hook.cmd +64 -0
  259. package/lib/__init__.py +0 -0
  260. package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
  261. package/lib/agents/auto-explore-agent.cjs +1163 -0
  262. package/lib/agents/mva/brain-classic-traps.cjs +55 -0
  263. package/lib/agents/mva/brain-cross-domain.cjs +79 -0
  264. package/lib/agents/mva/brain-similar-ventures.cjs +93 -0
  265. package/lib/agents/mva/dashboard-graph-neighborhood.cjs +72 -0
  266. package/lib/agents/mva/index.cjs +42 -0
  267. package/lib/agents/mva/six-hats-red-black.cjs +137 -0
  268. package/lib/agents/mva/tavily-funding-scan.cjs +147 -0
  269. package/lib/agents/mva/test-all-six-agents.cjs +467 -0
  270. package/lib/agents/reverse-salient-agent.cjs +757 -0
  271. package/lib/agents/tension-hook-agent.cjs +586 -0
  272. package/lib/brain/ROOM.md +44 -0
  273. package/lib/brain/chain-recommender.cjs +784 -0
  274. package/lib/brain/curation-batch.cjs +519 -0
  275. package/lib/brain/framework-chain-slice.cjs +252 -0
  276. package/lib/brain/hypergraph-event-schema.cjs +184 -0
  277. package/lib/chat/chat-context.js +185 -0
  278. package/lib/chat/chat-panel.js +721 -0
  279. package/lib/chat/fabric-chat.cjs +288 -0
  280. package/lib/chat/generative-tools.js +219 -0
  281. package/lib/conversation/ROOM.md +39 -0
  282. package/lib/conversation/classifier-rules.json +38 -0
  283. package/lib/conversation/classifier.cjs +264 -0
  284. package/lib/conversation/operator-epistemic-cap.test.cjs +156 -0
  285. package/lib/conversation/operator.cjs +492 -0
  286. package/lib/conversation/operator.test.cjs +160 -0
  287. package/lib/copy/115-spec-strings.cjs +55 -0
  288. package/lib/core/__init__.py +0 -0
  289. package/lib/core/__nav-stub.cjs +14 -0
  290. package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
  291. package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
  292. package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
  293. package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
  294. package/lib/core/__pycache__/rs_corpus_exclude.cpython-312.pyc +0 -0
  295. package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
  296. package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
  297. package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
  298. package/lib/core/abstraction-gate.cjs +133 -0
  299. package/lib/core/act-jtbd-blurb.cjs +231 -0
  300. package/lib/core/artifact-id.cjs +148 -0
  301. package/lib/core/asset-ops.cjs +151 -0
  302. package/lib/core/auto-commit-throttle.cjs +129 -0
  303. package/lib/core/bearer-token.cjs +199 -0
  304. package/lib/core/behavioral/observation-schema.cjs +86 -0
  305. package/lib/core/bono/cell-fanout.cjs +305 -0
  306. package/lib/core/bono/debate-composition.cjs +495 -0
  307. package/lib/core/bono/hat-governance.cjs +367 -0
  308. package/lib/core/bono/persona-research.cjs +288 -0
  309. package/lib/core/bono/reviewer-governance.cjs +331 -0
  310. package/lib/core/brain-client.cjs +2365 -0
  311. package/lib/core/brain-derivation-prompts.cjs +331 -0
  312. package/lib/core/brain-derivation-queue.cjs +535 -0
  313. package/lib/core/brain-derivation.cjs +740 -0
  314. package/lib/core/brain-md-schema.cjs +528 -0
  315. package/lib/core/brain-md-staleness.cjs +357 -0
  316. package/lib/core/brain-response-sanitize.cjs +396 -0
  317. package/lib/core/breakthrough/canary.cjs +134 -0
  318. package/lib/core/breakthrough/canary.test.cjs +136 -0
  319. package/lib/core/breakthrough/detectors.cjs +359 -0
  320. package/lib/core/breakthrough/detectors.test.cjs +333 -0
  321. package/lib/core/breakthrough/ethics-fence.cjs +129 -0
  322. package/lib/core/breakthrough/ethics-fence.test.cjs +178 -0
  323. package/lib/core/breakthrough/resurfacing.cjs +150 -0
  324. package/lib/core/breakthrough/resurfacing.test.cjs +233 -0
  325. package/lib/core/breakthrough/review-queue.cjs +168 -0
  326. package/lib/core/breakthrough/review-queue.test.cjs +160 -0
  327. package/lib/core/breakthrough/scanner-d17-d18.test.cjs +229 -0
  328. package/lib/core/breakthrough/scanner.cjs +435 -0
  329. package/lib/core/breakthrough/scanner.test.cjs +267 -0
  330. package/lib/core/breakthrough/schema.cjs +180 -0
  331. package/lib/core/breakthrough/schema.test.cjs +256 -0
  332. package/lib/core/breakthrough/scoring.cjs +293 -0
  333. package/lib/core/breakthrough/scoring.test.cjs +423 -0
  334. package/lib/core/breakthrough/verb-dispatch.cjs +230 -0
  335. package/lib/core/breakthrough/verb-dispatch.test.cjs +185 -0
  336. package/lib/core/breakthrough/voice-scaffold.cjs +249 -0
  337. package/lib/core/breakthrough/voice-scaffold.test.cjs +251 -0
  338. package/lib/core/bridge-writer.cjs +477 -0
  339. package/lib/core/cache-prune.cjs +314 -0
  340. package/lib/core/card-fire-gate.cjs +107 -0
  341. package/lib/core/card-fire-sidechannel.cjs +518 -0
  342. package/lib/core/chain-executor.cjs +939 -0
  343. package/lib/core/chain-retry.cjs +214 -0
  344. package/lib/core/chain-step-dispatcher.cjs +397 -0
  345. package/lib/core/chat-context-builder.cjs +253 -0
  346. package/lib/core/check-plugin-enabled.cjs +145 -0
  347. package/lib/core/close-loop-writer.cjs +492 -0
  348. package/lib/core/command-registration-check.cjs +246 -0
  349. package/lib/core/correlation-label-index.cjs +230 -0
  350. package/lib/core/correlation.cjs +112 -0
  351. package/lib/core/coverage-monitor.cjs +183 -0
  352. package/lib/core/coverage-rollup.cjs +232 -0
  353. package/lib/core/cross-room-aggregator.cjs +1127 -0
  354. package/lib/core/cross-room-store.cjs +292 -0
  355. package/lib/core/cross-room-triggers.cjs +222 -0
  356. package/lib/core/daily-briefing.cjs +438 -0
  357. package/lib/core/decision-axes.cjs +178 -0
  358. package/lib/core/decision-capture.cjs +618 -0
  359. package/lib/core/deck-design-rules.cjs +211 -0
  360. package/lib/core/deep-links.cjs +82 -0
  361. package/lib/core/directive-envelope.cjs +217 -0
  362. package/lib/core/directive-envelope.test.cjs +225 -0
  363. package/lib/core/dispatch-optimizer.cjs +354 -0
  364. package/lib/core/doc-text-extractor.cjs +133 -0
  365. package/lib/core/doctor/capability-ledger-module.cjs +170 -0
  366. package/lib/core/doctor/card-fire-health-module.cjs +159 -0
  367. package/lib/core/doctor/cascade-rooms-active-module.cjs +127 -0
  368. package/lib/core/doctor/cascade-rooms-module.cjs +184 -0
  369. package/lib/core/doctor/class-m-brain-smoke.cjs +479 -0
  370. package/lib/core/doctor/class-m-brain-smoke.test.cjs +448 -0
  371. package/lib/core/doctor/class-s-eureka-smoke.cjs +380 -0
  372. package/lib/core/doctor/deployment-surfaces-module.cjs +408 -0
  373. package/lib/core/doctor/deprecated-usage-module.cjs +155 -0
  374. package/lib/core/doctor/eureka-fts-health-module.cjs +236 -0
  375. package/lib/core/doctor/graph-derive-heal-retrofit-module.cjs +148 -0
  376. package/lib/core/doctor/graph-derive-health-module.cjs +486 -0
  377. package/lib/core/doctor/install-incomplete-module.cjs +320 -0
  378. package/lib/core/doctor/install-state-module.cjs +503 -0
  379. package/lib/core/doctor/mcp-surface-module.cjs +369 -0
  380. package/lib/core/doctor/mode-select-checkpoint-module.cjs +113 -0
  381. package/lib/core/doctor/plugin-enabled-state-module.cjs +86 -0
  382. package/lib/core/doctor/room-graph-density-module.cjs +181 -0
  383. package/lib/core/doctor/room-md-module.cjs +198 -0
  384. package/lib/core/doctor/shared.cjs +555 -0
  385. package/lib/core/doctor/stale-first-touch-copy-module.cjs +83 -0
  386. package/lib/core/doctor/statusline-visibility-module.cjs +295 -0
  387. package/lib/core/doctor/ui-compliance-module.cjs +223 -0
  388. package/lib/core/doctor/umbilical-module.cjs +486 -0
  389. package/lib/core/doctor/verify-surface-module.cjs +82 -0
  390. package/lib/core/doctor/voice-style-log-module.cjs +146 -0
  391. package/lib/core/domain-insight-sweep.cjs +224 -0
  392. package/lib/core/drift-baseline.cjs +362 -0
  393. package/lib/core/drift-runtime-reachability.cjs +283 -0
  394. package/lib/core/dual-path-detector.cjs +84 -0
  395. package/lib/core/dual-path-detector.test.cjs +334 -0
  396. package/lib/core/enrichment-queue.cjs +636 -0
  397. package/lib/core/eureka/ahp-weights.cjs +232 -0
  398. package/lib/core/eureka/analogy-fitness.cjs +326 -0
  399. package/lib/core/eureka/compression-meter.cjs +165 -0
  400. package/lib/core/eureka/embedding-classifier.cjs +226 -0
  401. package/lib/core/eureka/embedding-spine.cjs +563 -0
  402. package/lib/core/eureka/entity-classifier.cjs +232 -0
  403. package/lib/core/eureka/entity-extractor.cjs +356 -0
  404. package/lib/core/eureka/eureka-enable.cjs +228 -0
  405. package/lib/core/eureka/eureka-offer.cjs +225 -0
  406. package/lib/core/eureka/eureka-reach-runner.cjs +430 -0
  407. package/lib/core/eureka/explore-chain.cjs +834 -0
  408. package/lib/core/eureka/explored-artifact.cjs +456 -0
  409. package/lib/core/eureka/fts-index-lifecycle.cjs +265 -0
  410. package/lib/core/eureka/grade-grant-examine.cjs +544 -0
  411. package/lib/core/eureka/grade-grant.cjs +596 -0
  412. package/lib/core/eureka/hybrid-retrieve.cjs +256 -0
  413. package/lib/core/eureka/lateral-engine-adapter.cjs +118 -0
  414. package/lib/core/eureka/lexical-overlap.cjs +98 -0
  415. package/lib/core/eureka/online-pattern-query.cjs +142 -0
  416. package/lib/core/eureka/opportunity-harvest.cjs +752 -0
  417. package/lib/core/eureka/opportunity-statement.cjs +519 -0
  418. package/lib/core/eureka/portfolio-dimensions.cjs +255 -0
  419. package/lib/core/eureka/qualify-opportunity.cjs +607 -0
  420. package/lib/core/eureka/reasoning-mode.cjs +481 -0
  421. package/lib/core/eureka/report-html.cjs +368 -0
  422. package/lib/core/eureka/research-filing.cjs +547 -0
  423. package/lib/core/eureka/room-native-substrate.cjs +343 -0
  424. package/lib/core/eureka/tail-quadrant.cjs +177 -0
  425. package/lib/core/eureka/tri-modal-index.cjs +564 -0
  426. package/lib/core/eureka/vector-store.cjs +414 -0
  427. package/lib/core/eureka-critic.cjs +733 -0
  428. package/lib/core/eureka-deps-resolver.cjs +179 -0
  429. package/lib/core/expert-genesis.cjs +437 -0
  430. package/lib/core/expert-library.cjs +303 -0
  431. package/lib/core/exports-log.cjs +79 -0
  432. package/lib/core/feynman/ROOM.md +25 -0
  433. package/lib/core/feynman/dial-memory-renderer.cjs +279 -0
  434. package/lib/core/feynman/dial-memory-runner.cjs +173 -0
  435. package/lib/core/feynman/feynman-seed-writer.cjs +187 -0
  436. package/lib/core/feynman/timeline-renderer.cjs +197 -0
  437. package/lib/core/feynman/timeline-runner.cjs +281 -0
  438. package/lib/core/feynman-minto-invariants.cjs +609 -0
  439. package/lib/core/findings-wirer.cjs +360 -0
  440. package/lib/core/first-touch-version-stamper.cjs +113 -0
  441. package/lib/core/folder-memory-async.cjs +424 -0
  442. package/lib/core/folder-memory-shared.cjs +890 -0
  443. package/lib/core/folder-memory.cjs +546 -0
  444. package/lib/core/framework-chain-composer.cjs +583 -0
  445. package/lib/core/frontmatter-schemas.cjs +468 -0
  446. package/lib/core/fusion-router.cjs +540 -0
  447. package/lib/core/futures/causal-cue.cjs +91 -0
  448. package/lib/core/futures/orchestrator.cjs +1391 -0
  449. package/lib/core/futures/subsystem-render.cjs +164 -0
  450. package/lib/core/gate-relevance.cjs +278 -0
  451. package/lib/core/git-ops.cjs +141 -0
  452. package/lib/core/graph-backfill.cjs +562 -0
  453. package/lib/core/graph-candidate-producer.cjs +235 -0
  454. package/lib/core/graph-derivation.cjs +546 -0
  455. package/lib/core/graph-derive-classifier.cjs +352 -0
  456. package/lib/core/graph-ops.cjs +274 -0
  457. package/lib/core/graph-refine-loop.cjs +194 -0
  458. package/lib/core/graph-self-heal.cjs +289 -0
  459. package/lib/core/greeting-intent-detector.cjs +201 -0
  460. package/lib/core/grill-engine.cjs +459 -0
  461. package/lib/core/hat-persistence.cjs +274 -0
  462. package/lib/core/hsi-engine.cjs +439 -0
  463. package/lib/core/hsi-lsa.cjs +246 -0
  464. package/lib/core/hsi-spectral.cjs +554 -0
  465. package/lib/core/hsi-to-graph.test.cjs +168 -0
  466. package/lib/core/icm-forest.cjs +703 -0
  467. package/lib/core/ignite-branch-gate.cjs +66 -0
  468. package/lib/core/index.cjs +60 -0
  469. package/lib/core/insight-sensors.cjs +1000 -0
  470. package/lib/core/install-state.cjs +242 -0
  471. package/lib/core/integration-registry.cjs +232 -0
  472. package/lib/core/intel-pipeline.cjs +545 -0
  473. package/lib/core/intelligence-cascade.cjs +852 -0
  474. package/lib/core/issue-tree.cjs +269 -0
  475. package/lib/core/larry-thinness-acknowledgment.cjs +64 -0
  476. package/lib/core/larry-thinness-acknowledgment.test.cjs +97 -0
  477. package/lib/core/lazygraph-ops.cjs +1453 -0
  478. package/lib/core/lens-engine.cjs +434 -0
  479. package/lib/core/leverage-scan.cjs +218 -0
  480. package/lib/core/llm-name-suggester.cjs +194 -0
  481. package/lib/core/llm-name-suggester.test.cjs +132 -0
  482. package/lib/core/lru-cache.cjs +139 -0
  483. package/lib/core/mcp-dep-heal.cjs +475 -0
  484. package/lib/core/mcp-dep-heal.test.cjs +253 -0
  485. package/lib/core/mcp-profiles.cjs +185 -0
  486. package/lib/core/meeting-ops.cjs +54 -0
  487. package/lib/core/memory/governance-candidate-raiser.cjs +205 -0
  488. package/lib/core/memory/governance-candidate.cjs +95 -0
  489. package/lib/core/memory/reconcile-memory-runner.cjs +653 -0
  490. package/lib/core/memory-ops.cjs +641 -0
  491. package/lib/core/meter/gate-density-reader.cjs +112 -0
  492. package/lib/core/meter/transfer-reader.cjs +276 -0
  493. package/lib/core/meter/two-gauge.cjs +245 -0
  494. package/lib/core/methodology-ingest.cjs +346 -0
  495. package/lib/core/metrics/larryreach-loop-health.cjs +142 -0
  496. package/lib/core/migration-snapshot.cjs +287 -0
  497. package/lib/core/migration-snapshot.test.cjs +174 -0
  498. package/lib/core/migrations/ROOM.md +33 -0
  499. package/lib/core/migrations/phase-109-nodes-provenance.cjs +400 -0
  500. package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
  501. package/lib/core/migrations/phase-160-nodes-bitemporal.cjs +168 -0
  502. package/lib/core/migrations/phase-160-nodes-bitemporal.test.cjs +140 -0
  503. package/lib/core/migrations/phase-162-section-nodes.cjs +156 -0
  504. package/lib/core/migrations/phase-222-ranker-weights.cjs +62 -0
  505. package/lib/core/migrations/phase-224-edge-review-status.cjs +87 -0
  506. package/lib/core/mindrian-brain-shim.test.cjs +221 -0
  507. package/lib/core/mode-select-sidechannel.cjs +259 -0
  508. package/lib/core/model-profiles.cjs +246 -0
  509. package/lib/core/mullins-scaffold.cjs +258 -0
  510. package/lib/core/mullins-scaffold.test.cjs +128 -0
  511. package/lib/core/mva-agent-contract.cjs +170 -0
  512. package/lib/core/mva-agent-contract.test.cjs +169 -0
  513. package/lib/core/mva-budget.cjs +75 -0
  514. package/lib/core/mva-budget.test.cjs +68 -0
  515. package/lib/core/mva-classifier.cjs +392 -0
  516. package/lib/core/mva-classifier.test.cjs +248 -0
  517. package/lib/core/mva-deck-builder.cjs +452 -0
  518. package/lib/core/mva-deck-builder.test.cjs +287 -0
  519. package/lib/core/mva-detect.smoke.test.cjs +209 -0
  520. package/lib/core/mva-dispatcher.cjs +110 -0
  521. package/lib/core/mva-dispatcher.test.cjs +216 -0
  522. package/lib/core/mva-option-router.cjs +414 -0
  523. package/lib/core/mva-option-router.test.cjs +483 -0
  524. package/lib/core/mva-orchestrator.cjs +365 -0
  525. package/lib/core/mva-orchestrator.test.cjs +916 -0
  526. package/lib/core/mva-progressive-renderer.cjs +194 -0
  527. package/lib/core/mva-progressive-renderer.test.cjs +157 -0
  528. package/lib/core/mva-rule-linter.cjs +458 -0
  529. package/lib/core/mva-rule-linter.test.cjs +484 -0
  530. package/lib/core/mva-state.cjs +159 -0
  531. package/lib/core/mva-telemetry.cjs +58 -0
  532. package/lib/core/mva-telemetry.test.cjs +196 -0
  533. package/lib/core/mva-vercel-deploy.cjs +168 -0
  534. package/lib/core/mva-vercel-deploy.test.cjs +239 -0
  535. package/lib/core/nav-dial.cjs +440 -0
  536. package/lib/core/navigation/ROOM.md +15 -0
  537. package/lib/core/navigation/abstraction-claim.cjs +185 -0
  538. package/lib/core/navigation/calibration-gate.cjs +284 -0
  539. package/lib/core/navigation/calibration-log.cjs +141 -0
  540. package/lib/core/navigation/confirm-node.cjs +73 -0
  541. package/lib/core/navigation/dashboard-helpers.cjs +145 -0
  542. package/lib/core/navigation/edges.cjs +1150 -0
  543. package/lib/core/navigation/evidence-claim.cjs +186 -0
  544. package/lib/core/navigation/explanation.cjs +48 -0
  545. package/lib/core/navigation/file-evidence-readback.cjs +242 -0
  546. package/lib/core/navigation/focus.cjs +155 -0
  547. package/lib/core/navigation/get-domains-for-trends.cjs +277 -0
  548. package/lib/core/navigation/governance.cjs +101 -0
  549. package/lib/core/navigation/grant-rubric.cjs +218 -0
  550. package/lib/core/navigation/graph-export.cjs +325 -0
  551. package/lib/core/navigation/ingestion.cjs +109 -0
  552. package/lib/core/navigation/insights-stale.test.cjs +127 -0
  553. package/lib/core/navigation/insights.cjs +574 -0
  554. package/lib/core/navigation/lens-nodes.cjs +315 -0
  555. package/lib/core/navigation/memory-artifacts.cjs +437 -0
  556. package/lib/core/navigation/memory-cortex-packet.cjs +274 -0
  557. package/lib/core/navigation/memory-events.cjs +811 -0
  558. package/lib/core/navigation/neighborhood.cjs +79 -0
  559. package/lib/core/navigation/packet.cjs +420 -0
  560. package/lib/core/navigation/planning-artifacts.cjs +219 -0
  561. package/lib/core/navigation/projections.cjs +295 -0
  562. package/lib/core/navigation/ranker-weights.cjs +133 -0
  563. package/lib/core/navigation/reasoning-write.cjs +211 -0
  564. package/lib/core/navigation/reconcile-guard.cjs +98 -0
  565. package/lib/core/navigation/reified-claim.cjs +287 -0
  566. package/lib/core/navigation/research-preflight.cjs +156 -0
  567. package/lib/core/navigation/room-birth.cjs +1213 -0
  568. package/lib/core/navigation/room-context.cjs +380 -0
  569. package/lib/core/navigation/room-home.cjs +142 -0
  570. package/lib/core/navigation/spine-events.cjs +548 -0
  571. package/lib/core/navigation/synthetic-expert.cjs +177 -0
  572. package/lib/core/navigation/transitions.cjs +253 -0
  573. package/lib/core/navigation/typed-claim.cjs +208 -0
  574. package/lib/core/navigation/typed-domain.cjs +249 -0
  575. package/lib/core/navigation/typed-entity.cjs +236 -0
  576. package/lib/core/navigation/typed-frame.cjs +257 -0
  577. package/lib/core/navigation/typed-open-question.cjs +130 -0
  578. package/lib/core/navigation/typed-opportunity.cjs +418 -0
  579. package/lib/core/navigation-engine-offer.cjs +776 -0
  580. package/lib/core/navigation-engine-shared.cjs +256 -0
  581. package/lib/core/navigation-engine.cjs +1696 -0
  582. package/lib/core/navigation.cjs +686 -0
  583. package/lib/core/nl-graph-queries.cjs +164 -0
  584. package/lib/core/node-insert-epistemic.test.cjs +212 -0
  585. package/lib/core/node-insert-overrides.test.cjs +273 -0
  586. package/lib/core/node-insert.cjs +274 -0
  587. package/lib/core/npm-cli-resolve.cjs +151 -0
  588. package/lib/core/npm-cli-resolve.test.cjs +153 -0
  589. package/lib/core/npm-install-lock.cjs +326 -0
  590. package/lib/core/npm-install-lock.test.cjs +379 -0
  591. package/lib/core/numeric/sklearn-stopwords-v1.json +325 -0
  592. package/lib/core/numeric/svd.cjs +377 -0
  593. package/lib/core/numeric/tfidf.cjs +241 -0
  594. package/lib/core/offer-presenter.cjs +406 -0
  595. package/lib/core/opportunity-extractor.cjs +183 -0
  596. package/lib/core/opportunity-ops.cjs +1423 -0
  597. package/lib/core/orchestration-candidate-lift.cjs +284 -0
  598. package/lib/core/part8-egress-guard.cjs +536 -0
  599. package/lib/core/part8-egress-guard.test.cjs +194 -0
  600. package/lib/core/part8-egress-ontology.cjs +174 -0
  601. package/lib/core/part8-egress-ontology.test.cjs +133 -0
  602. package/lib/core/persona-ops.cjs +692 -0
  603. package/lib/core/persona-override.cjs +327 -0
  604. package/lib/core/persona-taxonomy.cjs +328 -0
  605. package/lib/core/pinecone-inference.cjs +176 -0
  606. package/lib/core/pitch-feedback-schemas.cjs +303 -0
  607. package/lib/core/planning/artifact-brain-packet.cjs +212 -0
  608. package/lib/core/planning/reconcile-runner.cjs +347 -0
  609. package/lib/core/platform-gates.cjs +120 -0
  610. package/lib/core/platform.cjs +257 -0
  611. package/lib/core/proactive-intelligence.cjs +528 -0
  612. package/lib/core/problem-type-router.cjs +315 -0
  613. package/lib/core/publish-needs-default-lane.cjs +110 -0
  614. package/lib/core/ralph-loop-gate.cjs +48 -0
  615. package/lib/core/reader/ab-harness.cjs +177 -0
  616. package/lib/core/reader/decide-projection-reader.cjs +358 -0
  617. package/lib/core/reasoning-ops.cjs +639 -0
  618. package/lib/core/recipe-maps.cjs +442 -0
  619. package/lib/core/recovery/case-file.cjs +358 -0
  620. package/lib/core/recovery/controller.cjs +1008 -0
  621. package/lib/core/recovery/dispatcher.cjs +533 -0
  622. package/lib/core/recovery/result-semantics.cjs +488 -0
  623. package/lib/core/recovery/stage-envelope.cjs +338 -0
  624. package/lib/core/refusal-messaging.cjs +569 -0
  625. package/lib/core/refusal-messaging.test.cjs +220 -0
  626. package/lib/core/repo-version.cjs +134 -0
  627. package/lib/core/research-cache.cjs +165 -0
  628. package/lib/core/research-cache.test.cjs +137 -0
  629. package/lib/core/research-context-extractor.cjs +283 -0
  630. package/lib/core/research-corpus.cjs +814 -0
  631. package/lib/core/research-corpus.test.cjs +280 -0
  632. package/lib/core/research-filing-selector.cjs +189 -0
  633. package/lib/core/resolve-active-room.cjs +602 -0
  634. package/lib/core/resolve-brain-key.cjs +273 -0
  635. package/lib/core/resolve-umbilical-target.cjs +288 -0
  636. package/lib/core/resolve-vercel-key.cjs +107 -0
  637. package/lib/core/resolve-vercel-key.test.cjs +137 -0
  638. package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
  639. package/lib/core/room-auto-create.cjs +318 -0
  640. package/lib/core/room-auto-create.test.cjs +198 -0
  641. package/lib/core/room-chooser.cjs +244 -0
  642. package/lib/core/room-classifier-strict-mode.cjs +235 -0
  643. package/lib/core/room-db.cjs +348 -0
  644. package/lib/core/room-discard-cascade.cjs +238 -0
  645. package/lib/core/room-discard-cascade.test.cjs +135 -0
  646. package/lib/core/room-name-validator.cjs +132 -0
  647. package/lib/core/room-name-validator.test.cjs +156 -0
  648. package/lib/core/room-naming-selector.cjs +357 -0
  649. package/lib/core/room-naming-selector.test.cjs +277 -0
  650. package/lib/core/room-open.cjs +259 -0
  651. package/lib/core/room-ops-async.cjs +92 -0
  652. package/lib/core/room-ops-shared.cjs +64 -0
  653. package/lib/core/room-ops-sync.cjs +70 -0
  654. package/lib/core/room-ops.cjs +32 -0
  655. package/lib/core/room-receipt-emit.cjs +63 -0
  656. package/lib/core/room-root.cjs +93 -0
  657. package/lib/core/room-skeleton-scaffold.cjs +669 -0
  658. package/lib/core/room-skeleton-scaffold.test.cjs +296 -0
  659. package/lib/core/room-type-detector.cjs +386 -0
  660. package/lib/core/rs-backend-dispatch.cjs +64 -0
  661. package/lib/core/rs-brain-substrate-prompts.cjs +129 -0
  662. package/lib/core/rs-brain-substrate.cjs +570 -0
  663. package/lib/core/rs-breakthrough-scorer.cjs +255 -0
  664. package/lib/core/rs-canon-violations.cjs +82 -0
  665. package/lib/core/rs-chain-feeder.cjs +381 -0
  666. package/lib/core/rs-commercial-assessor.cjs +280 -0
  667. package/lib/core/rs-corpus-quality-gate.cjs +62 -0
  668. package/lib/core/rs-differential-scorer.cjs +629 -0
  669. package/lib/core/rs-domain-analyzer.cjs +385 -0
  670. package/lib/core/rs-egress-prompts.cjs +113 -0
  671. package/lib/core/rs-egress-telemetry.cjs +225 -0
  672. package/lib/core/rs-egress-violations.cjs +53 -0
  673. package/lib/core/rs-engine.cjs +597 -0
  674. package/lib/core/rs-expert-brain-projection.cjs +280 -0
  675. package/lib/core/rs-expert-mapper.cjs +467 -0
  676. package/lib/core/rs-fetcher-academic.cjs +697 -0
  677. package/lib/core/rs-fetcher-experts.cjs +314 -0
  678. package/lib/core/rs-fetcher-industry.cjs +731 -0
  679. package/lib/core/rs-fetcher-patents.cjs +564 -0
  680. package/lib/core/rs-innovation-classifier.cjs +194 -0
  681. package/lib/core/rs-math.cjs +458 -0
  682. package/lib/core/rs-mind-map.cjs +656 -0
  683. package/lib/core/rs-neo4j-writer.cjs +388 -0
  684. package/lib/core/rs-nl-to-query.cjs +435 -0
  685. package/lib/core/rs-pinecone-bridge.cjs +344 -0
  686. package/lib/core/rs-preprocessor.cjs +350 -0
  687. package/lib/core/rs-query-matrix.cjs +316 -0
  688. package/lib/core/rs-query-to-text.cjs +438 -0
  689. package/lib/core/rs-sqlite-mirror.cjs +495 -0
  690. package/lib/core/rs-thesis-generator.cjs +188 -0
  691. package/lib/core/rs_cache.py +635 -0
  692. package/lib/core/rs_corpus.py +562 -0
  693. package/lib/core/rs_corpus_exclude.py +62 -0
  694. package/lib/core/rs_hybrid.py +589 -0
  695. package/lib/core/rs_math.py +287 -0
  696. package/lib/core/rs_rooms.py +196 -0
  697. package/lib/core/salient-governance.cjs +315 -0
  698. package/lib/core/scheduled-scanner.cjs +658 -0
  699. package/lib/core/scratchpad-ops.cjs +316 -0
  700. package/lib/core/seam-liveness.cjs +191 -0
  701. package/lib/core/seam-liveness.test.cjs +177 -0
  702. package/lib/core/section-8-trace-schema.cjs +138 -0
  703. package/lib/core/section-registry.cjs +167 -0
  704. package/lib/core/security/agentshield-adapters.test.cjs +104 -0
  705. package/lib/core/security/agentshield-run.cjs +343 -0
  706. package/lib/core/security/agentshield-scanner.cjs +314 -0
  707. package/lib/core/security/agentshield-scanner.test.cjs +259 -0
  708. package/lib/core/sensors/hat-scoping-table.cjs +103 -0
  709. package/lib/core/sensors/sensor-circularity.cjs +278 -0
  710. package/lib/core/sensors/sensor-content-relevance.cjs +407 -0
  711. package/lib/core/sensors/sensor-diffusion-adoption.cjs +230 -0
  712. package/lib/core/sensors/sensor-eureka.cjs +208 -0
  713. package/lib/core/sensors/sensor-expert-skill.cjs +293 -0
  714. package/lib/core/sensors/sensor-external-fact.cjs +184 -0
  715. package/lib/core/sensors/sensor-gate-approach.cjs +104 -0
  716. package/lib/core/sensors/sensor-jtbd-reweight.cjs +141 -0
  717. package/lib/core/sensors/sensor-lagging-component.cjs +115 -0
  718. package/lib/core/sensors/sensor-memory-cortex.cjs +111 -0
  719. package/lib/core/sensors/sensor-methodology-decision.cjs +131 -0
  720. package/lib/core/sensors/sensor-opportunity-harvest.cjs +195 -0
  721. package/lib/core/sensors/sensor-perspective-lock.cjs +174 -0
  722. package/lib/core/sensors/sensor-priority.cjs +183 -0
  723. package/lib/core/sensors/sensor-recency.cjs +151 -0
  724. package/lib/core/sensors/sensor-roadmap-type.cjs +421 -0
  725. package/lib/core/sensors/sensor-room-pick.cjs +238 -0
  726. package/lib/core/sensors/sensor-show-share.cjs +215 -0
  727. package/lib/core/sensors/sensor-temporal-blindness.cjs +123 -0
  728. package/lib/core/sensors/sensor-types.cjs +294 -0
  729. package/lib/core/sensors/sensor-url-ingest.cjs +234 -0
  730. package/lib/core/session-binding.cjs +208 -0
  731. package/lib/core/session-presence.cjs +404 -0
  732. package/lib/core/session-register.cjs +138 -0
  733. package/lib/core/session-state.cjs +144 -0
  734. package/lib/core/shallow-doc-parser.cjs +353 -0
  735. package/lib/core/shallow-doc-parser.test.cjs +226 -0
  736. package/lib/core/skill-activation-router.cjs +284 -0
  737. package/lib/core/skillopt-schemas.cjs +509 -0
  738. package/lib/core/stale-copy-scanner.cjs +190 -0
  739. package/lib/core/stance-state.cjs +153 -0
  740. package/lib/core/state-aware-router.cjs +78 -0
  741. package/lib/core/state-ops.cjs +80 -0
  742. package/lib/core/state-version.cjs +350 -0
  743. package/lib/core/statusline-cache.cjs +266 -0
  744. package/lib/core/statusline-liveness-gate.cjs +105 -0
  745. package/lib/core/surface-fence.cjs +127 -0
  746. package/lib/core/synthesizers/comparison-matrix.cjs +82 -0
  747. package/lib/core/synthesizers/convergence-map.cjs +107 -0
  748. package/lib/core/synthesizers/domain-hierarchy.cjs +138 -0
  749. package/lib/core/synthesizers/source-comparison.cjs +56 -0
  750. package/lib/core/synthesizers/tension-map.cjs +119 -0
  751. package/lib/core/synthetic-expert-behavior-gate.cjs +99 -0
  752. package/lib/core/synthetic-expert-construction-gate.cjs +170 -0
  753. package/lib/core/telemetry/schema.cjs +168 -0
  754. package/lib/core/telemetry/schema.test.cjs +124 -0
  755. package/lib/core/telemetry/validator.cjs +200 -0
  756. package/lib/core/telemetry/validator.test.cjs +188 -0
  757. package/lib/core/telemetry/writer.cjs +141 -0
  758. package/lib/core/telemetry/writer.test.cjs +331 -0
  759. package/lib/core/temporal/date-sync-gate.cjs +256 -0
  760. package/lib/core/temporal/date-sync-gate.test.cjs +191 -0
  761. package/lib/core/temporal/dual-stamp.cjs +172 -0
  762. package/lib/core/temporal/dual-stamp.test.cjs +172 -0
  763. package/lib/core/temporal/point-in-time.cjs +76 -0
  764. package/lib/core/temporal/point-in-time.test.cjs +169 -0
  765. package/lib/core/temporal/recency-decay.cjs +119 -0
  766. package/lib/core/temporal/recency-decay.test.cjs +140 -0
  767. package/lib/core/temporal/reference-now.cjs +281 -0
  768. package/lib/core/temporal/reference-now.test.cjs +225 -0
  769. package/lib/core/temporal/resolve-relative-time.cjs +116 -0
  770. package/lib/core/temporal/resolve-relative-time.test.cjs +138 -0
  771. package/lib/core/temporal/supersession.cjs +250 -0
  772. package/lib/core/temporal/supersession.test.cjs +103 -0
  773. package/lib/core/terminal-capability.cjs +88 -0
  774. package/lib/core/token-estimator.cjs +348 -0
  775. package/lib/core/tone-filter.cjs +147 -0
  776. package/lib/core/trending-to-absurd/orchestrator.cjs +341 -0
  777. package/lib/core/trending-to-absurd/stage7-roadmap.cjs +317 -0
  778. package/lib/core/trending-to-absurd/variance.cjs +169 -0
  779. package/lib/core/unknowns/bandit.cjs +332 -0
  780. package/lib/core/unknowns/corpus-adapter.cjs +327 -0
  781. package/lib/core/unknowns/dsp.cjs +356 -0
  782. package/lib/core/unknowns/edge-writer.cjs +211 -0
  783. package/lib/core/unknowns/iface.cjs +212 -0
  784. package/lib/core/unknowns/orchestrator.cjs +375 -0
  785. package/lib/core/unknowns/pattern-miner.cjs +214 -0
  786. package/lib/core/unknowns/rumsfeld-matrix.cjs +155 -0
  787. package/lib/core/unknowns/verdict.cjs +254 -0
  788. package/lib/core/update-path.cjs +57 -0
  789. package/lib/core/url-ingest.cjs +568 -0
  790. package/lib/core/user-archetype.cjs +284 -0
  791. package/lib/core/user-md-ops.cjs +578 -0
  792. package/lib/core/venture-shape-nudge.cjs +178 -0
  793. package/lib/core/venture-shape-nudge.test.cjs +266 -0
  794. package/lib/core/verb-reach-affinity.cjs +299 -0
  795. package/lib/core/visual-ops.cjs +692 -0
  796. package/lib/core/voice-transition-detector.cjs +125 -0
  797. package/lib/core/watched-sources.cjs +237 -0
  798. package/lib/core/write-lock.cjs +149 -0
  799. package/lib/graph/canvas-graph.js +467 -0
  800. package/lib/graph/constellation-config.cjs +299 -0
  801. package/lib/graph/graph-detail-panel.js +165 -0
  802. package/lib/hmi/ROOM.md +47 -0
  803. package/lib/hmi/across-session-memory.cjs +669 -0
  804. package/lib/hmi/agentshield-drift-gate.cjs +142 -0
  805. package/lib/hmi/brain-review-packet.cjs +221 -0
  806. package/lib/hmi/cortex-reach-adapter.cjs +271 -0
  807. package/lib/hmi/cross-room-memory.cjs +618 -0
  808. package/lib/hmi/decoy-tier.cjs +395 -0
  809. package/lib/hmi/depth-state.cjs +164 -0
  810. package/lib/hmi/dial-label-composer.cjs +410 -0
  811. package/lib/hmi/dial-presenter.cjs +508 -0
  812. package/lib/hmi/dial-reach-orchestrator.cjs +377 -0
  813. package/lib/hmi/dial-selector.cjs +239 -0
  814. package/lib/hmi/f1-pick-capture-cli.cjs +131 -0
  815. package/lib/hmi/f3-depth-capture-cli.cjs +77 -0
  816. package/lib/hmi/f4-scope-capture-cli.cjs +86 -0
  817. package/lib/hmi/f8-action-capture-cli.cjs +145 -0
  818. package/lib/hmi/f8-capture.test.cjs +77 -0
  819. package/lib/hmi/f9-ordered-capture-cli.cjs +138 -0
  820. package/lib/hmi/harvest-scope-state.cjs +202 -0
  821. package/lib/hmi/hats-persona-cache.cjs +142 -0
  822. package/lib/hmi/jtbd-classifier.cjs +219 -0
  823. package/lib/hmi/jtbd-state.cjs +263 -0
  824. package/lib/hmi/jtbd-taxonomy.json +402 -0
  825. package/lib/hmi/mindrian-ascii-logo.cjs +96 -0
  826. package/lib/hmi/part8-egress-gate.cjs +149 -0
  827. package/lib/hmi/reach-component-map.json +47 -0
  828. package/lib/hmi/reach-relevance-gate.cjs +147 -0
  829. package/lib/hmi/selector-dispatcher.cjs +1201 -0
  830. package/lib/hmi/selector-dispatcher.test.cjs +141 -0
  831. package/lib/hmi/selector-telemetry.cjs +269 -0
  832. package/lib/hmi/shape-f0-renderer.cjs +145 -0
  833. package/lib/hmi/shape-f1-fallback.cjs +80 -0
  834. package/lib/hmi/shape-f1-renderer.cjs +219 -0
  835. package/lib/hmi/shape-f2-renderer.cjs +132 -0
  836. package/lib/hmi/shape-f3-parity.test.cjs +64 -0
  837. package/lib/hmi/shape-f3-renderer.cjs +66 -0
  838. package/lib/hmi/shape-f4-parity.test.cjs +72 -0
  839. package/lib/hmi/shape-f4-renderer.cjs +72 -0
  840. package/lib/hmi/shape-f5-renderer.cjs +155 -0
  841. package/lib/hmi/shape-f6-plan-review-renderer.cjs +324 -0
  842. package/lib/hmi/shape-f6-renderer.cjs +144 -0
  843. package/lib/hmi/shape-f7-breakthrough-renderer.cjs +234 -0
  844. package/lib/hmi/shape-f7-breakthrough-renderer.test.cjs +233 -0
  845. package/lib/hmi/shape-f8-renderer.cjs +150 -0
  846. package/lib/hmi/shape-f8-renderer.test.cjs +70 -0
  847. package/lib/hmi/shape-f9-renderer.cjs +187 -0
  848. package/lib/hmi/shape-f9-renderer.test.cjs +80 -0
  849. package/lib/hmi/shape-g-renderer.cjs +219 -0
  850. package/lib/hmi/shape-h-renderer.cjs +222 -0
  851. package/lib/hmi/tier-check.cjs +63 -0
  852. package/lib/hmi/turn-text.cjs +268 -0
  853. package/lib/hmi/voice-color-mark.cjs +318 -0
  854. package/lib/hmi/voice-style-log.cjs +276 -0
  855. package/lib/import/PRECONDITIONS.md +41 -0
  856. package/lib/import/branding.cjs +210 -0
  857. package/lib/import/branding.test.cjs +235 -0
  858. package/lib/import/classifications-sync.cjs +104 -0
  859. package/lib/import/classifications-sync.test.cjs +129 -0
  860. package/lib/import/enricher.cjs +296 -0
  861. package/lib/import/enricher.test.cjs +273 -0
  862. package/lib/import/integration.test.cjs +376 -0
  863. package/lib/import/manifest.cjs +129 -0
  864. package/lib/import/manifest.schema.json +185 -0
  865. package/lib/import/manifest.test.cjs +123 -0
  866. package/lib/import/meeting-detector.cjs +92 -0
  867. package/lib/import/meeting-detector.test.cjs +100 -0
  868. package/lib/import/person-detector.cjs +229 -0
  869. package/lib/import/person-detector.test.cjs +149 -0
  870. package/lib/import/report.cjs +186 -0
  871. package/lib/import/report.test.cjs +186 -0
  872. package/lib/import/room-md-scaffolder.cjs +49 -0
  873. package/lib/import/router.cjs +224 -0
  874. package/lib/import/router.test.cjs +356 -0
  875. package/lib/import/run-all-tests.cjs +36 -0
  876. package/lib/import/smoke-test.cjs +213 -0
  877. package/lib/import/smoke-test.test.cjs +148 -0
  878. package/lib/import/undo.test.cjs +199 -0
  879. package/lib/import/vault-scanner.cjs +105 -0
  880. package/lib/import/vault-scanner.test.cjs +67 -0
  881. package/lib/lens-engine/correlation-resolver.cjs +174 -0
  882. package/lib/lens-engine/source-lens-driver.cjs +736 -0
  883. package/lib/mcp/adapter-client.cjs +103 -0
  884. package/lib/mcp/app-html/dashboard.html +316 -0
  885. package/lib/mcp/app-html/graph.html +428 -0
  886. package/lib/mcp/app-html/mindrian-platform.html +1841 -0
  887. package/lib/mcp/app-html/wiki.html +383 -0
  888. package/lib/mcp/app-views.cjs +322 -0
  889. package/lib/mcp/brain-composition-census.cjs +184 -0
  890. package/lib/mcp/brain-router.cjs +530 -0
  891. package/lib/mcp/capability-registry.cjs +62 -0
  892. package/lib/mcp/contract-version.cjs +59 -0
  893. package/lib/mcp/daemon-lifecycle.cjs +324 -0
  894. package/lib/mcp/gate-dedup.cjs +120 -0
  895. package/lib/mcp/gate-ledger.cjs +145 -0
  896. package/lib/mcp/gate-render.cjs +483 -0
  897. package/lib/mcp/hook-adapter-audit.cjs +199 -0
  898. package/lib/mcp/larry-context.cjs +42 -0
  899. package/lib/mcp/mcp-first-flag.cjs +147 -0
  900. package/lib/mcp/no-instructions.test.cjs +270 -0
  901. package/lib/mcp/pipeline-state.cjs +424 -0
  902. package/lib/mcp/prompts.cjs +421 -0
  903. package/lib/mcp/register-core-tools.cjs +78 -0
  904. package/lib/mcp/resources.cjs +359 -0
  905. package/lib/mcp/runtime-instructions.cjs +38 -0
  906. package/lib/mcp/session-catchup.cjs +349 -0
  907. package/lib/mcp/session-registry.cjs +113 -0
  908. package/lib/mcp/session-room.cjs +124 -0
  909. package/lib/mcp/sse-event-bus.cjs +98 -0
  910. package/lib/mcp/stop-gate-handler.cjs +589 -0
  911. package/lib/mcp/surface-detect.cjs +186 -0
  912. package/lib/mcp/tool-router.cjs +2113 -0
  913. package/lib/mcp/tools/chain.cjs +674 -0
  914. package/lib/mcp/tools/claim.cjs +180 -0
  915. package/lib/mcp/tools/context.cjs +92 -0
  916. package/lib/mcp/tools/dual-path.cjs +79 -0
  917. package/lib/mcp/tools/gate.cjs +392 -0
  918. package/lib/mcp/tools/graph-reason.cjs +130 -0
  919. package/lib/mcp/tools/graph.cjs +321 -0
  920. package/lib/mcp/tools/identity.cjs +174 -0
  921. package/lib/mcp/tools/room.cjs +449 -0
  922. package/lib/mcp/tools/sensors.cjs +450 -0
  923. package/lib/mcp/tools/status.cjs +183 -0
  924. package/lib/mcp/tools/stop-gate.cjs +103 -0
  925. package/lib/mcp/tools/views.cjs +382 -0
  926. package/lib/mcp/tree-watcher.cjs +199 -0
  927. package/lib/memory/.mindrian/auto-explore-mat-test-001.json +11 -0
  928. package/lib/memory/aaak-compress.cjs +403 -0
  929. package/lib/memory/aaak-compress.test.cjs +288 -0
  930. package/lib/memory/async-artifact-auto-commit.test.cjs +223 -0
  931. package/lib/memory/bearer-token.test.cjs +315 -0
  932. package/lib/memory/body-shape-coverage.test.cjs +268 -0
  933. package/lib/memory/brain-cache-lru.test.cjs +259 -0
  934. package/lib/memory/brain-client-query-shape.test.cjs +160 -0
  935. package/lib/memory/brain-cypher-chain-slice.test.cjs +368 -0
  936. package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
  937. package/lib/memory/brain-derivation-queue.test.cjs +553 -0
  938. package/lib/memory/brain-derivation.test.cjs +639 -0
  939. package/lib/memory/brain-derive-command.test.cjs +534 -0
  940. package/lib/memory/brain-derive-curation.test.cjs +243 -0
  941. package/lib/memory/brain-md-invariants-validator.test.cjs +704 -0
  942. package/lib/memory/brain-md-schema.test.cjs +467 -0
  943. package/lib/memory/brain-md-staleness.test.cjs +525 -0
  944. package/lib/memory/brain-server-resolution.test.cjs +314 -0
  945. package/lib/memory/brain-suggestion-template.test.cjs +200 -0
  946. package/lib/memory/chain-recommender-canonical.test.cjs +208 -0
  947. package/lib/memory/chain-recommender.test.cjs +233 -0
  948. package/lib/memory/chat-context.test.cjs +128 -0
  949. package/lib/memory/command-registry.test.cjs +220 -0
  950. package/lib/memory/connector-registry.test.cjs +94 -0
  951. package/lib/memory/correlation-label-index.test.cjs +119 -0
  952. package/lib/memory/correlation.test.cjs +253 -0
  953. package/lib/memory/cross-room-aggregator.test.cjs +909 -0
  954. package/lib/memory/curation-132-03-dedup-held-rename.test.cjs +251 -0
  955. package/lib/memory/curation-132-05-pseudonymize.test.cjs +205 -0
  956. package/lib/memory/curation-batch.test.cjs +213 -0
  957. package/lib/memory/dashboard-server.test.cjs +256 -0
  958. package/lib/memory/debouncer-drain-at-prompt.test.cjs +389 -0
  959. package/lib/memory/decision-capture.test.cjs +632 -0
  960. package/lib/memory/decision-capture.worker.cjs +70 -0
  961. package/lib/memory/doctor-deprecation-surface.test.cjs +188 -0
  962. package/lib/memory/dual-graph-health.test.cjs +485 -0
  963. package/lib/memory/explain-decision-command.test.cjs +521 -0
  964. package/lib/memory/explain-decision-footer.test.cjs +316 -0
  965. package/lib/memory/explored-materials-store.cjs +392 -0
  966. package/lib/memory/f-selector-ranker.test.cjs +593 -0
  967. package/lib/memory/feynman-minto-guardian.test.cjs +863 -0
  968. package/lib/memory/feynman-minto-invariants.test.cjs +554 -0
  969. package/lib/memory/feynman-prompts-drift.test.cjs +144 -0
  970. package/lib/memory/feynman-prompts.cjs +151 -0
  971. package/lib/memory/feynman-prompts.test.cjs +96 -0
  972. package/lib/memory/first-touch-version.test.cjs +198 -0
  973. package/lib/memory/folder-memory-quadruple.test.cjs +548 -0
  974. package/lib/memory/folder-memory.test.cjs +503 -0
  975. package/lib/memory/framework-chain-composer.test.cjs +549 -0
  976. package/lib/memory/frontmatter-schema-validator.test.cjs +344 -0
  977. package/lib/memory/guardian-onstop-reaches-user.test.cjs +396 -0
  978. package/lib/memory/heal-command.test.cjs +604 -0
  979. package/lib/memory/help-coverage.test.cjs +108 -0
  980. package/lib/memory/help-renderer.test.cjs +145 -0
  981. package/lib/memory/huji-run-one-async-parity.test.cjs +242 -0
  982. package/lib/memory/hypergraph-event-schema.test.cjs +116 -0
  983. package/lib/memory/index-artifact-transaction.test.cjs +333 -0
  984. package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +122 -0
  985. package/lib/memory/local-chain-recommender.test.cjs +172 -0
  986. package/lib/memory/mcp-input-validation.test.cjs +240 -0
  987. package/lib/memory/mcp-server-brain-deps.test.cjs +270 -0
  988. package/lib/memory/mcp-stack-fallback.test.cjs +433 -0
  989. package/lib/memory/minto-debounce-consumer-census.test.cjs +567 -0
  990. package/lib/memory/minto-debouncer.test.cjs +407 -0
  991. package/lib/memory/minto-debouncer.worker.cjs +46 -0
  992. package/lib/memory/minto-migration-v88.test.cjs +265 -0
  993. package/lib/memory/minto-schema-v88.test.cjs +390 -0
  994. package/lib/memory/mos-status-renderer.test.cjs +631 -0
  995. package/lib/memory/narrative-schema.cjs +376 -0
  996. package/lib/memory/narrative-schema.test.cjs +209 -0
  997. package/lib/memory/nav-dial.test.cjs +414 -0
  998. package/lib/memory/navigation-engine-core.test.cjs +712 -0
  999. package/lib/memory/navigation-engine-offer.test.cjs +404 -0
  1000. package/lib/memory/navigation-hook-resolver.test.cjs +177 -0
  1001. package/lib/memory/navigation-invariants.test.cjs +483 -0
  1002. package/lib/memory/navigation-projections.test.cjs +241 -0
  1003. package/lib/memory/navigation-write-edge.test.cjs +206 -0
  1004. package/lib/memory/offer-closer.test.cjs +258 -0
  1005. package/lib/memory/offer-presenter.test.cjs +554 -0
  1006. package/lib/memory/on-stop-snapshot.test.cjs +404 -0
  1007. package/lib/memory/orchestration-projection.test.cjs +706 -0
  1008. package/lib/memory/packet-chain-hint.test.cjs +407 -0
  1009. package/lib/memory/packet-schema-validation.test.cjs +317 -0
  1010. package/lib/memory/palette-consistency.test.cjs +127 -0
  1011. package/lib/memory/pending-tension-store.cjs +453 -0
  1012. package/lib/memory/per-command-jtbd-derivation.test.cjs +130 -0
  1013. package/lib/memory/per-command-teaching.test.cjs +110 -0
  1014. package/lib/memory/post-compact-reinjection.test.cjs +854 -0
  1015. package/lib/memory/post-write-triple.test.cjs +317 -0
  1016. package/lib/memory/pre-compact-snapshot.test.cjs +495 -0
  1017. package/lib/memory/precommit-real-commit.test.cjs +301 -0
  1018. package/lib/memory/problem-type-router.test.cjs +656 -0
  1019. package/lib/memory/query-efficiency-telemetry.test.cjs +612 -0
  1020. package/lib/memory/recompile-room-references.test.cjs +392 -0
  1021. package/lib/memory/recompile-room-references.worker.cjs +42 -0
  1022. package/lib/memory/record-decision-dual-write.test.cjs +454 -0
  1023. package/lib/memory/render-v2-disposition.test.cjs +199 -0
  1024. package/lib/memory/room-classifier-strict-mode.test.cjs +430 -0
  1025. package/lib/memory/room-minto-hook.test.cjs +398 -0
  1026. package/lib/memory/rs-discovery-engine.test.cjs +323 -0
  1027. package/lib/memory/run-feynman-tests.cjs +2101 -0
  1028. package/lib/memory/security-trifecta.test.cjs +329 -0
  1029. package/lib/memory/selector-alias-map.test.cjs +172 -0
  1030. package/lib/memory/selector-decisions.test.cjs +417 -0
  1031. package/lib/memory/selector-miss.test.cjs +290 -0
  1032. package/lib/memory/session-start-brain-staleness.test.cjs +363 -0
  1033. package/lib/memory/session-start-triple-injection.test.cjs +514 -0
  1034. package/lib/memory/sessionstart-banner-formatter.cjs +318 -0
  1035. package/lib/memory/sessionstart-coordinator.test.cjs +446 -0
  1036. package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
  1037. package/lib/memory/skill-activation-router.test.cjs +465 -0
  1038. package/lib/memory/skill-vs-code-drift.test.cjs +257 -0
  1039. package/lib/memory/soft-alias.test.cjs +144 -0
  1040. package/lib/memory/spine-events-correlation.test.cjs +198 -0
  1041. package/lib/memory/stale-copy-scanner.test.cjs +294 -0
  1042. package/lib/memory/stamp-artifact-write.test.cjs +304 -0
  1043. package/lib/memory/state-aware-router.test.cjs +90 -0
  1044. package/lib/memory/statusline-active-room-write.test.cjs +245 -0
  1045. package/lib/memory/statusline-active-room.test.cjs +315 -0
  1046. package/lib/memory/statusline-minto-segment.test.cjs +292 -0
  1047. package/lib/memory/statusline-two-row.test.cjs +338 -0
  1048. package/lib/memory/suggest-next-workflow.test.cjs +176 -0
  1049. package/lib/memory/sync-async-entry-points.test.cjs +204 -0
  1050. package/lib/memory/terminal-capability.test.cjs +155 -0
  1051. package/lib/memory/test-bridge-writer-enhanced.cjs +452 -0
  1052. package/lib/memory/test-rs-brain-substrate-shape.cjs +529 -0
  1053. package/lib/memory/test-rs-brain-substrate.cjs +636 -0
  1054. package/lib/memory/test-rs-breakthrough-scorer.cjs +375 -0
  1055. package/lib/memory/test-rs-canon-violations.cjs +218 -0
  1056. package/lib/memory/test-rs-chain-feeder-core.cjs +344 -0
  1057. package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +297 -0
  1058. package/lib/memory/test-rs-commercial-assessor.cjs +385 -0
  1059. package/lib/memory/test-rs-differential-scorer.cjs +480 -0
  1060. package/lib/memory/test-rs-discovery-engine.cjs +648 -0
  1061. package/lib/memory/test-rs-domain-analyzer.cjs +492 -0
  1062. package/lib/memory/test-rs-egress-primitives.cjs +420 -0
  1063. package/lib/memory/test-rs-expert-mapper.cjs +547 -0
  1064. package/lib/memory/test-rs-explain-command.cjs +443 -0
  1065. package/lib/memory/test-rs-fetcher-academic.cjs +848 -0
  1066. package/lib/memory/test-rs-fetcher-experts.cjs +496 -0
  1067. package/lib/memory/test-rs-fetcher-industry.cjs +702 -0
  1068. package/lib/memory/test-rs-fetcher-patents.cjs +674 -0
  1069. package/lib/memory/test-rs-innovation-classifier.cjs +301 -0
  1070. package/lib/memory/test-rs-mind-map.cjs +646 -0
  1071. package/lib/memory/test-rs-neo4j-writer.cjs +518 -0
  1072. package/lib/memory/test-rs-nl-to-query.cjs +449 -0
  1073. package/lib/memory/test-rs-pinecone-bridge.cjs +282 -0
  1074. package/lib/memory/test-rs-preprocessor.cjs +433 -0
  1075. package/lib/memory/test-rs-query-matrix.cjs +391 -0
  1076. package/lib/memory/test-rs-query-to-text.cjs +551 -0
  1077. package/lib/memory/test-rs-sqlite-mirror.cjs +649 -0
  1078. package/lib/memory/test-rs-thesis-generator.cjs +360 -0
  1079. package/lib/memory/triple-context-formatter.cjs +473 -0
  1080. package/lib/memory/triple-context-formatter.test.cjs +442 -0
  1081. package/lib/memory/user-md-persona.test.cjs +565 -0
  1082. package/lib/memory/userpromptsubmit-integration.test.cjs +787 -0
  1083. package/lib/memory/validators/README.md +157 -0
  1084. package/lib/memory/validators/brain-md-invariants.cjs +475 -0
  1085. package/lib/memory/validators/brain-substrate-invariants.cjs +285 -0
  1086. package/lib/memory/validators/external-academic-invariants.cjs +249 -0
  1087. package/lib/memory/validators/external-industry-invariants.cjs +271 -0
  1088. package/lib/memory/validators/external-patents-invariants.cjs +266 -0
  1089. package/lib/memory/validators/minto-invariants.cjs +62 -0
  1090. package/lib/memory/validators/navigation-invariants.cjs +340 -0
  1091. package/lib/memory/validators/queue-health.cjs +95 -0
  1092. package/lib/memory/validators/snapshot-integrity.cjs +129 -0
  1093. package/lib/memory/validators/stale-lifecycle.cjs +116 -0
  1094. package/lib/memory/vault-section-minto-generator-atomic.test.cjs +556 -0
  1095. package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +73 -0
  1096. package/lib/memory/workflow-layer-e2e.test.cjs +262 -0
  1097. package/lib/memory/write-lock-atomic.test.cjs +137 -0
  1098. package/lib/memory/write-lock-atomic.worker.cjs +55 -0
  1099. package/lib/parity/check-parity.cjs +83 -0
  1100. package/lib/presentation/presentation-server.cjs +101 -0
  1101. package/lib/presentation/presentation-watcher.cjs +123 -0
  1102. package/lib/quickview/hub-server.cjs +719 -0
  1103. package/lib/quickview/server.cjs +533 -0
  1104. package/lib/render/JTBD-PALETTES.md +145 -0
  1105. package/lib/render/ROOM.md +111 -0
  1106. package/lib/render/render-v2.cjs +532 -0
  1107. package/lib/render/render-v2.test.cjs +267 -0
  1108. package/lib/render/render.cjs +65 -0
  1109. package/lib/sessionstart/budget-compressor.cjs +130 -0
  1110. package/lib/sessionstart/contributor-interface.cjs +134 -0
  1111. package/lib/sessionstart/contributor-isolator.cjs +128 -0
  1112. package/lib/sessionstart/precedence-ladder.cjs +47 -0
  1113. package/lib/state/ROOM.md +46 -0
  1114. package/lib/state/state-md-parser.cjs +215 -0
  1115. package/lib/statusline/ROOM.md +38 -0
  1116. package/lib/statusline/banner-suppression.cjs +50 -0
  1117. package/lib/statusline/cockpit-renderer.cjs +443 -0
  1118. package/lib/statusline/cockpit-signals.cjs +312 -0
  1119. package/lib/statusline/cockpit-telemetry.cjs +152 -0
  1120. package/lib/statusline/ctx-window.cjs +135 -0
  1121. package/lib/statusline/governing-thought-truncator.cjs +45 -0
  1122. package/lib/statusline/next-move-cache.cjs +235 -0
  1123. package/lib/statusline/ratification-next.cjs +164 -0
  1124. package/lib/statusline/room-health-cache.cjs +200 -0
  1125. package/lib/statusline/surface-detect.cjs +85 -0
  1126. package/lib/statusline/two-row-renderer.cjs +207 -0
  1127. package/lib/statusline/version-resolver.cjs +81 -0
  1128. package/lib/ui/design-system.cjs +19 -0
  1129. package/lib/update-bootstrap.sh.template +145 -0
  1130. package/lib/vault/frontmatter-schema.cjs +297 -0
  1131. package/lib/vault/room-scanner.cjs +365 -0
  1132. package/lib/vault/wikilink-builder.cjs +231 -0
  1133. package/lib/vault/wikilink-builder.test.cjs +182 -0
  1134. package/lib/wiki/briefing.cjs +193 -0
  1135. package/lib/wiki/editor-dist/wiki-editor.css +1 -0
  1136. package/lib/wiki/editor-dist/wiki-editor.js +1327 -0
  1137. package/lib/wiki/graph-links.cjs +281 -0
  1138. package/lib/wiki/page-renderer.cjs +229 -0
  1139. package/lib/wiki/room-home.cjs +353 -0
  1140. package/lib/wiki/wiki-chat.cjs +81 -0
  1141. package/lib/wiki/wiki-export.cjs +364 -0
  1142. package/lib/wiki/wiki-layout.cjs +1143 -0
  1143. package/lib/wiki/wiki-search.cjs +142 -0
  1144. package/lib/wiki/wiki-server.cjs +748 -0
  1145. package/lib/wiki/wiki-watcher.cjs +105 -0
  1146. package/lib/workflow/ROOM.md +47 -0
  1147. package/lib/workflow/chain-source.cjs +179 -0
  1148. package/lib/workflow/command-resolver.cjs +155 -0
  1149. package/lib/workflow/command-resolver.test.cjs +235 -0
  1150. package/lib/workflow/cross-room-umbilical-closer.cjs +364 -0
  1151. package/lib/workflow/dial-close-reach.cjs +405 -0
  1152. package/lib/workflow/f-selector-ranker.cjs +1148 -0
  1153. package/lib/workflow/f1-pick-consumer.cjs +232 -0
  1154. package/lib/workflow/f3-depth-consumer.cjs +98 -0
  1155. package/lib/workflow/f4-scope-consumer.cjs +112 -0
  1156. package/lib/workflow/f8-consumer.test.cjs +82 -0
  1157. package/lib/workflow/f8-fanout-consumer.cjs +208 -0
  1158. package/lib/workflow/f9-consumer.test.cjs +71 -0
  1159. package/lib/workflow/f9-ordered-consumer.cjs +199 -0
  1160. package/lib/workflow/local-chain-recommender.cjs +330 -0
  1161. package/lib/workflow/memory-cascade-f9-adapter.cjs +273 -0
  1162. package/lib/workflow/memory-governance-closer.cjs +384 -0
  1163. package/lib/workflow/offer-closer.cjs +407 -0
  1164. package/lib/workflow/reach-hedge-ranker.cjs +809 -0
  1165. package/lib/workflow/reach-reject-reader.cjs +372 -0
  1166. package/lib/workflow/reconcile-f9-adapter.cjs +299 -0
  1167. package/lib/workflow/selector-decisions.cjs +478 -0
  1168. package/lib/workflow/session-binding-consumer.cjs +249 -0
  1169. package/npm-shrinkwrap.json +1544 -0
  1170. package/output-styles/destijl.md +67 -0
  1171. package/package.json +22 -4
  1172. package/pipelines/PWS_grading/01-deep-grade.md +48 -0
  1173. package/pipelines/PWS_grading/02-mullins.md +50 -0
  1174. package/pipelines/PWS_grading/03-build-thesis.md +60 -0
  1175. package/pipelines/PWS_grading/04-structure-argument.md +77 -0
  1176. package/pipelines/PWS_grading/CHAIN.md +79 -0
  1177. package/pipelines/analogy/01-decompose.md +80 -0
  1178. package/pipelines/analogy/02-abstract.md +87 -0
  1179. package/pipelines/analogy/03-search.md +135 -0
  1180. package/pipelines/analogy/04-transfer.md +101 -0
  1181. package/pipelines/analogy/05-validate.md +106 -0
  1182. package/pipelines/analogy/CHAIN.md +73 -0
  1183. package/pipelines/discovery/01-explore-domains.md +44 -0
  1184. package/pipelines/discovery/02-think-hats.md +50 -0
  1185. package/pipelines/discovery/03-analyze-needs.md +54 -0
  1186. package/pipelines/discovery/CHAIN.md +48 -0
  1187. package/pipelines/thesis/01-structure-argument.md +45 -0
  1188. package/pipelines/thesis/02-challenge-assumptions.md +48 -0
  1189. package/pipelines/thesis/03-build-thesis.md +54 -0
  1190. package/pipelines/thesis/CHAIN.md +48 -0
  1191. package/references/brain/causal-directives.md +91 -0
  1192. package/references/brain/causal-enrichment.cypher +165 -0
  1193. package/references/brain/command-triggers-schema.md +15 -0
  1194. package/references/brain/graph-architecture.md +317 -0
  1195. package/references/brain/query-patterns.md +504 -0
  1196. package/references/brain/room-hierarchy-schema.md +218 -0
  1197. package/references/brain/schema.md +86 -0
  1198. package/references/capability-radar/capabilities-index.md +269 -0
  1199. package/references/capability-radar/changelog-cache.md +95 -0
  1200. package/references/causal/causal-schema.md +103 -0
  1201. package/references/design/email-template-standard.md +169 -0
  1202. package/references/design/graph-visualization-standard.md +178 -0
  1203. package/references/design/newsletter-email-template.html +307 -0
  1204. package/references/document-generation.md +179 -0
  1205. package/references/hsi/HSI-TOOLS-REFERENCE.md +222 -0
  1206. package/references/import-config.md +141 -0
  1207. package/references/integrations/detection-patterns.md +101 -0
  1208. package/references/meeting/artifact-template.md +377 -0
  1209. package/references/meeting/cross-meeting-intelligence.md +216 -0
  1210. package/references/meeting/cross-relationship-patterns.md +202 -0
  1211. package/references/meeting/extraction-perspectives.md +225 -0
  1212. package/references/meeting/filing-protocol.md +222 -0
  1213. package/references/meeting/knowledge-typing.md +242 -0
  1214. package/references/meeting/live-join-interface.md +244 -0
  1215. package/references/meeting/section-mapping.md +192 -0
  1216. package/references/meeting/segment-classification.md +258 -0
  1217. package/references/meeting/speaker-profile-template.md +219 -0
  1218. package/references/meeting/summary-template.md +348 -0
  1219. package/references/meeting/transcript-patterns.md +226 -0
  1220. package/references/methodology/analyze-needs.md +135 -0
  1221. package/references/methodology/analyze-systems.md +121 -0
  1222. package/references/methodology/analyze-timing.md +149 -0
  1223. package/references/methodology/beautiful-question.md +109 -0
  1224. package/references/methodology/build-knowledge.md +161 -0
  1225. package/references/methodology/build-thesis-scored.md +60 -0
  1226. package/references/methodology/build-thesis.md +237 -0
  1227. package/references/methodology/causal-loop-diagrams.md +65 -0
  1228. package/references/methodology/challenge-assumptions.md +127 -0
  1229. package/references/methodology/diagnose.md +169 -0
  1230. package/references/methodology/dominant-designs.md +212 -0
  1231. package/references/methodology/explore-domains.md +147 -0
  1232. package/references/methodology/explore-futures.md +163 -0
  1233. package/references/methodology/explore-trends.md +129 -0
  1234. package/references/methodology/find-bottlenecks.md +131 -0
  1235. package/references/methodology/grade.md +211 -0
  1236. package/references/methodology/huji-stage-a-intake.md +246 -0
  1237. package/references/methodology/index.md +34 -0
  1238. package/references/methodology/leadership.md +200 -0
  1239. package/references/methodology/lean-canvas.md +116 -0
  1240. package/references/methodology/leverage-scan-signatures.md +83 -0
  1241. package/references/methodology/macro-trends.md +192 -0
  1242. package/references/methodology/map-unknowns.md +137 -0
  1243. package/references/methodology/mullins-7-domains.md +104 -0
  1244. package/references/methodology/problem-types.md +65 -0
  1245. package/references/methodology/root-cause.md +178 -0
  1246. package/references/methodology/rubric-huji.md +160 -0
  1247. package/references/methodology/sapphire-encoding.md +355 -0
  1248. package/references/methodology/scenario-plan.md +190 -0
  1249. package/references/methodology/score-innovation.md +154 -0
  1250. package/references/methodology/skillopt-judge-rubric.md +48 -0
  1251. package/references/methodology/skillopt-queries-rubric.md +60 -0
  1252. package/references/methodology/skillopt-refute-rubric.md +59 -0
  1253. package/references/methodology/skillopt-review-rubric.md +72 -0
  1254. package/references/methodology/skillopt-revise-rubric.md +48 -0
  1255. package/references/methodology/structure-argument.md +158 -0
  1256. package/references/methodology/systems-thinking.md +231 -0
  1257. package/references/methodology/think-hats.md +147 -0
  1258. package/references/methodology/triz-matrix.json +751 -0
  1259. package/references/methodology/triz-principles.md +501 -0
  1260. package/references/methodology/user-needs.md +199 -0
  1261. package/references/methodology/validate.md +163 -0
  1262. package/references/methodology/value-proposition.md +244 -0
  1263. package/references/opportunities/funding-lifecycle.md +103 -0
  1264. package/references/opportunities/grant-api-patterns.md +99 -0
  1265. package/references/opportunities/opportunity-template.md +84 -0
  1266. package/references/opportunities/tnufa-rubric.md +81 -0
  1267. package/references/personality/assessment-philosophy.md +72 -0
  1268. package/references/personality/lexicon.md +100 -0
  1269. package/references/personality/persona-chains.md +56 -0
  1270. package/references/personality/pws-lexicon-full.md +499 -0
  1271. package/references/personality/voice-dna.md +156 -0
  1272. package/references/personas/hat-perspectives.md +76 -0
  1273. package/references/personas/persona-template.md +63 -0
  1274. package/references/pipeline/act-output-contract.md +88 -0
  1275. package/references/pipeline/chains-index.md +39 -0
  1276. package/references/pws-profile-generation.md +79 -0
  1277. package/references/reasoning/reasoning-schema.md +143 -0
  1278. package/references/reasoning/reasoning-template.md +68 -0
  1279. package/references/reasoning/run-template.md +38 -0
  1280. package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +209 -0
  1281. package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +375 -0
  1282. package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +575 -0
  1283. package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +272 -0
  1284. package/references/security/agentshield-baseline.json +8 -0
  1285. package/references/security/cve-db.json +220 -0
  1286. package/references/taxonomy/TAXONOMY.md +192 -0
  1287. package/references/templates/MINTO.md +36 -0
  1288. package/references/user-research/2026-04-05-leah-lawrence-session.md +202 -0
  1289. package/references/vault-kit/README.md +35 -0
  1290. package/references/vault-kit/app.json +12 -0
  1291. package/references/vault-kit/appearance.json +12 -0
  1292. package/references/vault-kit/graph.json +35 -0
  1293. package/references/vault-kit/snippets/mindrian-destijl.css +297 -0
  1294. package/references/vault-kit/templates/new-artifact.md +37 -0
  1295. package/references/vault-kit/templates/new-meeting-note.md +35 -0
  1296. package/references/vault-kit/templates/new-team-profile.md +29 -0
  1297. package/references/vault-kit/templates/new-xref.md +35 -0
  1298. package/references/visual/ROOM.md +55 -0
  1299. package/references/visual/palette.json +54 -0
  1300. package/references/visual/symbol-system.md +151 -0
  1301. package/scripts/189-plurai-gate-check.cjs +88 -0
  1302. package/scripts/198-plurai-gate-check.cjs +118 -0
  1303. package/scripts/198-rollback-rehearsal.cjs +233 -0
  1304. package/scripts/83-scope-injection.test.cjs +648 -0
  1305. package/scripts/PYTHON_GATES.md +78 -0
  1306. package/scripts/__pycache__/compute-hsi.cpython-312.pyc +0 -0
  1307. package/scripts/__pycache__/detect-reverse-salients.cpython-312.pyc +0 -0
  1308. package/scripts/__pycache__/rs-engine.cpython-312.pyc +0 -0
  1309. package/scripts/act-command.cjs +518 -0
  1310. package/scripts/admin-brain-write.cjs +442 -0
  1311. package/scripts/admin-command-gate.cjs +178 -0
  1312. package/scripts/agentshield-scan-cli.cjs +226 -0
  1313. package/scripts/agentshield-sessionstart-scan.cjs +282 -0
  1314. package/scripts/analogy-fitness-report.cjs +266 -0
  1315. package/scripts/analyze-room +1079 -0
  1316. package/scripts/apply-teaching-content.cjs +298 -0
  1317. package/scripts/async-artifact-auto-commit.cjs +485 -0
  1318. package/scripts/audit-active-phase-resolver.cjs +160 -0
  1319. package/scripts/audit-body-shape-coverage.cjs +213 -0
  1320. package/scripts/auto-explore-drain.cjs +274 -0
  1321. package/scripts/auto-explore-fingerprint.cjs +354 -0
  1322. package/scripts/auto-explore-fire.cjs +359 -0
  1323. package/scripts/backfill-correlation-id.cjs +425 -0
  1324. package/scripts/backfill-hitl-shape.cjs +276 -0
  1325. package/scripts/backfill-hitl-shape.test.cjs +307 -0
  1326. package/scripts/backup-modifications +68 -0
  1327. package/scripts/banner +182 -0
  1328. package/scripts/brain-derivation-drain.cjs +291 -0
  1329. package/scripts/brain-derive-command.cjs +846 -0
  1330. package/scripts/brain-normalize-books.cypher +505 -0
  1331. package/scripts/brain-normalize-final.cypher +1355 -0
  1332. package/scripts/brain-normalize-problemtype.cypher +475 -0
  1333. package/scripts/brain-normalize-supplement.cypher +449 -0
  1334. package/scripts/brain-normalize-targeted.cypher +344 -0
  1335. package/scripts/brain-normalize-v194.cypher +61 -0
  1336. package/scripts/brain-normalize.cypher +530 -0
  1337. package/scripts/brain-response-sanitize-hook.cjs +165 -0
  1338. package/scripts/build-brain-census.cjs +957 -0
  1339. package/scripts/build-brain-packet-schema.cjs +225 -0
  1340. package/scripts/build-command-registry.cjs +587 -0
  1341. package/scripts/build-connector-registry.cjs +1331 -0
  1342. package/scripts/build-corpus-stats.cjs +408 -0
  1343. package/scripts/build-dist-bundles.cjs +495 -0
  1344. package/scripts/build-ecosystem-graph.cjs +490 -0
  1345. package/scripts/build-graph +1462 -0
  1346. package/scripts/build-graph-from-sqlite.cjs +97 -0
  1347. package/scripts/build-harness-manifest.cjs +1090 -0
  1348. package/scripts/build-jtbd-nudges +205 -0
  1349. package/scripts/build-new-surface.cjs +805 -0
  1350. package/scripts/build-orchestration-projection.cjs +1221 -0
  1351. package/scripts/build-render-coverage.cjs +637 -0
  1352. package/scripts/build-skill-mirrors.cjs +681 -0
  1353. package/scripts/cache-hitrate-report.cjs +216 -0
  1354. package/scripts/causal-to-graph.cjs +163 -0
  1355. package/scripts/check-abstraction-fixture-neutral.cjs +160 -0
  1356. package/scripts/check-admin-identity.cjs +212 -0
  1357. package/scripts/check-brain-tool-liveness.cjs +502 -0
  1358. package/scripts/check-card-fire.cjs +1809 -0
  1359. package/scripts/check-cirs-declaration.cjs +279 -0
  1360. package/scripts/check-deck-design.cjs +104 -0
  1361. package/scripts/check-dual-graph-health.cjs +645 -0
  1362. package/scripts/check-first-touch-drift.cjs +220 -0
  1363. package/scripts/check-flagship-floor.cjs +391 -0
  1364. package/scripts/check-framework-vocabulary-drift.cjs +563 -0
  1365. package/scripts/check-gate-seam.cjs +178 -0
  1366. package/scripts/check-graph-derive-health.cjs +208 -0
  1367. package/scripts/check-graph-export-typemap.cjs +118 -0
  1368. package/scripts/check-help-coverage.cjs +290 -0
  1369. package/scripts/check-hitl-stages.cjs +219 -0
  1370. package/scripts/check-hook-schema-compatibility.cjs +231 -0
  1371. package/scripts/check-hsi-deps +42 -0
  1372. package/scripts/check-kuzu-reintroduction.cjs +251 -0
  1373. package/scripts/check-onboard +43 -0
  1374. package/scripts/check-onboard-statusline.cjs +363 -0
  1375. package/scripts/check-palette-consistency.cjs +106 -0
  1376. package/scripts/check-pending-ambiguous.cjs +244 -0
  1377. package/scripts/check-pending-breakthrough.cjs +189 -0
  1378. package/scripts/check-pending-breakthrough.test.cjs +166 -0
  1379. package/scripts/check-pending-naming-decision.cjs +97 -0
  1380. package/scripts/check-plugin-path-anchoring.cjs +830 -0
  1381. package/scripts/check-publish-needs.cjs +126 -0
  1382. package/scripts/check-registry-drift.cjs +206 -0
  1383. package/scripts/check-release-payload-ceiling.cjs +269 -0
  1384. package/scripts/check-render-coverage.cjs +558 -0
  1385. package/scripts/check-research-isomorphism.cjs +446 -0
  1386. package/scripts/check-reward-before-investment.cjs +261 -0
  1387. package/scripts/check-room-blueprints.cjs +213 -0
  1388. package/scripts/check-schema-aliases.cjs +532 -0
  1389. package/scripts/check-shape-declaration.cjs +958 -0
  1390. package/scripts/check-shape-declaration.test.cjs +185 -0
  1391. package/scripts/check-skill-spec.cjs +312 -0
  1392. package/scripts/check-skill-vs-code-drift.cjs +178 -0
  1393. package/scripts/check-substrate.cjs +513 -0
  1394. package/scripts/check-tool-honesty.cjs +1601 -0
  1395. package/scripts/check-update +60 -0
  1396. package/scripts/check-version-and-sha.cjs +366 -0
  1397. package/scripts/check-voice-style.cjs +184 -0
  1398. package/scripts/check-worktree-hygiene.cjs +530 -0
  1399. package/scripts/classify-insight +59 -0
  1400. package/scripts/coherence-smoke-test.cjs +489 -0
  1401. package/scripts/compute-bayesian-surprise.py +175 -0
  1402. package/scripts/compute-blindspot-mass.py +209 -0
  1403. package/scripts/compute-disruption-index.py +211 -0
  1404. package/scripts/compute-element-novelty.py +254 -0
  1405. package/scripts/compute-external-whitespace.py +563 -0
  1406. package/scripts/compute-hsi.py +947 -0
  1407. package/scripts/compute-meetings-intelligence +716 -0
  1408. package/scripts/compute-opportunity-state +17 -0
  1409. package/scripts/compute-state +393 -0
  1410. package/scripts/compute-team +1112 -0
  1411. package/scripts/compute-whitespace-embeddings.py +464 -0
  1412. package/scripts/compute-whitespace-gaps.py +562 -0
  1413. package/scripts/compute_topic_forest.py +684 -0
  1414. package/scripts/consolidate-pinecone.py +265 -0
  1415. package/scripts/context-monitor +943 -0
  1416. package/scripts/create-speaker-profile +311 -0
  1417. package/scripts/cross-room-detect.cjs +195 -0
  1418. package/scripts/csv-to-idea-graph.cjs +755 -0
  1419. package/scripts/ctxl-eval.cjs +846 -0
  1420. package/scripts/curation-132-03-dedup-held-rename.cjs +395 -0
  1421. package/scripts/curation-132-05-pseudonymize.cjs +189 -0
  1422. package/scripts/derive-verb-reach-affinity.cjs +507 -0
  1423. package/scripts/detect-reverse-salients.py +242 -0
  1424. package/scripts/diagnostics-command.cjs +345 -0
  1425. package/scripts/dial-memory-refresh-command.cjs +147 -0
  1426. package/scripts/discover-analogy-whitespace.py +433 -0
  1427. package/scripts/discover-hsi-whitespace.py +352 -0
  1428. package/scripts/discover-rs-whitespace.py +327 -0
  1429. package/scripts/discovery-cycle.cjs +625 -0
  1430. package/scripts/disposition-render-v2.cjs +229 -0
  1431. package/scripts/doctor-preflight-format.cjs +101 -0
  1432. package/scripts/doctor.cjs +4327 -0
  1433. package/scripts/dogfood-bridge/append-to-queue.sh +59 -0
  1434. package/scripts/dogfood-bridge/path-filter.cjs +86 -0
  1435. package/scripts/dogfood-derive.cjs +158 -0
  1436. package/scripts/dogfood-emit.cjs +126 -0
  1437. package/scripts/empathy-observation-emit.cjs +108 -0
  1438. package/scripts/enrichment-queue-append.cjs +157 -0
  1439. package/scripts/ensure-brain-baseline.cjs +117 -0
  1440. package/scripts/entity-extract.cjs +1135 -0
  1441. package/scripts/eureka-command.cjs +687 -0
  1442. package/scripts/eureka-critic-run.cjs +662 -0
  1443. package/scripts/eureka-portfolio-report.cjs +2038 -0
  1444. package/scripts/eureka-room-report.cjs +419 -0
  1445. package/scripts/explain-decision-command.cjs +499 -0
  1446. package/scripts/export-pinecone-embeddings.cjs +516 -0
  1447. package/scripts/extract-room-intelligence.cjs +714 -0
  1448. package/scripts/fetch-brain-baseline.cjs +190 -0
  1449. package/scripts/fetch-brain-baseline.py +360 -0
  1450. package/scripts/feynman-minto-guardian.cjs +672 -0
  1451. package/scripts/feynman-timeline-refresh-command.cjs +270 -0
  1452. package/scripts/file-asset +253 -0
  1453. package/scripts/fire-sensor-event.cjs +83 -0
  1454. package/scripts/first-install-router.cjs +968 -0
  1455. package/scripts/frontmatter-schema-validator.cjs +339 -0
  1456. package/scripts/fts-index-drain.cjs +221 -0
  1457. package/scripts/generate-chat-embed.cjs +179 -0
  1458. package/scripts/generate-deck.cjs +322 -0
  1459. package/scripts/generate-export.cjs +474 -0
  1460. package/scripts/generate-hub.cjs +2553 -0
  1461. package/scripts/generate-lobby.cjs +718 -0
  1462. package/scripts/generate-presentation.cjs +988 -0
  1463. package/scripts/generate-presentation.test.cjs +405 -0
  1464. package/scripts/generate-section-intelligence.cjs +330 -0
  1465. package/scripts/generate-snapshot.cjs +1410 -0
  1466. package/scripts/generate-standalone +159 -0
  1467. package/scripts/git-ops +211 -0
  1468. package/scripts/graph-heal-pipeline.cjs +321 -0
  1469. package/scripts/gsd-artifact-graph-hook.cjs +219 -0
  1470. package/scripts/gsd-graph-derive-drain.cjs +571 -0
  1471. package/scripts/gsd-graph-derive-sweep.cjs +195 -0
  1472. package/scripts/heal-command.cjs +1365 -0
  1473. package/scripts/hedge-refit-pipeline.cjs +207 -0
  1474. package/scripts/help-renderer.cjs +303 -0
  1475. package/scripts/hmi-compliance-poll.cjs +451 -0
  1476. package/scripts/hmi-status-command.cjs +510 -0
  1477. package/scripts/hooked-rescore-117.cjs +224 -0
  1478. package/scripts/hooks/pre-commit +533 -0
  1479. package/scripts/hooks/pre-commit-room-minto-guard.cmd +43 -0
  1480. package/scripts/hooks/pre-commit-room-minto-guard.sh +533 -0
  1481. package/scripts/hsi-to-graph.cjs +194 -0
  1482. package/scripts/huji-batch.cjs +821 -0
  1483. package/scripts/huji-eval.cjs +1158 -0
  1484. package/scripts/huji-intake.cjs +563 -0
  1485. package/scripts/huji-pin-smoketest.cjs +454 -0
  1486. package/scripts/huji-run-one-async.cjs +305 -0
  1487. package/scripts/huji-run-one.cjs +671 -0
  1488. package/scripts/install-pre-commit.sh +113 -0
  1489. package/scripts/intent-classifier +106 -0
  1490. package/scripts/intent-classifier.cjs +3620 -0
  1491. package/scripts/interpret-whitespace.cjs +691 -0
  1492. package/scripts/jtbd-command.cjs +810 -0
  1493. package/scripts/jtbd-update.cjs +299 -0
  1494. package/scripts/label-topic-forest.cjs +667 -0
  1495. package/scripts/learn-from-usage +168 -0
  1496. package/scripts/lib/__pycache__/ensure_ml_deps.cpython-312.pyc +0 -0
  1497. package/scripts/lib/ensure_ml_deps.py +97 -0
  1498. package/scripts/load-embeddings-into-neo4j.cjs +569 -0
  1499. package/scripts/memory-artifact-graph-hook.cjs +191 -0
  1500. package/scripts/memory-command.cjs +687 -0
  1501. package/scripts/memory-completion-detector.cjs +217 -0
  1502. package/scripts/memory-lifecycle.cjs +620 -0
  1503. package/scripts/memory-resume-nudge.cjs +233 -0
  1504. package/scripts/methodology-ingest-local.sh +36 -0
  1505. package/scripts/migrate-brain-mcp-from-http-to-stdio.cjs +190 -0
  1506. package/scripts/migrate-brain-mcp-from-http-to-stdio.test.cjs +242 -0
  1507. package/scripts/migrate-hats-to-roomdb.cjs +217 -0
  1508. package/scripts/migrate-lazygraph.cjs +250 -0
  1509. package/scripts/migrate-minto-schema-v88.cjs +296 -0
  1510. package/scripts/migrate-plugin-root-refs.cjs +168 -0
  1511. package/scripts/migrate-room-sections-v275.cjs +556 -0
  1512. package/scripts/migrate-rooms +417 -0
  1513. package/scripts/migrate-skill-frontmatter.cjs +472 -0
  1514. package/scripts/migrate-stale-user-settings.cjs +296 -0
  1515. package/scripts/migrate-telemetry-v1.cjs +384 -0
  1516. package/scripts/migrate-telemetry-v1.test.cjs +356 -0
  1517. package/scripts/minto-debouncer.cjs +428 -0
  1518. package/scripts/mos-status.cjs +622 -0
  1519. package/scripts/mva-detect.cjs +229 -0
  1520. package/scripts/mva-run.cjs +36 -0
  1521. package/scripts/on-agent-complete +163 -0
  1522. package/scripts/on-cwd-changed +149 -0
  1523. package/scripts/on-file-changed +68 -0
  1524. package/scripts/on-stop +617 -0
  1525. package/scripts/on-task-complete +194 -0
  1526. package/scripts/operator-command.cjs +858 -0
  1527. package/scripts/operator-update.cjs +308 -0
  1528. package/scripts/part8-egress-guard-hook.cjs +229 -0
  1529. package/scripts/pipeline-command.cjs +271 -0
  1530. package/scripts/post-compact +383 -0
  1531. package/scripts/post-update-activation.cjs +339 -0
  1532. package/scripts/post-write +283 -0
  1533. package/scripts/power-demo-prompt.md +621 -0
  1534. package/scripts/pre-compact +273 -0
  1535. package/scripts/preflight-auto-explore.cjs +314 -0
  1536. package/scripts/preflight-doctor.cjs +225 -0
  1537. package/scripts/preflight-release-drift.cjs +168 -0
  1538. package/scripts/preflight-tension-surface.cjs +414 -0
  1539. package/scripts/probe-brain-contract.cjs +502 -0
  1540. package/scripts/publish-ops +346 -0
  1541. package/scripts/query-efficiency-telemetry.cjs +364 -0
  1542. package/scripts/query-semantic-scholar.cjs +545 -0
  1543. package/scripts/reapply-modifications +49 -0
  1544. package/scripts/reassign-primary.cjs +125 -0
  1545. package/scripts/recompile-room-references.cjs +601 -0
  1546. package/scripts/release-beta-preflight.sh +69 -0
  1547. package/scripts/render-pdf +588 -0
  1548. package/scripts/render-viz +190 -0
  1549. package/scripts/research-speaker +239 -0
  1550. package/scripts/resolve-room +204 -0
  1551. package/scripts/restore-post-compact-context.cjs +320 -0
  1552. package/scripts/room-auto-create-nudge.cjs +136 -0
  1553. package/scripts/room-naming-selector.cjs +201 -0
  1554. package/scripts/room-registry +767 -0
  1555. package/scripts/rs-discovery-engine.cjs +725 -0
  1556. package/scripts/rs-engine.py +2073 -0
  1557. package/scripts/rs-experts-command.cjs +300 -0
  1558. package/scripts/rs-explain-command.cjs +323 -0
  1559. package/scripts/rs-fetch-command.cjs +170 -0
  1560. package/scripts/rs-thesis-command.cjs +203 -0
  1561. package/scripts/rs-vector-bridge.cjs +410 -0
  1562. package/scripts/run-harness.cjs +890 -0
  1563. package/scripts/scout-cadence-guard.cjs +323 -0
  1564. package/scripts/scout-cadence-runner.cjs +509 -0
  1565. package/scripts/scout-telemetry-aggregator.cjs +268 -0
  1566. package/scripts/sealed-walker.py +96 -0
  1567. package/scripts/seed-brain-commands.cjs +324 -0
  1568. package/scripts/self-update +105 -0
  1569. package/scripts/sentinel-deadline-monitor +241 -0
  1570. package/scripts/sentinel-health-check +198 -0
  1571. package/scripts/sentinel-snapshot +42 -0
  1572. package/scripts/serve-dashboard +103 -0
  1573. package/scripts/serve-dashboard-live +932 -0
  1574. package/scripts/serve-presentation +97 -0
  1575. package/scripts/serve-wiki +90 -0
  1576. package/scripts/session-end-presence.cjs +79 -0
  1577. package/scripts/session-start +1942 -0
  1578. package/scripts/sessionstart-coordinator.cjs +249 -0
  1579. package/scripts/sessionstart-npm-reconcile.cjs +111 -0
  1580. package/scripts/sessionstart-post-update-preflight.cjs +303 -0
  1581. package/scripts/sessionstart-reference-now-seed.cjs +137 -0
  1582. package/scripts/setup-hooks.sh +112 -0
  1583. package/scripts/skillopt-codereview.cjs +830 -0
  1584. package/scripts/skillopt-eval.cjs +519 -0
  1585. package/scripts/skillopt-funnel.cjs +1076 -0
  1586. package/scripts/skillopt-genqueries.cjs +571 -0
  1587. package/scripts/skillopt-inventory.cjs +319 -0
  1588. package/scripts/skillopt-merge.cjs +656 -0
  1589. package/scripts/skillopt-triggerloop.cjs +1126 -0
  1590. package/scripts/soft-alias-runner.cjs +116 -0
  1591. package/scripts/stamp-artifact-write.cjs +276 -0
  1592. package/scripts/stamp-firing-block.cjs +325 -0
  1593. package/scripts/state-write.cjs +97 -0
  1594. package/scripts/statusline-fallback-echo.cjs +297 -0
  1595. package/scripts/statusline-mos +116 -0
  1596. package/scripts/statusline-mos-dispatch +127 -0
  1597. package/scripts/suggest-next-command.cjs +416 -0
  1598. package/scripts/sweep-skill-descriptions.cjs +263 -0
  1599. package/scripts/sync-rooms-brain +438 -0
  1600. package/scripts/sync-rooms-graph +264 -0
  1601. package/scripts/telemetry-command-invocation.cjs +120 -0
  1602. package/scripts/test-doctor-recovery.cjs +242 -0
  1603. package/scripts/test-fresh-install.md +140 -0
  1604. package/scripts/track-analytics +156 -0
  1605. package/scripts/transcribe-audio +148 -0
  1606. package/scripts/transcript-ingest.cjs +225 -0
  1607. package/scripts/update-icm-index +153 -0
  1608. package/scripts/v182-brain-optimize.cypher +1191 -0
  1609. package/scripts/validate-model-profiles +93 -0
  1610. package/scripts/vault-content-reformatter.cjs +581 -0
  1611. package/scripts/vault-export-orchestrator.cjs +400 -0
  1612. package/scripts/vault-footer-injector.cjs +315 -0
  1613. package/scripts/vault-import.cjs +839 -0
  1614. package/scripts/vault-integration-test.cjs +318 -0
  1615. package/scripts/vault-regenerate-all.cjs +216 -0
  1616. package/scripts/vault-regenerate-all.test.cjs +138 -0
  1617. package/scripts/vault-rules-generator.cjs +220 -0
  1618. package/scripts/vault-section-minto-generator.cjs +1642 -0
  1619. package/scripts/vault-section-minto-generator.integration.test.cjs +576 -0
  1620. package/scripts/vault-section-minto-generator.test.cjs +291 -0
  1621. package/scripts/vault-section-state-generator.cjs +385 -0
  1622. package/scripts/vault-welcome-generator.cjs +403 -0
  1623. package/scripts/vault-wikilink-injector.cjs +449 -0
  1624. package/scripts/verify-phase-132.cjs +338 -0
  1625. package/scripts/verify-release +744 -0
  1626. package/scripts/whitespace-command.cjs +831 -0
  1627. package/scripts/whitespace-to-brain.cjs +383 -0
  1628. package/scripts/whitespace-to-graph.cjs +220 -0
  1629. package/scripts/wikilink-batch.cjs +102 -0
  1630. package/scripts/wikilink-file.cjs +139 -0
  1631. package/scripts/write-bridge-artifacts.cjs +140 -0
  1632. package/scripts/write-scope-check +12 -0
  1633. package/scripts/write-scope-check.cjs +461 -0
  1634. package/scripts/write-whitespace-sections.cjs +483 -0
  1635. package/settings.json +7 -0
  1636. package/skills/act/SKILL.md +523 -0
  1637. package/skills/admin/SKILL.md +437 -0
  1638. package/skills/agentshield/SKILL.md +50 -0
  1639. package/skills/analyze-needs/SKILL.md +74 -0
  1640. package/skills/analyze-systems/SKILL.md +69 -0
  1641. package/skills/analyze-timing/SKILL.md +94 -0
  1642. package/skills/auto-explore/SKILL.md +84 -0
  1643. package/skills/beautiful-question/SKILL.md +72 -0
  1644. package/skills/bono/SKILL.md +146 -0
  1645. package/skills/brain-connector/SKILL.md +206 -0
  1646. package/skills/brain-derive/SKILL.md +140 -0
  1647. package/skills/build-knowledge/SKILL.md +118 -0
  1648. package/skills/build-thesis/SKILL.md +90 -0
  1649. package/skills/causal/SKILL.md +265 -0
  1650. package/skills/challenge-assumptions/SKILL.md +74 -0
  1651. package/skills/client-discovery-interview/SKILL.md +94 -0
  1652. package/skills/client-discovery-interview/discovery-scaffold.json +41 -0
  1653. package/skills/client-discovery-interview/question-bank.md +149 -0
  1654. package/skills/compare-ventures/SKILL.md +113 -0
  1655. package/skills/context-engine/SKILL.md +169 -0
  1656. package/skills/conversation-mode/SKILL.md +189 -0
  1657. package/skills/correct-reference-now/SKILL.md +86 -0
  1658. package/skills/dashboard/SKILL.md +142 -0
  1659. package/skills/deck/SKILL.md +113 -0
  1660. package/skills/deep-grade/SKILL.md +210 -0
  1661. package/skills/diagnose/SKILL.md +128 -0
  1662. package/skills/diagnostics/SKILL.md +193 -0
  1663. package/skills/dial-memory-refresh/SKILL.md +116 -0
  1664. package/skills/diffusion/SKILL.md +125 -0
  1665. package/skills/discover/SKILL.md +216 -0
  1666. package/skills/doctor/SKILL.md +269 -0
  1667. package/skills/dogfood-flush/SKILL.md +133 -0
  1668. package/skills/dominant-designs/SKILL.md +72 -0
  1669. package/skills/eureka/SKILL.md +313 -0
  1670. package/skills/explain-decision/SKILL.md +138 -0
  1671. package/skills/explore-domains/SKILL.md +74 -0
  1672. package/skills/explore-futures/SKILL.md +64 -0
  1673. package/skills/explore-opportunity/SKILL.md +168 -0
  1674. package/skills/explore-trends/SKILL.md +74 -0
  1675. package/skills/export/SKILL.md +126 -0
  1676. package/skills/feynman-timeline-refresh/SKILL.md +105 -0
  1677. package/skills/file-meeting/SKILL.md +1190 -0
  1678. package/skills/find-analogies/SKILL.md +360 -0
  1679. package/skills/find-bottlenecks/SKILL.md +104 -0
  1680. package/skills/find-connections/SKILL.md +108 -0
  1681. package/skills/funding/SKILL.md +110 -0
  1682. package/skills/futures/SKILL.md +124 -0
  1683. package/skills/grade/SKILL.md +252 -0
  1684. package/skills/grade-grant/SKILL.md +293 -0
  1685. package/skills/graph/SKILL.md +216 -0
  1686. package/skills/hat-briefing/SKILL.md +160 -0
  1687. package/skills/heal/SKILL.md +69 -0
  1688. package/skills/help/SKILL.md +172 -0
  1689. package/skills/hmi-status/SKILL.md +73 -0
  1690. package/skills/ignite/SKILL.md +225 -0
  1691. package/skills/ingest-methodology/SKILL.md +125 -0
  1692. package/skills/intel-pipeline/SKILL.md +128 -0
  1693. package/skills/intelligence-orchestrator/SKILL.md +262 -0
  1694. package/skills/jtbd/SKILL.md +261 -0
  1695. package/skills/larry-personality/SKILL.md +570 -0
  1696. package/skills/larry-personality/framework-chains.md +92 -0
  1697. package/skills/larry-personality/mode-engine.md +185 -0
  1698. package/skills/leadership/SKILL.md +109 -0
  1699. package/skills/lean-canvas/SKILL.md +70 -0
  1700. package/skills/macro-trends/SKILL.md +84 -0
  1701. package/skills/map-unknowns/SKILL.md +72 -0
  1702. package/skills/memory/SKILL.md +212 -0
  1703. package/skills/memory-cortex-reach/SKILL.md +80 -0
  1704. package/skills/models/SKILL.md +197 -0
  1705. package/skills/mos/SKILL.md +160 -0
  1706. package/skills/mos-deck-engine/SKILL.md +329 -0
  1707. package/skills/mos-reason/SKILL.md +484 -0
  1708. package/skills/mullins/SKILL.md +151 -0
  1709. package/skills/mullins-scaffold/SKILL.md +132 -0
  1710. package/skills/mullins-scaffold/scaffold.json +223 -0
  1711. package/skills/mva-brief/SKILL.md +87 -0
  1712. package/skills/mva-option/SKILL.md +120 -0
  1713. package/skills/mva-pipeline/SKILL.md +158 -0
  1714. package/skills/mva-report/SKILL.md +79 -0
  1715. package/skills/new-project/SKILL.md +629 -0
  1716. package/skills/new-surface/SKILL.md +112 -0
  1717. package/skills/onboard/SKILL.md +485 -0
  1718. package/skills/operator/SKILL.md +167 -0
  1719. package/skills/opportunities/SKILL.md +171 -0
  1720. package/skills/organize/SKILL.md +69 -0
  1721. package/skills/persona/SKILL.md +272 -0
  1722. package/skills/pipeline/SKILL.md +164 -0
  1723. package/skills/present/SKILL.md +123 -0
  1724. package/skills/publish/SKILL.md +224 -0
  1725. package/skills/pws-brain/SKILL.md +152 -0
  1726. package/skills/pws-methodology/SKILL.md +92 -0
  1727. package/skills/qualify-opportunity/SKILL.md +111 -0
  1728. package/skills/query/SKILL.md +68 -0
  1729. package/skills/radar/SKILL.md +106 -0
  1730. package/skills/reanalyze/SKILL.md +122 -0
  1731. package/skills/research/SKILL.md +462 -0
  1732. package/skills/room/SKILL.md +381 -0
  1733. package/skills/room-passive/SKILL.md +174 -0
  1734. package/skills/room-proactive/SKILL.md +344 -0
  1735. package/skills/rooms/SKILL.md +678 -0
  1736. package/skills/root-cause/SKILL.md +73 -0
  1737. package/skills/rs-experts/SKILL.md +151 -0
  1738. package/skills/rs-explain/SKILL.md +130 -0
  1739. package/skills/rs-fetch/SKILL.md +115 -0
  1740. package/skills/rs-thesis/SKILL.md +129 -0
  1741. package/skills/scenario-plan/SKILL.md +76 -0
  1742. package/skills/scheduled-tasks/SKILL.md +301 -0
  1743. package/skills/score-innovation/SKILL.md +74 -0
  1744. package/skills/scout/SKILL.md +370 -0
  1745. package/skills/setup/SKILL.md +654 -0
  1746. package/skills/show/SKILL.md +68 -0
  1747. package/skills/skill/SKILL.md +104 -0
  1748. package/skills/snapshot/SKILL.md +178 -0
  1749. package/skills/speakers/SKILL.md +116 -0
  1750. package/skills/splash/SKILL.md +54 -0
  1751. package/skills/stance/SKILL.md +89 -0
  1752. package/skills/status/SKILL.md +107 -0
  1753. package/skills/structure-argument/SKILL.md +78 -0
  1754. package/skills/suggest-next/SKILL.md +137 -0
  1755. package/skills/systems-thinking/SKILL.md +220 -0
  1756. package/skills/think-hats/SKILL.md +82 -0
  1757. package/skills/trending-to-absurd/SKILL.md +100 -0
  1758. package/skills/ui-system/SKILL.md +474 -0
  1759. package/skills/ui-system/design-system/M-OS-DESIGN-SYSTEM.md +273 -0
  1760. package/skills/ui-system/design-system/SPEC.md +72 -0
  1761. package/skills/ui-system/design-system/image-prompt-style.md +29 -0
  1762. package/skills/ui-system/design-system/mos-design-system.css +240 -0
  1763. package/skills/ui-system/rules/design-system.md +60 -0
  1764. package/skills/ui-system/rules/dual-palette.md +156 -0
  1765. package/skills/ui-system/rules/glyph-disambiguation.md +171 -0
  1766. package/skills/ui-system/rules/shape-f-zero-and-six.md +169 -0
  1767. package/skills/update/SKILL.md +254 -0
  1768. package/skills/user-needs/SKILL.md +73 -0
  1769. package/skills/validate/SKILL.md +73 -0
  1770. package/skills/value-proposition/SKILL.md +141 -0
  1771. package/skills/vault/SKILL.md +326 -0
  1772. package/skills/visualize/SKILL.md +69 -0
  1773. package/skills/whitespace/SKILL.md +539 -0
  1774. package/skills/wiki/SKILL.md +94 -0
  1775. package/templates/_base.html +20 -0
  1776. package/templates/chat-panel.html +205 -0
  1777. package/templates/constellation-chat-hooks.js +89 -0
  1778. package/templates/constellation.html +1272 -0
  1779. package/templates/destijl-base.css +268 -0
  1780. package/templates/discovery/discovery-brief-template.md +97 -0
  1781. package/templates/due-diligence.html +49 -0
  1782. package/templates/executive-summary.html +40 -0
  1783. package/templates/icm/CLAUDE.md +31 -0
  1784. package/templates/icm/GROUP-CLAUDE.md +33 -0
  1785. package/templates/icm/INDEX.md +26 -0
  1786. package/templates/import/stage-contracts/01-ingest.md +34 -0
  1787. package/templates/import/stage-contracts/02-classify.md +48 -0
  1788. package/templates/import/stage-contracts/03-route.md +42 -0
  1789. package/templates/import/stage-contracts/04-enrich.md +40 -0
  1790. package/templates/investment-thesis.html +25 -0
  1791. package/templates/meeting-report.html +361 -0
  1792. package/templates/presentation/dashboard.html +1150 -0
  1793. package/templates/presentation/deck.html +540 -0
  1794. package/templates/presentation/diagrams.html +437 -0
  1795. package/templates/presentation/graph.html +391 -0
  1796. package/templates/presentation/insights.html +548 -0
  1797. package/templates/presentation/wiki.html +533 -0
  1798. package/templates/profile.html +136 -0
  1799. package/templates/room-context/last-session.md +56 -0
  1800. package/templates/room-context/methodology-history.md +28 -0
  1801. package/templates/room-context/rejection-log.md +25 -0
  1802. package/templates/room-context/weekly-digest.md +54 -0
  1803. package/templates/room-skeleton/MINTO.md.tmpl +19 -0
  1804. package/templates/room-skeleton/ROOM.md.identity.tmpl +13 -0
  1805. package/templates/room-skeleton/ROOM.md.section.tmpl +33 -0
  1806. package/templates/room-skeleton/STATE.md.tmpl +33 -0
  1807. package/templates/room-skeleton/USER.md.tmpl +23 -0
  1808. package/templates/room-skeleton/references/.gitkeep +0 -0
  1809. package/templates/room-skeleton/references/SECTION-SCHEMA.md +213 -0
  1810. package/templates/room-skeleton/references/SUB-SCHEMAS.md +91 -0
  1811. package/templates/room-skeleton/section-contracts/.gitkeep +0 -0
  1812. package/templates/room-skeleton/section-contracts/business-model.md +32 -0
  1813. package/templates/room-skeleton/section-contracts/competitive-analysis.md +33 -0
  1814. package/templates/room-skeleton/section-contracts/financial-model.md +30 -0
  1815. package/templates/room-skeleton/section-contracts/funding.md +41 -0
  1816. package/templates/room-skeleton/section-contracts/legal-ip.md +30 -0
  1817. package/templates/room-skeleton/section-contracts/market-analysis.md +32 -0
  1818. package/templates/room-skeleton/section-contracts/opportunity-bank.md +39 -0
  1819. package/templates/room-skeleton/section-contracts/problem-definition.md +32 -0
  1820. package/templates/room-skeleton/section-contracts/solution-design.md +36 -0
  1821. package/templates/room-skeleton/section-contracts/strategy.md +35 -0
  1822. package/templates/room-skeleton/section-contracts/team-execution.md +36 -0
  1823. package/templates/shared.css +427 -0
  1824. package/templates/showcase/blueprint.html +432 -0
  1825. package/templates/showcase/library.html +571 -0
  1826. package/templates/showcase/narrative.html +361 -0
  1827. package/templates/showcase/overview.html +468 -0
  1828. package/templates/showcase/synthesis.html +473 -0
  1829. package/templates/signature-footer.html +34 -0
@@ -0,0 +1,1642 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MindrianOS Plugin -- Vault Section MINTO Generator
4
+ *
5
+ * Writes a MINTO.md (Minto Pyramid + MECE issue tree) into every section
6
+ * folder that contains at least one artifact. Empty sections are skipped per
7
+ * SECTION-07. Recursive through sub-rooms per SECTION-05.
8
+ *
9
+ * Trifecta contract (ARCH-02): this is the reasoning half of the tier-1 MOC
10
+ * hub. Paired with ROOM.md (identity, Decision 15) and STATE.md (status,
11
+ * companion script), every section becomes a fully-formed Obsidian MOC.
12
+ *
13
+ * Pure CJS, zero npm dependencies. Reuses lib/vault/room-scanner.cjs and
14
+ * scripts/vault-section-state-generator.cjs walk helper.
15
+ *
16
+ * node scripts/vault-section-minto-generator.cjs <roomDir> [--dry-run] [--section <name>]
17
+ *
18
+ * Idempotent (WIKI-07): stable sort orders, atomic .tmp + rename write,
19
+ * byte-identical skip on re-run.
20
+ */
21
+
22
+ 'use strict';
23
+
24
+ const fs = require('fs');
25
+ const path = require('path');
26
+ const {
27
+ scanRoom,
28
+ parseFrontmatter,
29
+ slugToTitle,
30
+ } = require('../lib/vault/room-scanner.cjs');
31
+ const {
32
+ walkAllSections,
33
+ } = require('./vault-section-state-generator.cjs');
34
+
35
+ // ---------- CLI ----------
36
+
37
+ const argv = process.argv.slice(2);
38
+ const DRY_RUN = argv.includes('--dry-run');
39
+ const sectionFlagIdx = argv.indexOf('--section');
40
+ const SECTION_FILTER =
41
+ sectionFlagIdx !== -1 && argv[sectionFlagIdx + 1]
42
+ ? argv[sectionFlagIdx + 1]
43
+ : null;
44
+
45
+ // Phase 81-01: --plan and --write subcommand flags.
46
+ const PLAN_FLAG = argv.includes('--plan');
47
+ const WRITE_FLAG = argv.includes('--write');
48
+ const narrativeFlagIdx = argv.indexOf('--narrative');
49
+ const NARRATIVE_PATH =
50
+ narrativeFlagIdx !== -1 && argv[narrativeFlagIdx + 1]
51
+ ? argv[narrativeFlagIdx + 1]
52
+ : null;
53
+
54
+ // Phase 88-04-B: test-only invariant-rejection mock flag. Behind MOS_TEST=1
55
+ // so production cannot accidentally inject synthetic violations. Accepted
56
+ // values: "error" | "warning" | "critical" (null = real validator).
57
+ let MOCK_INVARIANTS_FAIL_CLI = null;
58
+ for (const a of argv) {
59
+ const m = a.match(/^--mock-invariants-fail=(.+)$/);
60
+ if (m) {
61
+ MOCK_INVARIANTS_FAIL_CLI = m[1];
62
+ break;
63
+ }
64
+ }
65
+
66
+ // roomArg: first positional that is not a flag value.
67
+ // Values of --section and --narrative are consumed by their flags.
68
+ const FLAG_VALUE_INDICES = new Set();
69
+ if (sectionFlagIdx !== -1) FLAG_VALUE_INDICES.add(sectionFlagIdx + 1);
70
+ if (narrativeFlagIdx !== -1) FLAG_VALUE_INDICES.add(narrativeFlagIdx + 1);
71
+ const roomArg = argv.find(function (a, i) {
72
+ if (a.startsWith('--')) return false;
73
+ if (FLAG_VALUE_INDICES.has(i)) return false;
74
+ return true;
75
+ });
76
+
77
+ function usage() {
78
+ process.stderr.write(
79
+ 'Usage: node scripts/vault-section-minto-generator.cjs <roomDir> [--dry-run] [--section <name>]\n' +
80
+ ' node scripts/vault-section-minto-generator.cjs --plan <roomDir> --section <name>\n' +
81
+ ' node scripts/vault-section-minto-generator.cjs --write <roomDir> --section <name> --narrative <jsonFile>\n'
82
+ );
83
+ }
84
+
85
+ // ---------- Heuristic gap lookup ----------
86
+
87
+ const GAP_HEURISTICS = {
88
+ 'problem-definition': [
89
+ 'root-cause analysis',
90
+ 'stakeholder impact mapping',
91
+ 'problem formulation history',
92
+ ],
93
+ 'market-analysis': ['TAM sizing', 'SAM sizing', 'SOM sizing', 'segment personas'],
94
+ 'solution-design': ['architecture diagram', 'user journey map', 'technical feasibility'],
95
+ 'business-model': ['revenue model', 'unit economics', 'pricing strategy'],
96
+ 'competitive-analysis': ['direct competitors', 'indirect competitors', 'moat analysis'],
97
+ 'financial-model': ['projections', 'burn rate', 'runway analysis', 'funding ask'],
98
+ 'legal-ip': ['entity structure', 'IP ownership', 'regulatory review'],
99
+ 'team-execution': ['hiring plan', 'org chart', 'milestones'],
100
+ team: ['founder bios', 'advisor roster', 'gaps in expertise'],
101
+ meetings: ['meeting cadence', 'decision log', 'action items'],
102
+ 'opportunity-bank': ['grant pipeline', 'partnership pipeline', 'convergence signals'],
103
+ };
104
+
105
+ // ---------- Helpers ----------
106
+
107
+ function today() {
108
+ // Phase 81-01: allow deterministic date injection for test fixtures.
109
+ // When unset (production), behavior is byte-equivalent to pre-81.
110
+ if (process.env.MINTO_FROZEN_DATE) return process.env.MINTO_FROZEN_DATE;
111
+ const d = new Date();
112
+ const y = d.getUTCFullYear();
113
+ const m = String(d.getUTCMonth() + 1).padStart(2, '0');
114
+ const day = String(d.getUTCDate()).padStart(2, '0');
115
+ return `${y}-${m}-${day}`;
116
+ }
117
+
118
+ // Phase 88-00: ISO-8601 timestamp for last_generated_at. Honors
119
+ // MINTO_FROZEN_TIMESTAMP for deterministic test fixtures.
120
+ function nowIso() {
121
+ if (process.env.MINTO_FROZEN_TIMESTAMP) {
122
+ return process.env.MINTO_FROZEN_TIMESTAMP;
123
+ }
124
+ // Seconds precision: .000Z truncated so byte diffs between runs are
125
+ // clean (no sub-second jitter in human-read frontmatter).
126
+ return new Date().toISOString().replace(/\.\d{3}Z$/, 'Z');
127
+ }
128
+
129
+ // ---------- Phase 88-00: v88 frontmatter preservation ----------
130
+ //
131
+ // When regenerating MINTO.md, four v88 fields must be preserved from the
132
+ // previous file:
133
+ // - last_artifact_write_seen_at (set by 88-04 post-write hook)
134
+ // - reasoning_health_score (computed by 88-01 readTriple)
135
+ // - flagged_weaknesses (populated by 88-13 guardian)
136
+ // - decision_log (cross-session decision continuity)
137
+ //
138
+ // last_generated_at is NOT preserved -- it advances on every write.
139
+ //
140
+ // The parser below is a narrow-dialect frontmatter reader that extracts
141
+ // exactly these four fields. It mirrors the dialect supported by
142
+ // lib/core/feynman-minto-invariants.cjs so the two modules agree on what
143
+ // a Feynman-MINTO frontmatter looks like. Zero new dependencies.
144
+
145
+ function readPreservedV88Fields(targetPath) {
146
+ const defaults = {
147
+ last_artifact_write_seen_at: null,
148
+ reasoning_health_score: null,
149
+ flagged_weaknesses: [],
150
+ decision_log: [],
151
+ };
152
+ let raw;
153
+ try {
154
+ raw = fs.readFileSync(targetPath, 'utf8');
155
+ } catch (_) {
156
+ return defaults;
157
+ }
158
+ const fmMatch = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n/);
159
+ if (!fmMatch) return defaults;
160
+ const fmText = fmMatch[1];
161
+ const lines = fmText.split(/\r?\n/);
162
+
163
+ const out = Object.assign({}, defaults);
164
+
165
+ for (let i = 0; i < lines.length; i++) {
166
+ const line = lines[i];
167
+
168
+ // last_artifact_write_seen_at: "ISO" | null
169
+ let m = line.match(/^last_artifact_write_seen_at:\s*(.*)$/);
170
+ if (m) {
171
+ const v = m[1].trim();
172
+ if (v.length > 0 && v !== 'null') {
173
+ out.last_artifact_write_seen_at = stripQuotes(v);
174
+ }
175
+ continue;
176
+ }
177
+
178
+ // reasoning_health_score: number | null
179
+ m = line.match(/^reasoning_health_score:\s*(.*)$/);
180
+ if (m) {
181
+ const v = m[1].trim();
182
+ if (v.length > 0 && v !== 'null') {
183
+ const num = Number(v);
184
+ if (Number.isFinite(num)) out.reasoning_health_score = num;
185
+ }
186
+ continue;
187
+ }
188
+
189
+ // flagged_weaknesses: [a, b] or block list
190
+ m = line.match(/^flagged_weaknesses:\s*(.*)$/);
191
+ if (m) {
192
+ const v = m[1].trim();
193
+ if (v.startsWith('[') && v.endsWith(']')) {
194
+ // Flow-style array.
195
+ const inner = v.slice(1, -1).trim();
196
+ if (inner.length > 0) {
197
+ out.flagged_weaknesses = inner
198
+ .split(',')
199
+ .map(function (s) { return stripQuotes(s.trim()); })
200
+ .filter(function (s) { return s.length > 0; });
201
+ }
202
+ continue;
203
+ }
204
+ // Block list: read ` - item` continuation lines.
205
+ const items = [];
206
+ let j = i + 1;
207
+ while (j < lines.length) {
208
+ const nxt = lines[j];
209
+ const it = nxt.match(/^\s+-\s+(.*)$/);
210
+ if (!it) break;
211
+ items.push(stripQuotes(it[1].trim()));
212
+ j += 1;
213
+ }
214
+ out.flagged_weaknesses = items;
215
+ continue;
216
+ }
217
+
218
+ // decision_log: [] (empty) OR block list of objects
219
+ m = line.match(/^decision_log:\s*(.*)$/);
220
+ if (m) {
221
+ const rest = m[1].trim();
222
+ if (rest === '[]') continue; // empty
223
+ // Block list: walk continuation lines indented with at least 2 spaces.
224
+ const entries = [];
225
+ let j = i + 1;
226
+ let current = null;
227
+ while (j < lines.length) {
228
+ const nxt = lines[j];
229
+ if (/^[A-Za-z_]/.test(nxt)) break; // next top-level key
230
+ if (/^\s*$/.test(nxt)) {
231
+ j += 1;
232
+ continue;
233
+ }
234
+ const head = nxt.match(/^\s+-\s+([A-Za-z_][A-Za-z0-9_]*):\s*(.*)$/);
235
+ if (head) {
236
+ if (current) entries.push(current);
237
+ current = {};
238
+ current[head[1]] = stripQuotes(head[2]);
239
+ j += 1;
240
+ continue;
241
+ }
242
+ const cont = nxt.match(
243
+ /^\s+([A-Za-z_][A-Za-z0-9_]*):\s*(.*)$/
244
+ );
245
+ if (cont && current) {
246
+ current[cont[1]] = stripQuotes(cont[2]);
247
+ j += 1;
248
+ continue;
249
+ }
250
+ break;
251
+ }
252
+ if (current) entries.push(current);
253
+ out.decision_log = entries;
254
+ continue;
255
+ }
256
+ }
257
+
258
+ return out;
259
+ }
260
+
261
+ function stripQuotes(s) {
262
+ if (typeof s !== 'string') return s;
263
+ const t = s.trim();
264
+ if (
265
+ (t.startsWith('"') && t.endsWith('"')) ||
266
+ (t.startsWith("'") && t.endsWith("'"))
267
+ ) {
268
+ return t.slice(1, -1);
269
+ }
270
+ return t;
271
+ }
272
+
273
+ // Render the five v88 fields as frontmatter lines (in canonical order).
274
+ // Returns an array of lines (no trailing newline). Caller splices into the
275
+ // frontmatter right before the closing `---` delimiter.
276
+ function renderV88FrontmatterLines(preserved) {
277
+ const lines = [];
278
+ lines.push('last_generated_at: "' + nowIso() + '"');
279
+
280
+ const laws = preserved.last_artifact_write_seen_at;
281
+ if (laws === null || laws === undefined) {
282
+ lines.push('last_artifact_write_seen_at: null');
283
+ } else {
284
+ lines.push('last_artifact_write_seen_at: "' + laws + '"');
285
+ }
286
+
287
+ const rhs = preserved.reasoning_health_score;
288
+ if (rhs === null || rhs === undefined) {
289
+ lines.push('reasoning_health_score: null');
290
+ } else {
291
+ lines.push('reasoning_health_score: ' + String(rhs));
292
+ }
293
+
294
+ const fw = Array.isArray(preserved.flagged_weaknesses)
295
+ ? preserved.flagged_weaknesses
296
+ : [];
297
+ if (fw.length === 0) {
298
+ lines.push('flagged_weaknesses: []');
299
+ } else {
300
+ lines.push(
301
+ 'flagged_weaknesses: [' +
302
+ fw.map(function (s) { return '"' + String(s).replace(/"/g, '\\"') + '"'; }).join(', ') +
303
+ ']'
304
+ );
305
+ }
306
+
307
+ const dl = Array.isArray(preserved.decision_log) ? preserved.decision_log : [];
308
+ if (dl.length === 0) {
309
+ lines.push('decision_log: []');
310
+ } else {
311
+ lines.push('decision_log:');
312
+ dl.forEach(function (entry) {
313
+ const keys = Object.keys(entry);
314
+ if (keys.length === 0) return;
315
+ // session_id first (canonical), then remaining keys in insertion order.
316
+ const ordered = [];
317
+ if ('session_id' in entry) ordered.push('session_id');
318
+ for (const k of keys) {
319
+ if (k !== 'session_id') ordered.push(k);
320
+ }
321
+ ordered.forEach(function (k, i) {
322
+ const v = entry[k];
323
+ const quoted = typeof v === 'string'
324
+ ? '"' + v.replace(/"/g, '\\"') + '"'
325
+ : String(v);
326
+ if (i === 0) {
327
+ lines.push(' - ' + k + ': ' + quoted);
328
+ } else {
329
+ lines.push(' ' + k + ': ' + quoted);
330
+ }
331
+ });
332
+ });
333
+ }
334
+
335
+ return lines;
336
+ }
337
+
338
+ function collectSectionArtifacts(sectionDir, contentFiles) {
339
+ return contentFiles
340
+ .filter((f) => f.path.startsWith(sectionDir + path.sep))
341
+ .filter((f) => !f.isFiledTo)
342
+ .sort((a, b) => a.relPath.localeCompare(b.relPath));
343
+ }
344
+
345
+ function firstBodyLine(filePath) {
346
+ try {
347
+ const content = fs.readFileSync(filePath, 'utf-8');
348
+ let body = content;
349
+ if (content.startsWith('---')) {
350
+ const end = content.indexOf('\n---', 3);
351
+ if (end !== -1) body = content.slice(end + 4);
352
+ }
353
+ const lines = body.split(/\r?\n/);
354
+ for (const line of lines) {
355
+ const trimmed = line.trim();
356
+ if (!trimmed) continue;
357
+ if (trimmed.startsWith('#')) continue;
358
+ if (trimmed.startsWith('<!--')) continue;
359
+ if (trimmed.startsWith('>')) continue;
360
+ // Truncate for one-line summary
361
+ return trimmed.length > 180 ? trimmed.slice(0, 177) + '...' : trimmed;
362
+ }
363
+ } catch (_) {
364
+ /* ignore */
365
+ }
366
+ return 'Artifact contributes evidence to this section.';
367
+ }
368
+
369
+ // Quick task 260903-i2x (T2 read half) -- reads the highest-confidence,
370
+ // most-recent conclusion/decision node for this section, straight from
371
+ // room.db, so deriveGoverningThought below can render REAL reasoning-node
372
+ // text instead of the count-based template once such a node exists.
373
+ //
374
+ // Canon Part 9 / substrate mandate M2: navigation.cjs is the ONLY door to
375
+ // room.db. openRoomDbReadOnlyForCaller (navigation.cjs:450-467) is the right
376
+ // MODE of that door here because a doc generator must never migrate or
377
+ // mutate the room it is describing -- the plain openRoomDbForCaller mode
378
+ // runs 13 schema-creation clauses (each an "IF NOT EXISTS" table create) plus
379
+ // 5 migrations on every open, which is wrong for a read-only describer. This closes the handle
380
+ // via navigation.closeRoomDbForCaller because there is deliberately no
381
+ // read-only sibling close function (same re-export, tolerant of a bare
382
+ // DatabaseSync).
383
+ //
384
+ // Lazy-required INSIDE the function, inside try/catch, mirroring the
385
+ // existing tryEnqueueBrainDerivation lazy-require idiom at line ~598 -- this
386
+ // keeps the generator's cold path free of the navigation module and keeps a
387
+ // missing/incompatible module from ever breaking the render.
388
+ //
389
+ // The whole function body is one try/catch returning null on ANY failure. A
390
+ // legacy un-migrated 3-column room.db has no confidence / created_at
391
+ // columns (node-insert.cjs::isMigratedSchema's two-schema reality) and this
392
+ // query will throw against it -- that is EXPECTED and exactly why the whole
393
+ // body degrades to null rather than propagating.
394
+ function readGoverningThoughtFromGraph(roomDir, sectionSlug) {
395
+ let navigation;
396
+ try {
397
+ navigation = require('../lib/core/navigation.cjs');
398
+ } catch (_e) {
399
+ return null;
400
+ }
401
+ try {
402
+ const db = navigation.openRoomDbReadOnlyForCaller(roomDir);
403
+ if (!db) return null;
404
+ try {
405
+ // The Artifact + properties.section join shape is the shipped one at
406
+ // lib/core/graph-ops.cjs:242 (json_extract(properties,'$.section') on
407
+ // an Artifact node) -- cited rather than inventing a second
408
+ // convention. DERIVED_FROM is included alongside SOURCED_FROM in the
409
+ // edge-type match so a node reachable only via the Phase 120-00
410
+ // structural edge is still found, not just T2's own new edge.
411
+ const row = db.prepare(
412
+ `SELECT json_extract(n.properties,'$.text') AS text
413
+ FROM nodes n
414
+ WHERE json_extract(n.properties,'$.epistemic_type') IN ('conclusion','decision')
415
+ AND json_extract(n.properties,'$.text') IS NOT NULL
416
+ AND json_extract(n.properties,'$.text') != ''
417
+ AND (
418
+ json_extract(n.properties,'$.section') = ?
419
+ OR n.id IN (
420
+ SELECT e.source FROM edges e
421
+ WHERE e.type IN ('SOURCED_FROM','DERIVED_FROM')
422
+ AND e.target IN (
423
+ SELECT a.id FROM nodes a
424
+ WHERE a.type = 'Artifact'
425
+ AND json_extract(a.properties,'$.section') = ?
426
+ )
427
+ )
428
+ )
429
+ ORDER BY COALESCE(n.confidence, 0) DESC, COALESCE(n.created_at, 0) DESC
430
+ LIMIT 1`
431
+ ).get(sectionSlug, sectionSlug);
432
+ if (row && typeof row.text === 'string' && row.text.length > 0) {
433
+ return row.text;
434
+ }
435
+ return null;
436
+ } finally {
437
+ navigation.closeRoomDbForCaller(db);
438
+ }
439
+ } catch (_e) {
440
+ return null;
441
+ }
442
+ }
443
+
444
+ function deriveGoverningThought(section, artifacts) {
445
+ const title = slugToTitle(section.name);
446
+ const n = artifacts.length;
447
+ const fallback = `${title} synthesizes ${n} artifact${n === 1 ? '' : 's'} into a coherent argument for this section of the venture.`;
448
+ // Quick task 260903-i2x: try the graph first (section.parentRoomDir is
449
+ // already in scope at both call sites two lines above their own call, so
450
+ // no signature change is needed). On day one there are zero such nodes in
451
+ // any existing room, so the fallback IS the normal path until the Task 2
452
+ // write paths have run for a while; the fallback gets removed only once a
453
+ // room is observed producing real conclusion nodes through normal use,
454
+ // never on a fixed date.
455
+ //
456
+ // Idempotence consequence (WIKI-07): the byte-identical-on-re-run contract
457
+ // now holds PER GRAPH STATE rather than absolutely. Two runs with an
458
+ // unchanged graph are still byte-identical; a run after a new conclusion
459
+ // node lands legitimately produces new content, which is the entire point
460
+ // of this change.
461
+ const roomDir = section && section.parentRoomDir;
462
+ const sectionSlug = section && section.name;
463
+ if (typeof roomDir === 'string' && roomDir.length > 0 && typeof sectionSlug === 'string' && sectionSlug.length > 0) {
464
+ const graphThought = readGoverningThoughtFromGraph(roomDir, sectionSlug);
465
+ if (typeof graphThought === 'string' && graphThought.length > 0) {
466
+ return graphThought;
467
+ }
468
+ }
469
+ return fallback;
470
+ }
471
+
472
+ function deriveClaims(artifacts, sectionDir, max = 5) {
473
+ const picks = artifacts.slice(0, max);
474
+ return picks.map((f) => {
475
+ const base = path.basename(f.path, '.md');
476
+ const title = slugToTitle(base);
477
+ const rel = path.relative(sectionDir, f.path).split(path.sep).join('/');
478
+ return {
479
+ title,
480
+ rel,
481
+ display: title,
482
+ summary: firstBodyLine(f.path),
483
+ };
484
+ });
485
+ }
486
+
487
+ function deriveMeceTree(section, artifacts, sectionDir) {
488
+ const lines = [`- **${section.name}**`];
489
+ if (artifacts.length === 0) {
490
+ lines.push(' - *(no artifacts filed yet -- tree empty)*');
491
+ return lines.join('\n');
492
+ }
493
+ // Bucket into thirds: primary / supporting / gaps
494
+ const third = Math.ceil(artifacts.length / 2);
495
+ const primary = artifacts.slice(0, third);
496
+ const supporting = artifacts.slice(third);
497
+ lines.push(' - Primary evidence');
498
+ for (const f of primary) {
499
+ const base = path.basename(f.path, '.md');
500
+ const rel = path.relative(sectionDir, f.path).split(path.sep).join('/');
501
+ lines.push(` - [[${rel}|${slugToTitle(base)}]]`);
502
+ }
503
+ if (supporting.length > 0) {
504
+ lines.push(' - Supporting evidence');
505
+ for (const f of supporting) {
506
+ const base = path.basename(f.path, '.md');
507
+ const rel = path.relative(sectionDir, f.path).split(path.sep).join('/');
508
+ lines.push(` - [[${rel}|${slugToTitle(base)}]]`);
509
+ }
510
+ }
511
+ lines.push(' - Open dimension (gap)');
512
+ lines.push(' - *(no artifact yet)*');
513
+ return lines.join('\n');
514
+ }
515
+
516
+ function deriveGaps(section, artifacts) {
517
+ const heuristics = GAP_HEURISTICS[section.name] || [
518
+ 'additional artifacts for MECE coverage',
519
+ ];
520
+ const count = artifacts.length;
521
+ const gaps = [];
522
+ if (count < 3) {
523
+ gaps.push(
524
+ `Thin coverage: only ${count} artifact${count === 1 ? '' : 's'} filed (minimum 3 recommended)`
525
+ );
526
+ }
527
+ for (const h of heuristics.slice(0, 3)) {
528
+ gaps.push(`Missing: ${h}`);
529
+ }
530
+ return gaps;
531
+ }
532
+
533
+ function findRelatedSections(currentSection, room) {
534
+ // Siblings are top-level sections (or sections inside the same sub-room)
535
+ const sameScope = currentSection.isSubRoom
536
+ ? room.subRooms
537
+ .find((sr) => sr.name === currentSection.subRoomName)
538
+ ?.sections || []
539
+ : room.sections;
540
+ return sameScope
541
+ .filter((s) => s.name !== currentSection.name)
542
+ .map((s) => s.name)
543
+ .sort();
544
+ }
545
+
546
+ // ---------- Rendering ----------
547
+
548
+ function renderSectionMinto(section, artifacts, room, preserved) {
549
+ const title = slugToTitle(section.name);
550
+ const date = today();
551
+ const parentRel = path
552
+ .relative(section.dir, path.join(section.parentRoomDir, 'STATE.md'))
553
+ .split(path.sep)
554
+ .join('/');
555
+ const governingThought = deriveGoverningThought(section, artifacts);
556
+ const claims = deriveClaims(artifacts, section.dir);
557
+ const meceTree = deriveMeceTree(section, artifacts, section.dir);
558
+ const gaps = deriveGaps(section, artifacts);
559
+ const siblings = findRelatedSections(section, room);
560
+
561
+ const sourcesArr = artifacts.map((f) =>
562
+ path.relative(section.dir, f.path).split(path.sep).join('/')
563
+ );
564
+ const relatedArr = siblings.map((s) => `../${s}/MINTO.md`);
565
+
566
+ const claimSections = [];
567
+ claims.forEach((c, i) => {
568
+ claimSections.push(`### Claim ${i + 1}: ${c.title}`);
569
+ claimSections.push('');
570
+ claimSections.push('> [!example] Evidence');
571
+ claimSections.push(`> Source: [[${c.rel}|${c.display}]]`);
572
+ claimSections.push(`> -- ${c.summary}`);
573
+ claimSections.push('');
574
+ });
575
+
576
+ const gapLines = gaps.map((g) => `> - ${g}`);
577
+ const crossRefLines =
578
+ siblings.length === 0
579
+ ? ['- *(no sibling sections to cross-reference)*']
580
+ : siblings.map((s) => `- [[../${s}/MINTO.md|${s} reasoning]]`);
581
+
582
+ const sourceArtifactLines = artifacts.map((f) => {
583
+ const base = path.basename(f.path, '.md');
584
+ const rel = path.relative(section.dir, f.path).split(path.sep).join('/');
585
+ return `- [[${rel}|${slugToTitle(base)}]]`;
586
+ });
587
+
588
+ // Phase 88-00: five v88 frontmatter fields appended after existing
589
+ // structural keys, before the closing `---`. Preserved values come from
590
+ // the previous file (if any); last_generated_at is always fresh.
591
+ const v88Lines = renderV88FrontmatterLines(
592
+ preserved || {
593
+ last_artifact_write_seen_at: null,
594
+ reasoning_health_score: null,
595
+ flagged_weaknesses: [],
596
+ decision_log: [],
597
+ }
598
+ );
599
+
600
+ // Phase 88-04-B: invariants validator (88-00-B) requires schema_version
601
+ // and governing_thought as top-level frontmatter keys. Tier-0 reuses the
602
+ // derived placeholder governingThought so the contract is satisfied even
603
+ // without an LLM-produced narrative.
604
+ const gtTier0Escaped = String(governingThought).replace(/"/g, '\\"');
605
+ return [
606
+ '---',
607
+ 'schema_version: "' + FEYNMAN_MINTO_SCHEMA_VERSION + '"',
608
+ 'type: section-minto',
609
+ `section: ${section.name}`,
610
+ `created: ${date}`,
611
+ `room: ${room.roomName}`,
612
+ 'parent-moc: ROOM.md',
613
+ 'methodology: minto-pyramid',
614
+ `sources: [${sourcesArr.join(', ')}]`,
615
+ `related: [${relatedArr.join(', ')}]`,
616
+ 'status: active',
617
+ 'governing_thought: "' + gtTier0Escaped + '"',
618
+ ...v88Lines,
619
+ '---',
620
+ '',
621
+ `# ${title} -- Minto Reasoning`,
622
+ '',
623
+ '> [!abstract] Governing Thought',
624
+ `> ${governingThought}`,
625
+ '> *(Auto-generated placeholder -- refine after first read.)*',
626
+ '',
627
+ '## Argument Structure',
628
+ '',
629
+ '> [!info] Pyramid Logic',
630
+ `> This section's artifacts collectively argue: ${governingThought}`,
631
+ `> Supported by ${claims.length} key claim${claims.length === 1 ? '' : 's'} drawn from the artifacts below.`,
632
+ '',
633
+ '## Key Claims',
634
+ '',
635
+ ...claimSections,
636
+ '## MECE Issue Tree',
637
+ '',
638
+ meceTree,
639
+ '',
640
+ '## Evidence Gaps',
641
+ '',
642
+ '> [!warning] Missing Evidence',
643
+ ...gapLines,
644
+ '',
645
+ '## Cross-References',
646
+ '',
647
+ ...crossRefLines,
648
+ '',
649
+ '## Source Artifacts',
650
+ '',
651
+ ...sourceArtifactLines,
652
+ '',
653
+ '## Navigation',
654
+ '',
655
+ `- Section identity: [[ROOM.md|${section.name} ROOM]]`,
656
+ `- Section status: [[STATE.md|${section.name} STATE]]`,
657
+ `- Parent room: [[${parentRel}|${room.roomName}]]`,
658
+ '',
659
+ '---',
660
+ `*Filed by MindrianOS -- Section MINTO -- ${date} -- ${room.roomName}/${section.name}*`,
661
+ '',
662
+ ].join('\n');
663
+ }
664
+
665
+ // ---------- Phase 81-01: plan/write subcommand support ----------
666
+
667
+ const { validateNarrative } = require('../lib/memory/narrative-schema.cjs');
668
+ const {
669
+ compressToAaak,
670
+ attachAaakFooter,
671
+ } = require('../lib/memory/aaak-compress.cjs');
672
+
673
+ // Phase 88-04-B: atomic write contract -- invariants validator and write-lock.
674
+ // Required so broken narratives / torn reads cannot contaminate cross-session
675
+ // memory. The validator lives in lib/core/ and is the single source of truth
676
+ // for "properly managed" per 88-00-B. acquireLock / releaseLock reuse the
677
+ // Phase 87-02 openSync('wx') primitive so concurrent producers (post-write +
678
+ // debouncer + on-stop drain) cannot corrupt the rename race.
679
+ const feynmanMintoInvariants = require('../lib/core/feynman-minto-invariants.cjs');
680
+ const { acquireLock, releaseLock } = require('../lib/core/write-lock.cjs');
681
+
682
+ // Phase 90-02: post-regen hook for the brain-derivation queue. After a
683
+ // successful MINTO.md write, compare prior governing_thought sha256 against
684
+ // the new value's sha256. If they differ, enqueue brain-derivation so the
685
+ // next UserPromptSubmit drains and refreshes BRAIN.md asynchronously.
686
+ //
687
+ // Canon Part 8: the queue carries ONLY the section slug + sha256 hash pair
688
+ // + ISO timestamp + reason. The governing_thought TEXT never appears in
689
+ // the queue. Queue module is required lazily so the generator stays usable
690
+ // in test environments where the queue module may not be on the path.
691
+ const crypto = require('node:crypto');
692
+
693
+ function brainDerivationQueueModule() {
694
+ try {
695
+ return require('../lib/core/brain-derivation-queue.cjs');
696
+ } catch (_e) {
697
+ return null;
698
+ }
699
+ }
700
+
701
+ // Extract governing_thought from a MINTO.md raw body. Mirrors the parser
702
+ // used by parseMintoMd (lib/core/folder-memory-shared.cjs). Frontmatter
703
+ // scalar OR first body line under "## Governing Thought" heading.
704
+ function extractGoverningThought(raw) {
705
+ if (typeof raw !== 'string' || raw.length === 0) return '';
706
+ const fmMatch = raw.match(/^---\r?\n([\s\S]*?)\r?\n---/);
707
+ if (fmMatch) {
708
+ const fm = fmMatch[1];
709
+ const m = fm.match(/^governing_thought:\s*(.+)$/m);
710
+ if (m) {
711
+ let v = m[1].trim();
712
+ if ((v.startsWith('"') && v.endsWith('"')) ||
713
+ (v.startsWith("'") && v.endsWith("'"))) {
714
+ v = v.slice(1, -1);
715
+ }
716
+ // Unescape standard YAML double-quote escapes.
717
+ v = v.replace(/\\"/g, '"');
718
+ return v;
719
+ }
720
+ }
721
+ // Body fallback: first non-empty paragraph after the "## Governing Thought" heading.
722
+ const bodyIdx = raw.indexOf('## Governing Thought');
723
+ if (bodyIdx !== -1) {
724
+ const slice = raw.slice(bodyIdx).split(/\r?\n/);
725
+ for (let i = 1; i < slice.length; i++) {
726
+ const t = slice[i].trim();
727
+ if (!t) continue;
728
+ if (t.startsWith('#')) break;
729
+ if (t.startsWith('>')) {
730
+ return t.replace(/^>+\s*/, '').trim();
731
+ }
732
+ return t;
733
+ }
734
+ }
735
+ return '';
736
+ }
737
+
738
+ function sha256GoverningThought(text) {
739
+ return 'sha256:' + crypto.createHash('sha256')
740
+ .update(String(text == null ? '' : text).normalize('NFC'))
741
+ .digest('hex');
742
+ }
743
+
744
+ // Read the prior MINTO.md (if present) and return its governing_thought
745
+ // sha256, or null when no prior file exists. Called BEFORE the new write
746
+ // lands so the post-write enqueue hook can detect a change.
747
+ function readPriorGoverningThoughtHash(targetPath) {
748
+ let raw;
749
+ try {
750
+ raw = fs.readFileSync(targetPath, 'utf-8');
751
+ } catch (_e) {
752
+ return null;
753
+ }
754
+ const gt = extractGoverningThought(raw);
755
+ if (!gt) return null;
756
+ return sha256GoverningThought(gt);
757
+ }
758
+
759
+ // Post-regen hook: after MINTO.md is successfully written, compare hashes
760
+ // and enqueue brain-derivation when they differ. Soft-fail on any error
761
+ // so the generator's primary contract is never broken by a queue failure.
762
+ function tryEnqueueBrainDerivation(roomDir, mintoPath, newContent, priorHash) {
763
+ try {
764
+ const Q = brainDerivationQueueModule();
765
+ if (!Q) return;
766
+ const sectionDir = path.dirname(mintoPath);
767
+ const sectionSlug = path.basename(sectionDir);
768
+ // Sanity: only enqueue when section name is a valid slug (skips
769
+ // top-level room-root MINTO.md cases where the dirname is the room).
770
+ const slugSafe = /^[a-z0-9][a-z0-9_-]{0,63}$/.test(sectionSlug);
771
+ if (!slugSafe) return;
772
+ const newGt = extractGoverningThought(newContent);
773
+ const newHash = sha256GoverningThought(newGt);
774
+ if (priorHash !== null && priorHash === newHash) return; // no change
775
+ Q.enqueue(roomDir, sectionSlug, priorHash, newHash, 'governing_thought_changed');
776
+ } catch (_e) {
777
+ // Soft-fail: queue enqueue must never disrupt MINTO write.
778
+ }
779
+ }
780
+
781
+ // Phase 88-04-B: schema_version constant emitted into every MINTO.md
782
+ // frontmatter. Required by the invariants validator (88-00-B) so the
783
+ // atomic write gate accepts generator output.
784
+ const FEYNMAN_MINTO_SCHEMA_VERSION = '1.0';
785
+
786
+ // ---------- Phase 81-03: tier-0 single entry point ----------
787
+
788
+ /**
789
+ * Run the tier-0 deterministic path: pre-81 renderSectionMinto content
790
+ * plus an AAAK compressed footer. This is the single entry point for all
791
+ * three tier-0 branches:
792
+ *
793
+ * 1. --write without --narrative (intentional tier-0)
794
+ * 2. --write --narrative <path> where the file fails to parse
795
+ * 3. --write --narrative <path> where the schema is invalid
796
+ *
797
+ * @param {object} args
798
+ * @param {string} args.roomDir - absolute path to room directory
799
+ * @param {string} args.sectionName - section slug
800
+ * @param {boolean} [args.dryRun=false]
801
+ * @returns {{tier: string, path: string, size: number, warnings: string[]}}
802
+ */
803
+ function runTier0(args) {
804
+ const roomDir = args.roomDir;
805
+ const sectionName = args.sectionName;
806
+ const dryRun = !!args.dryRun;
807
+
808
+ const resolved = resolveSection(roomDir, sectionName);
809
+ const target = path.join(resolved.section.dir, 'MINTO.md');
810
+ // Phase 88-00: read-before-write so v88 fields preserve across regen.
811
+ const preserved = readPreservedV88Fields(target);
812
+ // Pre-81 structural generation, preserved byte-equivalent.
813
+ const structuralBody = renderSectionMinto(
814
+ resolved.section,
815
+ resolved.artifacts,
816
+ resolved.room,
817
+ preserved
818
+ );
819
+ // Deterministic AAAK compression of the structural body.
820
+ const aaak = compressToAaak(structuralBody, {
821
+ section: resolved.section.name,
822
+ room: resolved.room.roomName,
823
+ });
824
+ const content = attachAaakFooter(structuralBody, aaak);
825
+
826
+ if (dryRun) {
827
+ process.stdout.write(
828
+ 'would write tier-0 MINTO.md: ' + target + ' (' + content.length + ' bytes)\n'
829
+ );
830
+ return {
831
+ tier: 'tier-0',
832
+ path: target,
833
+ size: content.length,
834
+ warnings: [],
835
+ envelope: {
836
+ success: true,
837
+ violations: [],
838
+ bytes_written: content.length,
839
+ elapsed_ms: 0,
840
+ path: target,
841
+ },
842
+ };
843
+ }
844
+ // Phase 88-04-B: atomic write + invariants gate + write-lock rename race.
845
+ const env = atomicWriteMinto(target, content, roomDir);
846
+ if (env.success) {
847
+ process.stdout.write('wrote tier-0 MINTO.md: ' + target + '\n');
848
+ } else {
849
+ process.stderr.write(
850
+ 'tier-0 write REJECTED by invariants gate for ' +
851
+ target +
852
+ ': ' +
853
+ JSON.stringify(env.violations) +
854
+ '\n'
855
+ );
856
+ }
857
+ return {
858
+ tier: 'tier-0',
859
+ path: target,
860
+ size: env.success ? content.length : 0,
861
+ warnings: env.violations,
862
+ envelope: env,
863
+ };
864
+ }
865
+
866
+ function resolveSection(roomDir, sectionName) {
867
+ const room = scanRoom(roomDir);
868
+ const sections = walkAllSections(room);
869
+ const section = sections.find(function (s) {
870
+ return s.name === sectionName;
871
+ });
872
+ if (!section) {
873
+ throw new Error(
874
+ 'section not found in room: ' +
875
+ sectionName +
876
+ ' (available: ' +
877
+ sections.map(function (s) { return s.name; }).join(', ') +
878
+ ')'
879
+ );
880
+ }
881
+ const artifacts = collectSectionArtifacts(section.dir, room.contentFiles);
882
+ return { room: room, section: section, artifacts: artifacts };
883
+ }
884
+
885
+ function buildStructuralPayload(room, section, artifacts) {
886
+ // Reuse the existing deterministic helpers so there is one source of
887
+ // truth for the structural content. Nothing here calls the LLM.
888
+ const governingPlaceholder = deriveGoverningThought(section, artifacts);
889
+ const meceTree = deriveMeceTree(section, artifacts, section.dir);
890
+ const gaps = deriveGaps(section, artifacts);
891
+ const siblings = findRelatedSections(section, room);
892
+ const sources = artifacts.map(function (f) {
893
+ return path.relative(section.dir, f.path).split(path.sep).join('/');
894
+ });
895
+ const parentRel = path
896
+ .relative(section.dir, path.join(section.parentRoomDir, 'STATE.md'))
897
+ .split(path.sep)
898
+ .join('/');
899
+
900
+ return {
901
+ frontmatter: {
902
+ type: 'section-minto',
903
+ section: section.name,
904
+ created: today(),
905
+ room: room.roomName,
906
+ 'parent-moc': 'ROOM.md',
907
+ methodology: 'feynman-minto',
908
+ sources: sources,
909
+ related: siblings.map(function (s) { return '../' + s + '/MINTO.md'; }),
910
+ status: 'active',
911
+ },
912
+ mece_tree: meceTree,
913
+ cross_refs: siblings,
914
+ sources: sources,
915
+ navigation: {
916
+ parent_room: parentRel,
917
+ room_name: room.roomName,
918
+ section_name: section.name,
919
+ },
920
+ gaps: gaps,
921
+ governing_thought_placeholder: governingPlaceholder,
922
+ };
923
+ }
924
+
925
+ function buildArtifactPayload(section, artifacts) {
926
+ return artifacts.map(function (f) {
927
+ const base = path.basename(f.path, '.md');
928
+ const title = slugToTitle(base);
929
+ const rel = path.relative(section.dir, f.path).split(path.sep).join('/');
930
+ return {
931
+ path: rel,
932
+ title: title,
933
+ excerpt: firstBodyLine(f.path),
934
+ };
935
+ });
936
+ }
937
+
938
+ function emitSectionPlanPayload(roomDir, sectionName) {
939
+ const resolved = resolveSection(roomDir, sectionName);
940
+ const structural = buildStructuralPayload(
941
+ resolved.room,
942
+ resolved.section,
943
+ resolved.artifacts
944
+ );
945
+ const artifactList = buildArtifactPayload(
946
+ resolved.section,
947
+ resolved.artifacts
948
+ );
949
+ const targetMinto = path
950
+ .relative(
951
+ resolved.room.roomDir,
952
+ path.join(resolved.section.dir, 'MINTO.md')
953
+ )
954
+ .split(path.sep)
955
+ .join('/');
956
+ const payload = {
957
+ section_path: path
958
+ .relative(resolved.room.roomDir, resolved.section.dir)
959
+ .split(path.sep)
960
+ .join('/'),
961
+ section_name: resolved.section.name,
962
+ artifacts: artifactList,
963
+ target_minto_path: targetMinto,
964
+ structural: structural,
965
+ };
966
+ return payload;
967
+ }
968
+
969
+ function renderFeynmanMinto(structural, narrative, room, section, artifacts, preserved) {
970
+ const title = slugToTitle(section.name);
971
+ const date = structural.frontmatter.created;
972
+ const mm = narrative.mental_model;
973
+
974
+ // Phase 88-00: five v88 frontmatter fields appended after existing
975
+ // structural keys, before the closing `---`. Preserved values come from
976
+ // the previous file (if any); last_generated_at is always fresh.
977
+ const v88Lines = renderV88FrontmatterLines(
978
+ preserved || {
979
+ last_artifact_write_seen_at: null,
980
+ reasoning_health_score: null,
981
+ flagged_weaknesses: [],
982
+ decision_log: [],
983
+ }
984
+ );
985
+
986
+ // Frontmatter (YAML-ish, consistent with pre-81 style). Phase 88-04-B
987
+ // adds schema_version and governing_thought as top-level keys so the
988
+ // invariants validator (88-00-B) accepts the tier-1 output. The
989
+ // governing_thought comes straight from the Feynman narrative JSON.
990
+ const fm = structural.frontmatter;
991
+ const gtTier1Escaped = String(narrative.governing_thought || '').replace(/"/g, '\\"');
992
+ const fmLines = [
993
+ '---',
994
+ 'schema_version: "' + FEYNMAN_MINTO_SCHEMA_VERSION + '"',
995
+ 'type: ' + fm.type,
996
+ 'section: ' + fm.section,
997
+ 'created: ' + fm.created,
998
+ 'room: ' + fm.room,
999
+ 'parent-moc: ' + fm['parent-moc'],
1000
+ 'methodology: ' + fm.methodology,
1001
+ 'sources: [' + fm.sources.join(', ') + ']',
1002
+ 'related: [' + fm.related.join(', ') + ']',
1003
+ 'status: ' + fm.status,
1004
+ 'governing_thought: "' + gtTier1Escaped + '"',
1005
+ ...v88Lines,
1006
+ '---',
1007
+ ];
1008
+
1009
+ const keyClaimLines = [];
1010
+ narrative.key_claims.forEach(function (claim, i) {
1011
+ keyClaimLines.push('### Claim ' + (i + 1));
1012
+ keyClaimLines.push('');
1013
+ keyClaimLines.push('> [!example] Claim');
1014
+ keyClaimLines.push('> ' + claim);
1015
+ keyClaimLines.push('');
1016
+ });
1017
+
1018
+ const crossRefLines =
1019
+ structural.cross_refs.length === 0
1020
+ ? ['- *(no sibling sections to cross-reference)*']
1021
+ : structural.cross_refs.map(function (s) {
1022
+ return '- [[../' + s + '/MINTO.md|' + s + ' reasoning]]';
1023
+ });
1024
+
1025
+ const sourceArtifactLines = artifacts.map(function (f) {
1026
+ const base = path.basename(f.path, '.md');
1027
+ const rel = path.relative(section.dir, f.path).split(path.sep).join('/');
1028
+ return '- [[' + rel + '|' + slugToTitle(base) + ']]';
1029
+ });
1030
+
1031
+ const gapLines = structural.gaps.map(function (g) { return '> - ' + g; });
1032
+
1033
+ return [].concat(
1034
+ fmLines,
1035
+ [
1036
+ '',
1037
+ '# ' + title + ' -- Feynman-MINTO Reasoning',
1038
+ '',
1039
+ '> [!abstract] Governing Thought',
1040
+ '> ' + narrative.governing_thought,
1041
+ '',
1042
+ '## Essence',
1043
+ '',
1044
+ '> [!quote] Irreducible Truth',
1045
+ '> ' + narrative.essence,
1046
+ '',
1047
+ '## Plain Language',
1048
+ '',
1049
+ narrative.plain_language,
1050
+ '',
1051
+ '## Mental Model',
1052
+ '',
1053
+ '> [!tip] Analogy',
1054
+ '> ' + mm.analogy,
1055
+ '',
1056
+ '**Mapping:** ' + mm.mapping,
1057
+ '',
1058
+ '**Where it breaks:** ' + mm.limits,
1059
+ '',
1060
+ '## Sweet Spot',
1061
+ '',
1062
+ narrative.sweet_spot,
1063
+ '',
1064
+ '## Key Claims',
1065
+ '',
1066
+ ],
1067
+ keyClaimLines,
1068
+ [
1069
+ '## MECE Issue Tree',
1070
+ '',
1071
+ structural.mece_tree,
1072
+ '',
1073
+ '## Evidence Gaps',
1074
+ '',
1075
+ '> [!warning] Missing Evidence',
1076
+ ],
1077
+ gapLines,
1078
+ [
1079
+ '',
1080
+ '## Cross-References',
1081
+ '',
1082
+ ],
1083
+ crossRefLines,
1084
+ [
1085
+ '',
1086
+ '## Source Artifacts',
1087
+ '',
1088
+ ],
1089
+ sourceArtifactLines,
1090
+ [
1091
+ '',
1092
+ '## Navigation',
1093
+ '',
1094
+ '- Section identity: [[ROOM.md|' + section.name + ' ROOM]]',
1095
+ '- Section status: [[STATE.md|' + section.name + ' STATE]]',
1096
+ '- Parent room: [[' +
1097
+ structural.navigation.parent_room +
1098
+ '|' +
1099
+ room.roomName +
1100
+ ']]',
1101
+ '',
1102
+ '---',
1103
+ '*Filed by MindrianOS -- Feynman-MINTO -- ' +
1104
+ date +
1105
+ ' -- ' +
1106
+ room.roomName +
1107
+ '/' +
1108
+ section.name +
1109
+ '*',
1110
+ '',
1111
+ ]
1112
+ ).join('\n');
1113
+ }
1114
+
1115
+ // ---------- Phase 88-04-B: atomic write contract ----------
1116
+ //
1117
+ // Every MINTO.md publish goes through atomicWriteMinto(). Sequence:
1118
+ // 1. openSync(tmp, 'wx') -- exclusive create, EEXIST cleanup
1119
+ // 2. writeSync + fsyncSync -- crash-safe durability
1120
+ // 3. closeSync -- release fd
1121
+ // 4. invariants.validate(tmp) -- gate BEFORE rename so a broken
1122
+ // narrative cannot overwrite a valid
1123
+ // previous MINTO.md
1124
+ // 5. acquireLock(roomDir) -- Phase 87-02 primitive; serializes
1125
+ // concurrent renames across producers
1126
+ // 6. renameSync(tmp, target) -- atomic publish
1127
+ // 7. releaseLock(roomDir)
1128
+ //
1129
+ // Tmp naming convention: <target>.tmp.<pid>.minto
1130
+ // Phase 88-13 guardian sweeps stale orphans matching this pattern at
1131
+ // session-start (mid-write SIGKILL leaves orphans; guardian cleans them).
1132
+ //
1133
+ // Test hooks (all gated behind MOS_TEST=1 so production is unaffected):
1134
+ // MOS_TRACE_FS=1 -- stderr logs "TRACE_FS fsyncSync"
1135
+ // and "TRACE_FS renameSync" lines so
1136
+ // Test 7 can assert ordering.
1137
+ // MOS_TEST_ABORT_AFTER_FSYNC=1 -- exit(42) AFTER fsync but BEFORE
1138
+ // rename, leaving an orphan tmp and
1139
+ // preserving the previous MINTO.md.
1140
+ // Proves Test 3 crash-safety.
1141
+
1142
+ // Mock severity parsing is CLI-level (parsed from argv in the entry block).
1143
+ // Default is null meaning "use the real validator".
1144
+ let MOCK_INVARIANTS_FAIL = null;
1145
+
1146
+ function traceFs(name) {
1147
+ if (process.env.MOS_TRACE_FS === '1') {
1148
+ process.stderr.write('TRACE_FS ' + name + '\n');
1149
+ }
1150
+ }
1151
+
1152
+ // Synthetic violations injected when MOS_TEST=1 and --mock-invariants-fail is
1153
+ // set. Lets Test 4 (ERROR rejection) and Test 5 (WARNING passthrough) verify
1154
+ // the gate behavior without engineering a 1500-token narrative.
1155
+ function buildMockViolations(severityName) {
1156
+ const SEV = feynmanMintoInvariants.SEVERITY;
1157
+ const CAT = feynmanMintoInvariants.CATEGORIES;
1158
+ if (severityName === 'error') {
1159
+ return [
1160
+ {
1161
+ category: CAT.SCHEMA,
1162
+ severity: SEV.ERROR,
1163
+ message: 'mock-invariants-fail=error injected for test',
1164
+ },
1165
+ ];
1166
+ }
1167
+ if (severityName === 'warning') {
1168
+ return [
1169
+ {
1170
+ category: CAT.COHERENCE,
1171
+ severity: SEV.WARNING,
1172
+ message: 'mock-invariants-fail=warning injected for test',
1173
+ },
1174
+ ];
1175
+ }
1176
+ if (severityName === 'critical') {
1177
+ return [
1178
+ {
1179
+ category: CAT.ATOMICITY,
1180
+ severity: SEV.CRITICAL,
1181
+ message: 'mock-invariants-fail=critical injected for test',
1182
+ },
1183
+ ];
1184
+ }
1185
+ return [];
1186
+ }
1187
+
1188
+ function atomicWriteMinto(mintoPath, content, roomDir) {
1189
+ const start = Date.now();
1190
+ const tmpPath = mintoPath + '.tmp.' + process.pid + '.minto';
1191
+ const SEV = feynmanMintoInvariants.SEVERITY;
1192
+
1193
+ // Phase 90-02: capture prior governing_thought hash BEFORE the write so
1194
+ // the post-rename enqueue can detect a real change. Soft-fail on read
1195
+ // failure (no prior file -> priorHash stays null -> first regen always
1196
+ // enqueues, which is the correct cold-start behavior).
1197
+ const priorGoverningThoughtHash = readPriorGoverningThoughtHash(mintoPath);
1198
+
1199
+ let fd;
1200
+ try {
1201
+ fd = fs.openSync(tmpPath, 'wx');
1202
+ } catch (e) {
1203
+ if (e.code === 'EEXIST') {
1204
+ // Stale tmp from a prior crash with the same pid slot. Clear and
1205
+ // retry once; Phase 88-13 guardian is the long-term sweeper.
1206
+ try { fs.unlinkSync(tmpPath); } catch (_) {}
1207
+ fd = fs.openSync(tmpPath, 'wx');
1208
+ } else {
1209
+ throw e;
1210
+ }
1211
+ }
1212
+
1213
+ try {
1214
+ fs.writeSync(fd, content);
1215
+ traceFs('fsyncSync');
1216
+ fs.fsyncSync(fd);
1217
+ } finally {
1218
+ try { fs.closeSync(fd); } catch (_) {}
1219
+ }
1220
+
1221
+ // Test hook: simulate mid-write crash. Exit before rename so the previous
1222
+ // MINTO.md stays intact and an orphan tmp is left for guardian cleanup.
1223
+ if (
1224
+ process.env.MOS_TEST === '1' &&
1225
+ process.env.MOS_TEST_ABORT_AFTER_FSYNC === '1'
1226
+ ) {
1227
+ process.stderr.write(
1228
+ 'TEST_HOOK abort-after-fsync: exiting before rename (tmp=' + tmpPath + ')\n'
1229
+ );
1230
+ process.exit(42);
1231
+ }
1232
+
1233
+ // --- Invariants gate ---
1234
+ let validation;
1235
+ if (
1236
+ process.env.MOS_TEST === '1' &&
1237
+ MOCK_INVARIANTS_FAIL !== null
1238
+ ) {
1239
+ const mockViolations = buildMockViolations(MOCK_INVARIANTS_FAIL);
1240
+ // Derive severity from the highest-severity synthetic violation.
1241
+ const order = [SEV.INFO, SEV.WARNING, SEV.ERROR, SEV.CRITICAL];
1242
+ let maxIdx = -1;
1243
+ for (const v of mockViolations) {
1244
+ const idx = order.indexOf(v.severity);
1245
+ if (idx > maxIdx) maxIdx = idx;
1246
+ }
1247
+ validation = {
1248
+ valid: mockViolations.length === 0,
1249
+ violations: mockViolations,
1250
+ severity: maxIdx === -1 ? null : order[maxIdx],
1251
+ };
1252
+ } else {
1253
+ validation = feynmanMintoInvariants.validate(tmpPath);
1254
+ }
1255
+
1256
+ const blocking = validation.violations.filter(function (v) {
1257
+ return v.severity === SEV.CRITICAL || v.severity === SEV.ERROR;
1258
+ });
1259
+ if (blocking.length > 0) {
1260
+ // Broken output -- do NOT overwrite the previous MINTO.md. Clean up.
1261
+ try { fs.unlinkSync(tmpPath); } catch (_) {}
1262
+ return {
1263
+ success: false,
1264
+ violations: validation.violations,
1265
+ bytes_written: 0,
1266
+ elapsed_ms: Date.now() - start,
1267
+ path: mintoPath,
1268
+ };
1269
+ }
1270
+
1271
+ // --- Atomic publish under lock ---
1272
+ // Concurrent producers race on the lock; the primitive throws when
1273
+ // another live PID owns it. Retry with backoff so bursty post-write +
1274
+ // debouncer + on-stop drains do not need coordination above this layer.
1275
+ // A final lock-failure still unlinks the tmp to avoid orphan leaks.
1276
+ let locked = false;
1277
+ let lockErr = null;
1278
+ const LOCK_RETRIES = 12;
1279
+ const LOCK_BASE_MS = 25;
1280
+ const LOCK_CAP_MS = 1600;
1281
+ for (let attempt = 0; attempt < LOCK_RETRIES; attempt++) {
1282
+ try {
1283
+ acquireLock(roomDir);
1284
+ locked = true;
1285
+ lockErr = null;
1286
+ break;
1287
+ } catch (e) {
1288
+ lockErr = e;
1289
+ // Exponential backoff with half-jitter; synchronous so we do not
1290
+ // need event-loop integration in hook scripts.
1291
+ const backoff = Math.min(LOCK_CAP_MS, LOCK_BASE_MS * Math.pow(2, attempt));
1292
+ const sleep = Math.floor(backoff / 2 + Math.random() * (backoff / 2));
1293
+ const end = Date.now() + sleep;
1294
+ while (Date.now() < end) { /* busy-wait per 88-02 sync primitive */ }
1295
+ }
1296
+ }
1297
+ if (!locked) {
1298
+ // Lock acquisition exhausted retries. Unlink tmp so disk stays clean;
1299
+ // surface as blocking violation so the caller does not assume success.
1300
+ try { fs.unlinkSync(tmpPath); } catch (_) {}
1301
+ return {
1302
+ success: false,
1303
+ violations: validation.violations.concat([{
1304
+ category: feynmanMintoInvariants.CATEGORIES.ATOMICITY,
1305
+ severity: SEV.ERROR,
1306
+ message: 'write-lock acquire failed after ' + LOCK_RETRIES + ' retries: ' +
1307
+ (lockErr && lockErr.message || lockErr),
1308
+ }]),
1309
+ bytes_written: 0,
1310
+ elapsed_ms: Date.now() - start,
1311
+ path: mintoPath,
1312
+ };
1313
+ }
1314
+
1315
+ try {
1316
+ traceFs('renameSync');
1317
+ fs.renameSync(tmpPath, mintoPath);
1318
+ } finally {
1319
+ if (locked) {
1320
+ try { releaseLock(roomDir); } catch (_) {}
1321
+ }
1322
+ }
1323
+
1324
+ // Phase 90-02: post-regen hook into the brain-derivation queue. Compares
1325
+ // governing_thought sha256 against the prior file's hash captured before
1326
+ // the write. Soft-fails internally so a queue error never breaks the
1327
+ // primary MINTO contract.
1328
+ tryEnqueueBrainDerivation(roomDir, mintoPath, content, priorGoverningThoughtHash);
1329
+
1330
+ return {
1331
+ success: true,
1332
+ violations: validation.violations,
1333
+ bytes_written: content.length,
1334
+ elapsed_ms: Date.now() - start,
1335
+ path: mintoPath,
1336
+ };
1337
+ }
1338
+
1339
+ function writeSectionFromNarrative(roomDir, sectionName, narrativePath, opts) {
1340
+ const options = opts || {};
1341
+
1342
+ // Phase 81-03: soft validation with fallthrough to runTier0.
1343
+ // Malformed file, unparseable JSON, or invalid schema all route to
1344
+ // tier-0 with a warning printed to stderr.
1345
+ let raw;
1346
+ try {
1347
+ raw = fs.readFileSync(narrativePath, 'utf-8');
1348
+ } catch (e) {
1349
+ process.stderr.write(
1350
+ 'WARN tier-0 path: narrative file read failed: ' +
1351
+ narrativePath +
1352
+ ': ' +
1353
+ e.message +
1354
+ '\n'
1355
+ );
1356
+ return runTier0({
1357
+ roomDir: roomDir,
1358
+ sectionName: sectionName,
1359
+ dryRun: options.dryRun,
1360
+ });
1361
+ }
1362
+
1363
+ let narrative;
1364
+ try {
1365
+ narrative = JSON.parse(raw);
1366
+ } catch (e) {
1367
+ process.stderr.write(
1368
+ 'WARN tier-0 path: narrative JSON parse failed: ' +
1369
+ narrativePath +
1370
+ ': ' +
1371
+ e.message +
1372
+ ', falling back to tier-0\n'
1373
+ );
1374
+ return runTier0({
1375
+ roomDir: roomDir,
1376
+ sectionName: sectionName,
1377
+ dryRun: options.dryRun,
1378
+ });
1379
+ }
1380
+
1381
+ const v = validateNarrative(narrative);
1382
+ if (!v.valid) {
1383
+ process.stderr.write(
1384
+ 'WARN tier-0 path: narrative-json failed schema validation: ' +
1385
+ narrativePath +
1386
+ ': ' +
1387
+ v.errors.join('; ') +
1388
+ ', falling back to tier-0\n'
1389
+ );
1390
+ return runTier0({
1391
+ roomDir: roomDir,
1392
+ sectionName: sectionName,
1393
+ dryRun: options.dryRun,
1394
+ });
1395
+ }
1396
+
1397
+ const resolved = resolveSection(roomDir, sectionName);
1398
+ const target = path.join(resolved.section.dir, 'MINTO.md');
1399
+ // Phase 88-00: read-before-write so v88 fields preserve across regen.
1400
+ const preserved = readPreservedV88Fields(target);
1401
+ const structural = buildStructuralPayload(
1402
+ resolved.room,
1403
+ resolved.section,
1404
+ resolved.artifacts
1405
+ );
1406
+ const content = renderFeynmanMinto(
1407
+ structural,
1408
+ narrative,
1409
+ resolved.room,
1410
+ resolved.section,
1411
+ resolved.artifacts,
1412
+ preserved
1413
+ );
1414
+
1415
+ if (options.dryRun) {
1416
+ process.stdout.write(
1417
+ 'would write MINTO.md: ' + target + ' (' + content.length + ' bytes)\n'
1418
+ );
1419
+ return {
1420
+ tier: 'tier-1',
1421
+ path: target,
1422
+ content: content,
1423
+ outcome: 'planned',
1424
+ envelope: {
1425
+ success: true,
1426
+ violations: [],
1427
+ bytes_written: content.length,
1428
+ elapsed_ms: 0,
1429
+ path: target,
1430
+ },
1431
+ };
1432
+ }
1433
+ // Phase 88-04-B: atomic write + invariants gate. A rejection keeps the
1434
+ // previous MINTO.md intact; caller inspects envelope.success.
1435
+ const env = atomicWriteMinto(target, content, roomDir);
1436
+ if (env.success) {
1437
+ process.stdout.write('wrote MINTO.md: ' + target + '\n');
1438
+ } else {
1439
+ process.stderr.write(
1440
+ 'tier-1 write REJECTED by invariants gate for ' +
1441
+ target +
1442
+ ': ' +
1443
+ JSON.stringify(env.violations) +
1444
+ '\n'
1445
+ );
1446
+ }
1447
+ return {
1448
+ tier: 'tier-1',
1449
+ path: target,
1450
+ content: content,
1451
+ outcome: env.success ? 'written' : 'rejected',
1452
+ envelope: env,
1453
+ };
1454
+ }
1455
+
1456
+ // ---------- Idempotent write ----------
1457
+
1458
+ function writeOrPrint(targetPath, content, dryRun, roomDir) {
1459
+ let existing = null;
1460
+ try {
1461
+ existing = fs.readFileSync(targetPath, 'utf-8');
1462
+ } catch (_) {
1463
+ /* fresh */
1464
+ }
1465
+ if (existing === content) {
1466
+ if (dryRun) process.stdout.write(`skip (identical): ${targetPath}\n`);
1467
+ return 'skipped';
1468
+ }
1469
+ if (dryRun) {
1470
+ process.stdout.write(
1471
+ `would write MINTO.md: ${targetPath} (${content.length} bytes)\n`
1472
+ );
1473
+ return 'planned';
1474
+ }
1475
+ // Phase 88-04-B: route legacy bare-shell path through the same atomic
1476
+ // contract so batch regenerations cannot produce torn reads or let a
1477
+ // broken narrative overwrite a previous valid MINTO.md.
1478
+ if (roomDir) {
1479
+ const env = atomicWriteMinto(targetPath, content, roomDir);
1480
+ if (env.success) {
1481
+ process.stdout.write(`wrote MINTO.md: ${targetPath}\n`);
1482
+ return 'written';
1483
+ }
1484
+ process.stderr.write(
1485
+ 'bare-shell write REJECTED for ' +
1486
+ targetPath +
1487
+ ': ' +
1488
+ JSON.stringify(env.violations) +
1489
+ '\n'
1490
+ );
1491
+ return 'skipped';
1492
+ }
1493
+ // Legacy fallback (no roomDir known) -- preserve pre-88-04-B semantics.
1494
+ const tmp = targetPath + '.tmp';
1495
+ fs.writeFileSync(tmp, content);
1496
+ fs.renameSync(tmp, targetPath);
1497
+ process.stdout.write(`wrote MINTO.md: ${targetPath}\n`);
1498
+ return 'written';
1499
+ }
1500
+
1501
+ // ---------- Main ----------
1502
+
1503
+ function generateAllSectionMintos(roomDir, opts = {}) {
1504
+ const dryRun = !!opts.dryRun;
1505
+ const sectionFilter = opts.sectionFilter || null;
1506
+ const room = scanRoom(roomDir);
1507
+ const sections = walkAllSections(room);
1508
+ const results = {
1509
+ planned: 0,
1510
+ written: 0,
1511
+ skipped: 0,
1512
+ empty_skipped: 0,
1513
+ total: 0,
1514
+ };
1515
+
1516
+ for (const section of sections) {
1517
+ if (sectionFilter && section.name !== sectionFilter) continue;
1518
+ if (!fs.existsSync(section.dir)) continue;
1519
+ results.total += 1;
1520
+
1521
+ const artifacts = collectSectionArtifacts(section.dir, room.contentFiles);
1522
+
1523
+ // SECTION-07: skip empty sections (do not write MINTO.md)
1524
+ if (artifacts.length === 0) {
1525
+ results.empty_skipped += 1;
1526
+ process.stdout.write(`skip ${section.name}: empty (no artifacts)\n`);
1527
+ continue;
1528
+ }
1529
+
1530
+ const target = path.join(section.dir, 'MINTO.md');
1531
+ // Phase 88-00: read-before-write so v88 fields preserve across regen.
1532
+ const preserved = readPreservedV88Fields(target);
1533
+ const content = renderSectionMinto(section, artifacts, room, preserved);
1534
+ // Phase 88-04-B: pass the room directory so writeOrPrint can route
1535
+ // through the atomic write contract (openSync 'wx' + fsync +
1536
+ // invariants gate + acquireLock + rename).
1537
+ const outcome = writeOrPrint(target, content, dryRun, roomDir);
1538
+ results[outcome] = (results[outcome] || 0) + 1;
1539
+ }
1540
+
1541
+ process.stdout.write(
1542
+ `\nSection MINTO generator summary for ${room.roomName}: ` +
1543
+ `${results.total} sections walked -- ` +
1544
+ `written=${results.written || 0} planned=${results.planned || 0} ` +
1545
+ `skipped=${results.skipped || 0} empty_skipped=${results.empty_skipped}\n`
1546
+ );
1547
+
1548
+ return results;
1549
+ }
1550
+
1551
+ if (require.main === module) {
1552
+ if (!roomArg) {
1553
+ usage();
1554
+ process.exit(1);
1555
+ }
1556
+ const ROOM_DIR = path.resolve(roomArg);
1557
+ if (!fs.existsSync(ROOM_DIR)) {
1558
+ process.stderr.write('ERROR: room dir does not exist: ' + ROOM_DIR + '\n');
1559
+ process.exit(1);
1560
+ }
1561
+ try {
1562
+ if (PLAN_FLAG) {
1563
+ if (!SECTION_FILTER) {
1564
+ process.stderr.write('ERROR: --plan requires --section <name>\n');
1565
+ process.exit(1);
1566
+ }
1567
+ const payload = emitSectionPlanPayload(ROOM_DIR, SECTION_FILTER);
1568
+ process.stdout.write(JSON.stringify(payload, null, 2) + '\n');
1569
+ } else if (WRITE_FLAG) {
1570
+ if (!SECTION_FILTER) {
1571
+ process.stderr.write('ERROR: --write requires --section <name>\n');
1572
+ process.exit(1);
1573
+ }
1574
+ // Phase 88-04-B: propagate CLI mock flag to the atomic-write gate.
1575
+ // Gated by MOS_TEST=1 inside atomicWriteMinto; belt-and-suspenders
1576
+ // check here keeps production config changes visibly rejected.
1577
+ if (MOCK_INVARIANTS_FAIL_CLI && process.env.MOS_TEST !== '1') {
1578
+ process.stderr.write(
1579
+ 'ERROR: --mock-invariants-fail requires MOS_TEST=1 (test-only flag)\n'
1580
+ );
1581
+ process.exit(1);
1582
+ }
1583
+ MOCK_INVARIANTS_FAIL = MOCK_INVARIANTS_FAIL_CLI;
1584
+ let result;
1585
+ if (!NARRATIVE_PATH) {
1586
+ // Phase 81-03: no narrative means tier-0 path. Route through the
1587
+ // single runTier0 entry point which appends an AAAK footer.
1588
+ process.stderr.write(
1589
+ 'WARN tier-0 path: no narrative provided, running tier-0 for section ' +
1590
+ SECTION_FILTER +
1591
+ '\n'
1592
+ );
1593
+ result = runTier0({
1594
+ roomDir: ROOM_DIR,
1595
+ sectionName: SECTION_FILTER,
1596
+ dryRun: DRY_RUN,
1597
+ });
1598
+ } else {
1599
+ result = writeSectionFromNarrative(ROOM_DIR, SECTION_FILTER, NARRATIVE_PATH, {
1600
+ dryRun: DRY_RUN,
1601
+ });
1602
+ }
1603
+ // Phase 88-04-B: machine-parsable envelope. Callers (88-04 post-write
1604
+ // hook, 88-06 on-stop drain, 88-13 guardian) read this to know
1605
+ // whether the write landed or the invariants gate rejected it.
1606
+ if (result && result.envelope) {
1607
+ process.stdout.write(JSON.stringify(result.envelope) + '\n');
1608
+ }
1609
+ } else {
1610
+ // Legacy / bare-shell path: preserved verbatim.
1611
+ generateAllSectionMintos(ROOM_DIR, {
1612
+ dryRun: DRY_RUN,
1613
+ sectionFilter: SECTION_FILTER,
1614
+ });
1615
+ }
1616
+ } catch (e) {
1617
+ process.stderr.write('ERROR: ' + e.message + '\n');
1618
+ process.exit(2);
1619
+ }
1620
+ }
1621
+
1622
+ module.exports = {
1623
+ generateAllSectionMintos,
1624
+ renderSectionMinto,
1625
+ collectSectionArtifacts,
1626
+ deriveGoverningThought,
1627
+ readGoverningThoughtFromGraph,
1628
+ deriveClaims,
1629
+ deriveMeceTree,
1630
+ deriveGaps,
1631
+ findRelatedSections,
1632
+ // Phase 81-01 additions
1633
+ emitSectionPlanPayload,
1634
+ writeSectionFromNarrative,
1635
+ renderFeynmanMinto,
1636
+ buildStructuralPayload,
1637
+ buildArtifactPayload,
1638
+ // Phase 81-03 additions
1639
+ runTier0,
1640
+ // Phase 88-04-B addition
1641
+ atomicWriteMinto,
1642
+ };