@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,1213 @@
1
+ 'use strict';
2
+ /*
3
+ * Phase 155-02 -- lib/core/navigation/room-birth.cjs
4
+ *
5
+ * The birth-transaction keystone: birthRoom(opts) orchestrates the Q1 7-step
6
+ * birth sequence as a single reliable operation with the SQLite transaction as
7
+ * the one genuinely ACID block.
8
+ *
9
+ * Doctrine: Canon Parts 8 + 9; SEED-022 (birth transaction keystone);
10
+ * SEED-001 partial (sub-room creation side-effects).
11
+ *
12
+ * Allow-list rationale:
13
+ * This module opens room.db via lib/core/room-db.cjs::openRoomDb (the lazy
14
+ * creator). openRoomDbForCaller is FORBIDDEN here (it refuses to create
15
+ * room.db). This module is in lib/core/navigation/ so
16
+ * scripts/check-substrate.cjs accepts it (regex /^lib\/core\/navigation\//).
17
+ *
18
+ * Q1 7-step birth sequence (from RESEARCH, the primary correction):
19
+ * STEP 1 -- scaffold (idempotent, unregistered)
20
+ * mkdir + .room-root sentinel + scaffoldRoomSkeleton + feynman-seed-writer
21
+ * per section + USER.md (MUST happen before confirmNode resolveByUser)
22
+ * STEP 2 -- SQLite transaction (the ACID block; mirrors writeBreakthrough D-20)
23
+ * openRoomDb -> BEGIN -> writeClaimNode (venture node) -> setFocus ->
24
+ * drainBirthGateAnswers -> confirmNode batch -> room_created memory_event ->
25
+ * COMMIT. ROLLBACK on any error. Post-commit: logOperatorTransition.
26
+ * STEP 3 -- compute-state (writes STATE.md; NEVER authored)
27
+ * STEP 4 (COMMIT POINT) -- room-registry create (atomic tmp+mv; flips active
28
+ * pointer; the last structural step -- registry-first dangles the active
29
+ * pointer during the structurally-incomplete window)
30
+ * STEP 5 -- reconcileMemoryArtifacts (cortex + SENS-08 scalars live)
31
+ * STEP 6 -- migrateToRoom (drains banked opportunities + highlights; gate
32
+ * answers consumed in STEP 2 via drainBirthGateAnswers are safe)
33
+ * STEP 7 -- BRAIN derivation enqueue (log line only; Phase 90 enqueue is
34
+ * optional here; the comment prevents a future plan from omitting it)
35
+ *
36
+ * The scaffold-before-registry order is the primary correction from RESEARCH Q1:
37
+ * registry-first would dangle the active pointer during the structurally-
38
+ * incomplete window when the room has no room.db and no memory files yet.
39
+ *
40
+ * Canon Part 8: zero Brain egress. All writes are LOCAL to the caller's room.db
41
+ * and the filesystem. gateAnswers.free_text rides REJECTED_BECAUSE edges only;
42
+ * the reason scalar is a short string, not raw prose egress.
43
+ * Canon Part 9: SQL is the local mind. room.db is created via openRoomDb (the
44
+ * lazy creator), never openRoomDbForCaller (which refuses creation).
45
+ * Canon Part 9 v1.5 audit-node carve-out: room_created + birth_gate_answered
46
+ * memory_events are SYSTEM-BOOKKEEPING nodes (created_by=system,
47
+ * review_status=confirmed); they record what the system DID, not a venture
48
+ * truth-claim. The venture claim (writeClaimNode) is a TRUTH-CLAIM node that
49
+ * lands review_status='proposed'; confirmNode promotes it via the human byUser
50
+ * path. No CHOSE edge is written anywhere (CHOSE is not in ALLOWED_EDGE_TYPES;
51
+ * RESEARCH Pitfall 7 verified).
52
+ *
53
+ * T-155-02-02 mitigation: roomDir path traversal in subprocess calls. Validate
54
+ * roomDir is absolute and reject paths containing '..' before execSync.
55
+ * Shell args are double-quoted in the execSync command.
56
+ *
57
+ * NO em-dashes anywhere in this file (CLAUDE.md HARD RULE).
58
+ */
59
+
60
+ const fs = require('node:fs');
61
+ const path = require('node:path');
62
+ const os = require('node:os');
63
+ const { execSync } = require('node:child_process');
64
+
65
+ const roomDbMod = require('../room-db.cjs');
66
+ const scaffold = require('../room-skeleton-scaffold.cjs');
67
+ // feynman-seed-writer is lazy-required inside birthRoom() below to avoid the
68
+ // circular dep: feynman-seed-writer -> navigation -> room-birth -> feynman-seed-writer.
69
+ // Navigation.cjs now requires room-birth.cjs (the re-export), so a top-level
70
+ // require of feynman-seed-writer here would close a require cycle that would
71
+ // leave feynman-seed-writer with an incomplete navigation export at load time.
72
+ // const feynmanSeedWriter = require('../feynman/feynman-seed-writer.cjs');
73
+
74
+ // Import navigation submodules DIRECTLY to avoid the circular dependency:
75
+ // navigation.cjs requires room-birth.cjs; room-birth.cjs requiring navigation.cjs
76
+ // back would create a circular dep where navigation exports are {} on first access.
77
+ // As an allow-listed navigation/ submodule, direct submodule imports are legal.
78
+ const memoryEvents = require('./memory-events.cjs');
79
+ const edges = require('./edges.cjs');
80
+ // Phase 162-02 (R11 / D-B): real Section nodes written into room.db at birth.
81
+ // node-insert is the NOT-NULL-safe shared upsert helper (HARD-02 chokepoint);
82
+ // it takes a caller-owned conn and never opens room.db itself, so it is legal to
83
+ // require from this allow-listed navigation/ submodule.
84
+ const { insertNode } = require('../node-insert.cjs');
85
+ const focusMod = require('./focus.cjs');
86
+ const typedClaim = require('./typed-claim.cjs');
87
+ const confirmNodeMod = require('./confirm-node.cjs');
88
+ const spineEvents = require('./spine-events.cjs');
89
+ const scratchpadOps = require('../scratchpad-ops.cjs');
90
+ // reconcile-memory-runner requires navigation.cjs; since navigation.cjs now requires
91
+ // room-birth.cjs (us), a top-level require would create a circular dep that leaves
92
+ // reconcileRunner.reconcileMemoryArtifacts undefined at load time. Lazy-require
93
+ // inside birthRoom() at the call site instead.
94
+ // const reconcileRunner = require('../memory/reconcile-memory-runner.cjs');
95
+ const userMdOps = require('../user-md-ops.cjs');
96
+
97
+ const REPO_ROOT = path.resolve(__dirname, '..', '..', '..');
98
+
99
+ // SECTION_NAMES is read live from lib/core/room-skeleton-scaffold.cjs (single
100
+ // source of truth there) as of Phase 275 (D-01). A re-copied literal here is
101
+ // the exact propagation-gap class Phase 273 and Phase 276 already named -- do
102
+ // not reintroduce a hand-typed mirror.
103
+ //
104
+ // Fail loud, never silent-fallback: if the scaffold's export is missing or
105
+ // empty, writeSectionNodes would become a silent no-op that leaves a room
106
+ // with zero structural anchors while birthRoom still reports success. That
107
+ // false-success shape is the exact disease Phase 276 exists to close, so this
108
+ // guard writes to stderr and still uses the scaffold's export as the sole
109
+ // source (never a re-typed literal, never an empty-array substitute).
110
+ if (!Array.isArray(scaffold.SECTION_NAMES) || scaffold.SECTION_NAMES.length === 0) {
111
+ process.stderr.write(
112
+ '[room-birth] FATAL: scaffold.SECTION_NAMES is missing or empty; ' +
113
+ 'birthRoom would silently write zero Section nodes.\n'
114
+ );
115
+ }
116
+ const SECTION_NAMES = Object.freeze(scaffold.SECTION_NAMES.slice());
117
+
118
+ // ---------------------------------------------------------------------------
119
+ // T-155-02-02: Path safety guard. Rejects paths containing '..' components so
120
+ // shell arg injection via a crafted roomDir cannot escape the ROOMS_HOME tree.
121
+ // Returns null if the path is safe, or a reason string if not.
122
+ // ---------------------------------------------------------------------------
123
+ function _pathSafetyReason(p) {
124
+ if (typeof p !== 'string' || p.length === 0) return 'empty_path';
125
+ if (!path.isAbsolute(p)) return 'relative_path';
126
+ const normalized = path.normalize(p);
127
+ // Reject any path that after normalization contains a '..' segment.
128
+ if (normalized.split(path.sep).includes('..')) return 'path_traversal';
129
+ return null;
130
+ }
131
+
132
+ // ---------------------------------------------------------------------------
133
+ // drainBirthGateAnswers(db, roomDir, gateAnswers, ventureNodeId)
134
+ //
135
+ // Called from STEP 2 (inside the SQLite BEGIN...COMMIT block). Fills the
136
+ // Plan 01 stub in lib/core/scratchpad-ops.cjs by providing the real body here
137
+ // (the stub remains as the export; this internal helper IS the body). For
138
+ // each gateAnswers entry:
139
+ // 1. logMemoryEvent with event_type='birth_gate_answered'
140
+ // 2. writeEdge with the typed cascade edge:
141
+ // Approve / RunMethodology -> FILED_AS_DECISION
142
+ // Defer -> DEFERRED
143
+ // Reject -> REJECTED_BECAUSE (reason = entry.free_text)
144
+ // <anything else> -> FILED_AS_DECISION (safe default)
145
+ // NEVER write CHOSE (not in ALLOWED_EDGE_TYPES; RESEARCH Pitfall 7 verified).
146
+ //
147
+ // ventureNodeId is the claim node minted in STEP 2 (writeClaimNode result).
148
+ // Defensive: a writeEdge failure is tolerated; the logMemoryEvent result stands.
149
+ // ---------------------------------------------------------------------------
150
+ function drainBirthGateAnswers(db, roomDir, gateAnswers, ventureNodeId) {
151
+ const answers = Array.isArray(gateAnswers) ? gateAnswers : [];
152
+ let drained = 0;
153
+
154
+ for (const entry of answers) {
155
+ const gate_id = entry.gate_id || 'UNKNOWN';
156
+ const canonical_verb = typeof entry.canonical_verb === 'string' ? entry.canonical_verb : '';
157
+ const option_key = entry.option_key || '';
158
+
159
+ // Log the birth_gate_answered memory_event (system-bookkeeping; Part 9 v1.5
160
+ // audit-node carve-out: records WHAT the navigator decided at the gate;
161
+ // created_by=system review_status=confirmed is canon-legal).
162
+ try {
163
+ memoryEvents.logEvent(db, 'birth_gate_answered', {
164
+ gate_id: gate_id,
165
+ canonical_verb: canonical_verb,
166
+ option_key: option_key,
167
+ created_by: 'system',
168
+ source_path: 'birth:' + gate_id,
169
+ });
170
+ } catch (_e) {
171
+ // Tolerate: a log failure never blocks the edge write.
172
+ }
173
+
174
+ // Write the typed cascade edge from the venture node to a stable gate anchor.
175
+ // Target: a gate anchor node. The edges table enforces FK(source, target) ->
176
+ // nodes(id), so we must mint a gate anchor node before writing the edge.
177
+ // Gate anchor nodes are SYSTEM-BOOKKEEPING (Part 9 v1.5 audit-node carve-out:
178
+ // records the gate decision, not a venture truth-claim); created_by=system
179
+ // review_status=confirmed is canon-legal. OPEN-Q7: batch attribution of gate
180
+ // answers; revisit for per-answer if navigator decides.
181
+ let edgeType;
182
+ if (canonical_verb === 'Approve' || canonical_verb === 'RunMethodology') {
183
+ edgeType = 'FILED_AS_DECISION';
184
+ } else if (canonical_verb === 'Defer') {
185
+ edgeType = 'DEFERRED';
186
+ } else if (canonical_verb === 'Reject') {
187
+ edgeType = 'REJECTED_BECAUSE';
188
+ } else {
189
+ edgeType = 'FILED_AS_DECISION'; // safe default
190
+ }
191
+
192
+ const sourceId = ventureNodeId || ('birth_claim:nosession');
193
+ const targetId = 'birth_gate:' + gate_id + ':' + option_key;
194
+
195
+ // Ensure the source stub exists when ventureNodeId was not provided (FK requirement).
196
+ // This path should not be reached in normal birthRoom execution (ventureNodeId is
197
+ // set from writeClaimNode), but guards the standalone-call case.
198
+ if (!ventureNodeId) {
199
+ try {
200
+ const nowMs2 = Date.now();
201
+ db.prepare(
202
+ 'INSERT OR IGNORE INTO nodes (id, type, properties, source_path, created_by, ' +
203
+ 'confidence, review_status, created_at, last_seen_at) ' +
204
+ "VALUES (?, 'birth_gate_anchor', '{}', 'birth:nosession', 'system', NULL, 'confirmed', ?, ?)"
205
+ ).run(sourceId, nowMs2, nowMs2);
206
+ } catch (_e) {
207
+ // Tolerate.
208
+ }
209
+ }
210
+
211
+ // Ensure the gate anchor node exists in the nodes table (FK requirement).
212
+ // INSERT OR IGNORE so idempotent re-runs do not overwrite existing anchors.
213
+ try {
214
+ const nowMs = Date.now();
215
+ const gateAnchorProps = JSON.stringify({
216
+ gate_id: gate_id,
217
+ option_key: option_key,
218
+ canonical_verb: canonical_verb,
219
+ event_type: 'birth_gate_anchor',
220
+ });
221
+ db.prepare(
222
+ 'INSERT OR IGNORE INTO nodes (id, type, properties, source_path, created_by, ' +
223
+ 'confidence, review_status, created_at, last_seen_at) ' +
224
+ "VALUES (?, 'birth_gate_anchor', ?, ?, 'system', NULL, 'confirmed', ?, ?)"
225
+ ).run(targetId, gateAnchorProps, 'birth:' + gate_id, nowMs, nowMs);
226
+ } catch (_e) {
227
+ // Tolerate: if the anchor insert fails, the edge write will also fail but
228
+ // drainBirthGateAnswers will increment drained and continue.
229
+ }
230
+
231
+ const edgeProps = {};
232
+ if (edgeType === 'REJECTED_BECAUSE' && typeof entry.free_text === 'string' && entry.free_text.length > 0) {
233
+ // T-155-02-02 / Canon Part 8: only the reason scalar (short string) rides the edge.
234
+ // The free_text is truncated to 200 chars so no raw prose egress occurs.
235
+ edgeProps.reason = String(entry.free_text).slice(0, 200);
236
+ }
237
+ edgeProps.gate_id = gate_id;
238
+
239
+ try {
240
+ edges.writeEdge(db, {
241
+ source_id: sourceId,
242
+ target_id: targetId,
243
+ edge_type: edgeType,
244
+ properties: edgeProps,
245
+ });
246
+ } catch (_e) {
247
+ // Tolerate: writeEdge failure does not block the overall drain.
248
+ }
249
+
250
+ drained++;
251
+ }
252
+
253
+ return { ok: true, drained: drained };
254
+ }
255
+
256
+ // ---------------------------------------------------------------------------
257
+ // writeSectionNodes(db, sectionSlugs) -- Phase 162-02 (R11 / D-B).
258
+ //
259
+ // Upserts one real Section node per section slug into room.db using the shared
260
+ // NOT-NULL-safe insertNode helper, then promotes review_status to 'confirmed'
261
+ // (Part 9 v1.5 audit-node carve-out: Section nodes are system-bookkeeping
262
+ // structural anchors, not truth-claims, so created_by=system review_status=
263
+ // confirmed is canon-legal). Idempotent: insertNode ON CONFLICT(id) upserts, and
264
+ // the review_status UPDATE is a no-op on an already-confirmed row.
265
+ //
266
+ // The caller owns the transaction: birthRoom calls this inside its STEP 2
267
+ // BEGIN..COMMIT; the migration calls it inside its own BEGIN..COMMIT. This helper
268
+ // NEVER opens room.db itself (it receives the caller-owned db handle), so it adds
269
+ // zero direct-open surface (Canon Part 9 chokepoint discipline).
270
+ //
271
+ // Returns the count of Section slugs written.
272
+ // ---------------------------------------------------------------------------
273
+ function writeSectionNodes(db, sectionSlugs) {
274
+ const slugs = Array.isArray(sectionSlugs) ? sectionSlugs : [];
275
+ let written = 0;
276
+ for (const slug of slugs) {
277
+ const label = String(slug).replace(/-/g, ' ').toUpperCase();
278
+ const props = JSON.stringify({ section: slug, name: slug, label, created_by: 'system' });
279
+ try {
280
+ insertNode(db, slug, 'Section', props, {
281
+ source_path: 'system:section-anchor',
282
+ created_by: 'system',
283
+ // R17-02: 'observation' -- system-bookkeeping structural anchor.
284
+ epistemic_type: 'observation',
285
+ });
286
+ // Promote to confirmed (system-bookkeeping). On the un-migrated 3-column
287
+ // schema there is no review_status column, so this UPDATE is tolerated.
288
+ // Phase 194-06 Task 1: node-birth bookkeeping. A co-session cannot hold a
289
+ // readVersion of a Section node being born at room creation, so the
290
+ // reconcile-guard CAS token bump (last_modified_at) is intentionally OMITTED;
291
+ // allowlisted in tests/test-194-lastmod-discipline.test.cjs.
292
+ try {
293
+ db.prepare("UPDATE nodes SET review_status = 'confirmed' WHERE id = ? AND type = 'Section'").run(slug);
294
+ } catch (_e) {
295
+ // Un-migrated schema has no review_status column; tolerate.
296
+ }
297
+ written += 1;
298
+ } catch (_e) {
299
+ // Tolerate a single-node insert failure; the rest still write.
300
+ }
301
+ }
302
+ return written;
303
+ }
304
+
305
+ // ===========================================================================
306
+ // Phase 195-03 (FCM-04/05/06): born-wired sub-room birth.
307
+ //
308
+ // A born-wired birth is a PARENT sub-room birth (opts.parent set) explicitly
309
+ // requested with opts.bornWired === true. It layers four guarantees on top of
310
+ // the shipped 7-step keystone:
311
+ // (1) a HUMAN-APPROVAL gate fires BEFORE mkdir (FCM-06); Reject -> no folder,
312
+ // and the rejection is recorded as graph data in the PARENT room.db.
313
+ // (2) the child->parent NESTED_WITHIN lineage edge is written INSIDE the
314
+ // STEP-2 ACID block, so lineage is atomic with birth (FCM-05 side-effect 3).
315
+ // (3) the full 6-file memory complement is seeded synchronously (BRAIN.md stub
316
+ // at birth) and, when the parent .umbilical marks USER/BRAIN `parent`, the
317
+ // child derives them from the parent (generic enums/handles only; Part 8).
318
+ // (4) SEED-001's FIVE side-effects wire atomically or the whole birth unwinds
319
+ // via a compensating reverse-order rollback (clone of room-discard-cascade)
320
+ // -- no half-born orphan (Part 11 R1/R2 fail-closed).
321
+ //
322
+ // The non-bornWired path (top-level rooms; the Phase 169 self-heal parent birth)
323
+ // is byte-unchanged: every born-wired branch is guarded by `bornWired`.
324
+ // ===========================================================================
325
+
326
+ // runBirthGate(options, ctx) -- resolve the pre-mkdir approval decision (FCM-06).
327
+ // options.birthGate may be a function (ctx)->decision (the AskUserQuestion / F.8
328
+ // answer supplied by the command layer) OR a decision object. Absent decision =
329
+ // Reject (fail-closed: no silent promotion of a section to a sub-room).
330
+ function runBirthGate(options, ctx) {
331
+ const g = options.birthGate;
332
+ let decision = null;
333
+ if (typeof g === 'function') {
334
+ try { decision = g(ctx); } catch (_e) { decision = null; }
335
+ } else if (g && typeof g === 'object') {
336
+ decision = g;
337
+ }
338
+ if (!decision || typeof decision !== 'object') {
339
+ return { approved: false, canonical_verb: 'Reject', free_text: 'no_gate_decision' };
340
+ }
341
+ const verb = typeof decision.canonical_verb === 'string' ? decision.canonical_verb : '';
342
+ const approved = decision.approved === true || verb === 'Approve' || verb === 'RunMethodology';
343
+ return {
344
+ approved: approved,
345
+ canonical_verb: approved ? (verb || 'Approve') : (verb || 'Reject'),
346
+ free_text: typeof decision.free_text === 'string' ? decision.free_text : '',
347
+ };
348
+ }
349
+
350
+ function _roomsHome() {
351
+ return process.env.MINDRIAN_ROOMS_HOME || path.join(os.homedir(), 'MindrianRooms');
352
+ }
353
+
354
+ function _readRegistry(roomsHome) {
355
+ try {
356
+ const regPath = path.join(roomsHome, '.rooms', 'registry.json');
357
+ if (!fs.existsSync(regPath)) return null;
358
+ return JSON.parse(fs.readFileSync(regPath, 'utf8'));
359
+ } catch (_e) { return null; }
360
+ }
361
+
362
+ function _registryEntry(reg, slug) {
363
+ if (!reg) return null;
364
+ const rooms = reg.rooms;
365
+ if (Array.isArray(rooms)) return rooms.find((r) => r && (r.slug === slug || r.name === slug)) || null;
366
+ if (rooms && typeof rooms === 'object') return rooms[slug] || null;
367
+ return null;
368
+ }
369
+
370
+ // Resolve a registered room's absolute directory from the registry (parent dir
371
+ // resolution for the born-wired side-effects). Returns '' on miss.
372
+ function _resolveRoomDirFromRegistry(slug, roomsHome) {
373
+ const entry = _registryEntry(_readRegistry(roomsHome), slug);
374
+ if (!entry) return '';
375
+ if (typeof entry.abs_path === 'string' && entry.abs_path.length) return entry.abs_path;
376
+ if (typeof entry.path === 'string' && entry.path.length) {
377
+ return path.isAbsolute(entry.path) ? entry.path : path.join(roomsHome, entry.path);
378
+ }
379
+ return path.join(roomsHome, slug);
380
+ }
381
+
382
+ // depth = parent depth + 1 (root is depth 0). Best-effort; defaults to 1.
383
+ function _computeDepth(roomsHome, parentSlug) {
384
+ const entry = _registryEntry(_readRegistry(roomsHome), parentSlug);
385
+ const pd = entry && Number(entry.depth);
386
+ return (Number.isFinite(pd) && pd >= 0) ? pd + 1 : 1;
387
+ }
388
+
389
+ // Reverse-order compensating teardown (clone of room-discard-cascade order:
390
+ // close db handle -> remove filesystem scaffold -> purge registry key). Leaves
391
+ // NO half-born orphan (Part 11 R1/R2 fail-closed).
392
+ function _bornWiredRollback(roomDir, slug, roomsHome, dbHandle, parentSlug) {
393
+ try { if (dbHandle) dbHandle.close(); } catch (_e) {}
394
+ try { fs.rmSync(roomDir, { recursive: true, force: true }); } catch (_e) {}
395
+ try { _removeRegistryKey(roomsHome, slug, parentSlug); } catch (_e) {}
396
+ }
397
+
398
+ // Remove the child registry key + revert the parent's children entry (rollback).
399
+ function _removeRegistryKey(roomsHome, slug, parentSlug) {
400
+ const regPath = path.join(roomsHome, '.rooms', 'registry.json');
401
+ if (!fs.existsSync(regPath)) return false;
402
+ const reg = JSON.parse(fs.readFileSync(regPath, 'utf8'));
403
+ if (!reg || typeof reg.rooms !== 'object' || Array.isArray(reg.rooms)) return false;
404
+ let changed = false;
405
+ if (reg.rooms[slug]) { delete reg.rooms[slug]; changed = true; }
406
+ if (reg.active === slug) { reg.active = ''; changed = true; }
407
+ const parentEntry = parentSlug ? reg.rooms[parentSlug] : null;
408
+ if (parentEntry && Array.isArray(parentEntry.children)) {
409
+ const before = parentEntry.children.length;
410
+ parentEntry.children = parentEntry.children.filter((c) => c !== slug);
411
+ if (parentEntry.children.length !== before) changed = true;
412
+ }
413
+ if (changed) {
414
+ const tmp = regPath + '.tmp.' + process.pid + '.' + Math.random().toString(36).slice(2, 8);
415
+ fs.writeFileSync(tmp, JSON.stringify(reg, null, 2), 'utf8');
416
+ fs.renameSync(tmp, regPath);
417
+ }
418
+ return true;
419
+ }
420
+
421
+ // SEED-001 side-effect 4: the child registry entry carries parent + depth + path,
422
+ // AND the parent's `children: [..., <new-slug>]` is updated. Returns true only
423
+ // when BOTH the child and parent entries exist and were patched (fail-closed).
424
+ function _patchRegistryLineage(roomsHome, slug, parentSlug, roomDir, depth) {
425
+ const regPath = path.join(roomsHome, '.rooms', 'registry.json');
426
+ if (!fs.existsSync(regPath)) return false;
427
+ const reg = JSON.parse(fs.readFileSync(regPath, 'utf8'));
428
+ if (!reg || typeof reg.rooms !== 'object' || Array.isArray(reg.rooms)) return false;
429
+ const child = reg.rooms[slug];
430
+ const parentEntry = reg.rooms[parentSlug];
431
+ if (!child || !parentEntry) return false; // a real parent MUST be registered
432
+ child.parent = parentSlug;
433
+ child.depth = depth;
434
+ let rel = roomDir;
435
+ try { const r = path.relative(roomsHome, roomDir); if (r && !r.startsWith('..')) rel = r; } catch (_e) {}
436
+ child.path = rel;
437
+ if (!Array.isArray(parentEntry.children)) parentEntry.children = [];
438
+ if (parentEntry.children.indexOf(slug) === -1) parentEntry.children.push(slug);
439
+ const tmp = regPath + '.tmp.' + process.pid + '.' + Math.random().toString(36).slice(2, 8);
440
+ fs.writeFileSync(tmp, JSON.stringify(reg, null, 2), 'utf8');
441
+ fs.renameSync(tmp, regPath);
442
+ return true;
443
+ }
444
+
445
+ // SEED-001 side-effect 2: the child STATE.md gets `parent: [[<parent>]]` in
446
+ // frontmatter + a `## Parent Room` link section in the body. Idempotent.
447
+ function _patchChildStateParent(roomDir, parentSlug) {
448
+ const statePath = path.join(roomDir, 'STATE.md');
449
+ let raw = '';
450
+ try { raw = fs.readFileSync(statePath, 'utf8'); } catch (_e) { raw = ''; }
451
+ let fm = '';
452
+ let body = '';
453
+ const m = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
454
+ if (m) { fm = m[1]; body = m[2]; } else { body = raw; }
455
+ const parentLink = '[[' + parentSlug + ']]';
456
+ if (!/^parent\s*:/m.test(fm)) {
457
+ fm = (fm.length ? fm + '\n' : '') + 'parent: "' + parentLink + '"';
458
+ } else {
459
+ fm = fm.replace(/^parent\s*:.*$/m, 'parent: "' + parentLink + '"');
460
+ }
461
+ if (body.indexOf('## Parent Room') === -1) {
462
+ body = body.replace(/\s*$/, '') + '\n\n## Parent Room\n\n- ' + parentLink + '\n';
463
+ }
464
+ const content = '---\n' + fm + '\n---\n' + (body.charAt(0) === '\n' ? body : '\n' + body);
465
+ const tmp = statePath + '.tmp.' + process.pid + '.' + Math.random().toString(36).slice(2, 8);
466
+ fs.writeFileSync(tmp, content, 'utf8');
467
+ fs.renameSync(tmp, statePath);
468
+ return true;
469
+ }
470
+
471
+ // SEED-001 side-effect 1: the parent STATE.md gets a `[[<child>]]` entry under a
472
+ // `## Sub-rooms` section (created if missing). Idempotent.
473
+ function _patchParentStateSubroom(parentRoomDir, childSlug) {
474
+ const statePath = path.join(parentRoomDir, 'STATE.md');
475
+ let raw = '';
476
+ try { raw = fs.readFileSync(statePath, 'utf8'); } catch (_e) { raw = ''; }
477
+ const childLink = '[[' + childSlug + ']]';
478
+ if (raw.indexOf(childLink) !== -1) return true; // idempotent
479
+ let content;
480
+ if (raw.indexOf('## Sub-rooms') === -1) {
481
+ const base = raw.length ? raw.replace(/\s*$/, '') : '---\nroom: ' + path.basename(parentRoomDir) + '\n---\n\n# STATE.md';
482
+ content = base + '\n\n## Sub-rooms\n\n- ' + childLink + '\n';
483
+ } else {
484
+ content = raw.replace(/(##\s+Sub-rooms[^\n]*\n)/, '$1- ' + childLink + '\n');
485
+ if (content === raw) content = raw.replace(/\s*$/, '') + '\n- ' + childLink + '\n';
486
+ }
487
+ const tmp = statePath + '.tmp.' + process.pid + '.' + Math.random().toString(36).slice(2, 8);
488
+ fs.writeFileSync(tmp, content, 'utf8');
489
+ fs.renameSync(tmp, statePath);
490
+ return true;
491
+ }
492
+
493
+ // SEED-001 side-effect 5: invalidate the parent room's wikilink resolver cache.
494
+ // On today's spine lib/vault/wikilink-builder.cjs is a STATELESS live-read
495
+ // builder (no persistent cache), so rewriting the parent STATE.md (side-effect 1)
496
+ // IS the effective bust -- the next render reads the updated file. We also remove
497
+ // any materialized cache artifact if one exists (defense-in-depth); absent one
498
+ // this is a no-op that succeeds (nothing stale to invalidate). Part 8: local fs.
499
+ function _invalidateParentWikilinkCache(parentRoomDir) {
500
+ try {
501
+ const cachePath = path.join(parentRoomDir, '.mindrian', 'wikilink-cache.json');
502
+ if (fs.existsSync(cachePath)) fs.rmSync(cachePath, { force: true });
503
+ return true;
504
+ } catch (_e) { return false; }
505
+ }
506
+
507
+ // FCM-06 / Part 4 rejection-is-data: a REJECTED sub-room birth is graph data. We
508
+ // log a subroom_birth_rejected memory_event into the PARENT room.db (the parent
509
+ // exists; the child folder was never created). No folder, no side-effects.
510
+ function _recordBirthRejection(parentRoomDir, childSlug, parentSlug, gate) {
511
+ if (!parentRoomDir || !fs.existsSync(parentRoomDir)) return false;
512
+ let pdb = null;
513
+ try {
514
+ pdb = roomDbMod.openRoomDb(parentRoomDir);
515
+ if (!pdb) return false;
516
+ const res = memoryEvents.logEvent(pdb, 'subroom_birth_rejected', {
517
+ rejected_slug: childSlug,
518
+ parent: parentSlug,
519
+ reason: String(gate.free_text || '').slice(0, 200),
520
+ created_by: 'system',
521
+ source_path: 'birth:subroom_rejected:' + childSlug,
522
+ });
523
+ return !!(res && res.ok);
524
+ } catch (_e) {
525
+ return false;
526
+ } finally {
527
+ if (pdb) { try { pdb.close(); } catch (_e2) {} }
528
+ }
529
+ }
530
+
531
+ // Write a minimal BRAIN.md stub at birth so the 6-file complement is 6/6
532
+ // synchronously (Phase 90 Brain derivation overwrites it later, STEP 7).
533
+ // Idempotent (only writes when absent).
534
+ function _writeBrainStub(roomDir, slug) {
535
+ const brainPath = path.join(roomDir, 'BRAIN.md');
536
+ if (fs.existsSync(brainPath)) return false;
537
+ const content = '---\nkind: BRAIN\nroom: ' + slug + '\nderived: false\n---\n\n' +
538
+ '# BRAIN.md\n\n' +
539
+ 'Seeded at birth. Phase 90 Brain derivation overwrites this stub with the ' +
540
+ 'generic framework handles derived for this room.\n';
541
+ try {
542
+ const tmp = brainPath + '.tmp.' + process.pid + '.' + Math.random().toString(36).slice(2, 8);
543
+ fs.writeFileSync(tmp, content, 'utf8');
544
+ fs.renameSync(tmp, brainPath);
545
+ return true;
546
+ } catch (_e) { return false; }
547
+ }
548
+
549
+ // FCM-04: seed the child's USER/BRAIN from the parent when the parent .umbilical
550
+ // marks them `parent`. A seed-time ONE-SHOT (not a live link). Part 8: ONLY the
551
+ // generic persona enums (extractPersona) + frozen framework handles
552
+ // (extractBrainAnchors) cross the cord -- STATE/MINTO/FEYNMAN are never derived
553
+ // and no parent prose is ever written into the child files.
554
+ function _seedInheritedMemory(roomDir, parentRoomDir) {
555
+ const result = { user_derived: false, brain_derived: false, map: null };
556
+ if (!parentRoomDir) return result;
557
+ let map = null;
558
+ try {
559
+ const resolver = require('../resolve-umbilical-target.cjs');
560
+ map = resolver.parseUmbilicalInheritance(path.join(parentRoomDir, '.umbilical'));
561
+ } catch (_e) { map = null; }
562
+ if (!map) return result;
563
+ result.map = map;
564
+
565
+ let reconcile = null;
566
+ try { reconcile = require('../memory/reconcile-memory-runner.cjs'); } catch (_e) { reconcile = null; }
567
+
568
+ // USER derives the generic persona enums from the parent's USER.md.
569
+ if (map.USER === 'parent' && reconcile && typeof reconcile.extractPersona === 'function') {
570
+ try {
571
+ const parentUserRaw = fs.readFileSync(path.join(parentRoomDir, 'USER.md'), 'utf8');
572
+ const persona = reconcile.extractPersona(parentUserRaw); // { roleBlend, journeyStage }
573
+ const data = {};
574
+ if (persona.roleBlend) {
575
+ data.canonical_role = persona.roleBlend;
576
+ const rb = {};
577
+ rb[persona.roleBlend] = 1; // single-axis generic handle, never the weight vector
578
+ data.role_blend = rb;
579
+ }
580
+ if (persona.journeyStage) data.journey_stage = persona.journeyStage;
581
+ if (Object.keys(data).length > 0) {
582
+ userMdOps.writeUserMdAtomic(path.join(roomDir, 'USER.md'), data);
583
+ result.user_derived = true;
584
+ }
585
+ } catch (_e) { /* tolerate: baseline USER.md stands */ }
586
+ }
587
+
588
+ // BRAIN derives the generic framework handles from the parent's BRAIN.md.
589
+ if (map.BRAIN === 'parent' && reconcile && typeof reconcile.extractBrainAnchors === 'function') {
590
+ try {
591
+ const parentBrainRaw = fs.readFileSync(path.join(parentRoomDir, 'BRAIN.md'), 'utf8');
592
+ const anchors = reconcile.extractBrainAnchors(parentBrainRaw); // [ framework names ]
593
+ const list = anchors.length ? anchors.map((a) => '- ' + a).join('\n') : '- (none)';
594
+ const content = '---\nkind: BRAIN\nderived: inherited\nframework_anchors: [' +
595
+ anchors.join(', ') + ']\n---\n\n# BRAIN.md\n\n' +
596
+ 'Framework anchors inherited from the parent room (generic handles only, ' +
597
+ 'Part 8; no parent prose crosses the cord):\n\n' + list + '\n';
598
+ const brainPath = path.join(roomDir, 'BRAIN.md');
599
+ const tmp = brainPath + '.tmp.' + process.pid + '.' + Math.random().toString(36).slice(2, 8);
600
+ fs.writeFileSync(tmp, content, 'utf8');
601
+ fs.renameSync(tmp, brainPath);
602
+ result.brain_derived = true;
603
+ } catch (_e) { /* tolerate: baseline BRAIN stub stands */ }
604
+ }
605
+ return result;
606
+ }
607
+
608
+ // Verify the NESTED_WITHIN lineage edge landed in the child's room.db (the
609
+ // side-effect 3 post-write gate for the born-wired verification).
610
+ function _verifyNestedWithin(roomDir, slug, parent) {
611
+ let db = null;
612
+ try {
613
+ db = roomDbMod.openRoomDb(roomDir);
614
+ if (!db) return false;
615
+ const row = db.prepare(
616
+ "SELECT 1 FROM edges WHERE source = ? AND target = ? AND type = 'NESTED_WITHIN'"
617
+ ).get('room:' + slug, 'room:' + parent);
618
+ return !!row;
619
+ } catch (_e) {
620
+ return false;
621
+ } finally {
622
+ if (db) { try { db.close(); } catch (_e2) {} }
623
+ }
624
+ }
625
+
626
+ // ---------------------------------------------------------------------------
627
+ // birthRoom(opts) -- the public entry point.
628
+ //
629
+ // opts: {
630
+ // slug string (room registry name key)
631
+ // roomDir string (absolute path; MUST already be inside ROOMS_HOME)
632
+ // sessionId string
633
+ // ventureText string (user-supplied venture description)
634
+ // jtbd string (JTBD statement)
635
+ // blueprintFamily string ('venture' default)
636
+ // gateAnswers Array (B1/B2/U0 gate answers to drain)
637
+ // approvedBy string (B2 Approve attribution; required)
638
+ // canonicalRole string (USER.md role; default 'navigator')
639
+ // roleBlend object (USER.md role_blend; default {})
640
+ // journeyStage string (USER.md journey_stage; default 'Ordinary World')
641
+ // vname string (venture name for registry; default slug)
642
+ // vstage string (venture stage for registry; default 'Pre-Opportunity')
643
+ // parent string (OPTIONAL parent room slug; Phase 169-07 additive
644
+ // amendment for the D-169-11 fractal joint. When non-empty it is
645
+ // threaded to BOTH the `.room-root` sentinel JSON (a `parent`
646
+ // field) AND the registry create (a `set-parent` follow-on), so a
647
+ // sub-room born via SEED-001 carries the operational lineage joint.
648
+ // DEFAULT-OMITTED: when absent the sentinel + registry are
649
+ // byte-unchanged from prior born-room behavior.)
650
+ // }
651
+ //
652
+ // Returns {ok:true, roomDir, slug, db_created:true} on success,
653
+ // or {ok:false, reason} on failure (never throws).
654
+ // ---------------------------------------------------------------------------
655
+ function birthRoom(opts) {
656
+ const options = opts || {};
657
+
658
+ // T-155-02-03: Hard guard on opts.approvedBy (gate bypass protection).
659
+ if (!options.approvedBy) {
660
+ return { ok: false, reason: 'no_approval', detail: 'approvedBy is required (B2 Approve gate)' };
661
+ }
662
+
663
+ const roomDir = options.roomDir;
664
+ const slug = options.slug;
665
+
666
+ // Path safety guard (T-155-02-02).
667
+ const pathErr = _pathSafetyReason(roomDir);
668
+ if (pathErr) {
669
+ return { ok: false, reason: 'invalid_room_dir', detail: pathErr };
670
+ }
671
+ if (typeof slug !== 'string' || slug.length === 0) {
672
+ return { ok: false, reason: 'invalid_slug' };
673
+ }
674
+
675
+ const sessionId = typeof options.sessionId === 'string' ? options.sessionId : 'nosession';
676
+ const ventureText = typeof options.ventureText === 'string' && options.ventureText.length > 0
677
+ ? options.ventureText : 'A new venture';
678
+ const jtbd = typeof options.jtbd === 'string' ? options.jtbd : '';
679
+ const blueprintFamily = typeof options.blueprintFamily === 'string' ? options.blueprintFamily : 'venture';
680
+ // Copy the caller's gateAnswers so the born-wired Approve answer we push below
681
+ // never mutates the caller's array.
682
+ const gateAnswers = Array.isArray(options.gateAnswers) ? options.gateAnswers.slice() : [];
683
+ const vname = typeof options.vname === 'string' && options.vname.length > 0
684
+ ? options.vname : slug;
685
+ const vstage = typeof options.vstage === 'string' && options.vstage.length > 0
686
+ ? options.vstage : 'Pre-Opportunity';
687
+ const canonicalRole = typeof options.canonicalRole === 'string' ? options.canonicalRole : 'navigator';
688
+ const roleBlend = (options.roleBlend && typeof options.roleBlend === 'object') ? options.roleBlend : {};
689
+ const journeyStage = typeof options.journeyStage === 'string' ? options.journeyStage : 'Ordinary World';
690
+ // Phase 169-07 additive amendment: the OPTIONAL parent room slug for the
691
+ // D-169-11 operational lineage joint. Default-omitted so the no-parent case is
692
+ // byte-unchanged.
693
+ const parent = (typeof options.parent === 'string' && options.parent.length > 0) ? options.parent : '';
694
+
695
+ // --------------------------------------------------------------------------
696
+ // Phase 195-03 born-wired setup (FCM-05/06). The born-wired path activates
697
+ // ONLY when opts.parent is set AND opts.bornWired === true. Everything below
698
+ // is a no-op for top-level rooms and the Phase 169 self-heal parent birth.
699
+ // --------------------------------------------------------------------------
700
+ const bornWired = options.bornWired === true && parent.length > 0;
701
+ const roomsHomeForBirth = _roomsHome();
702
+ let parentRoomDir = '';
703
+ let bornWiredDepth = 1;
704
+ if (bornWired) {
705
+ parentRoomDir = (typeof options.parentRoomDir === 'string' && options.parentRoomDir.length > 0)
706
+ ? options.parentRoomDir
707
+ : _resolveRoomDirFromRegistry(parent, roomsHomeForBirth);
708
+ // Fail closed BEFORE mkdir if the parent room cannot be resolved: a sub-room
709
+ // has no home without a real registered parent (no orphan promotion).
710
+ if (!parentRoomDir || !fs.existsSync(parentRoomDir)) {
711
+ return { ok: false, reason: 'parent_room_not_found', detail: parent };
712
+ }
713
+ bornWiredDepth = _computeDepth(roomsHomeForBirth, parent);
714
+
715
+ // FCM-06: the human-approval gate fires BEFORE fs.mkdirSync. On Reject no
716
+ // folder is created and the rejection is recorded as graph data in the
717
+ // parent room.db (Part 4 rejection-is-data). The approvedBy string-guard
718
+ // above stays as the bypass hard-guard.
719
+ const gate = runBirthGate(options, { slug: slug, parent: parent, parentRoomDir: parentRoomDir });
720
+ if (!gate.approved) {
721
+ const rejectionRecorded = _recordBirthRejection(parentRoomDir, slug, parent, gate);
722
+ return {
723
+ ok: false,
724
+ reason: 'birth_rejected',
725
+ rejection_recorded: rejectionRecorded,
726
+ canonical_verb: gate.canonical_verb,
727
+ slug: slug,
728
+ parent: parent,
729
+ };
730
+ }
731
+ // Approve is data too: push it so STEP 2 drainBirthGateAnswers files a
732
+ // FILED_AS_DECISION edge for the sub-room birth approval.
733
+ gateAnswers.push({
734
+ gate_id: 'SUBROOM_BIRTH',
735
+ canonical_verb: 'Approve',
736
+ option_key: 'approve',
737
+ alias_label: 'Approve sub-room ' + slug + ' under ' + parent,
738
+ ts: Date.now(),
739
+ });
740
+ }
741
+
742
+ // --------------------------------------------------------------------------
743
+ // STEP 1: scaffold (idempotent, unregistered)
744
+ //
745
+ // mkdir + .room-root sentinel + scaffoldRoomSkeleton + seedSection per
746
+ // section + USER.md (MUST happen before confirmNode resolveByUser so
747
+ // USER.md exists when resolveByUser reads it; RESEARCH Pitfall 12).
748
+ // --------------------------------------------------------------------------
749
+ try {
750
+ fs.mkdirSync(roomDir, { recursive: true });
751
+
752
+ // Write .room-root sentinel (used by resolve-umbilical-target.cjs).
753
+ const roomRootPath = path.join(roomDir, '.room-root');
754
+ if (!fs.existsSync(roomRootPath)) {
755
+ // The base sentinel shape is byte-unchanged ({room, active, born}). When
756
+ // opts.parent is provided (Phase 169-07), append a `parent` field ONLY then
757
+ // so the omitted case is byte-identical to prior born-room behavior. A
758
+ // `slug` field is added when parent is set so the rollup walk's
759
+ // _childDirForSlug (graph-derivation.cjs) can match the healed sub-room by
760
+ // slug; the omitted case stays byte-unchanged.
761
+ const sentinelObj = {
762
+ room: slug,
763
+ active: true,
764
+ born: new Date().toISOString(),
765
+ };
766
+ if (parent) {
767
+ sentinelObj.parent = parent;
768
+ sentinelObj.slug = slug;
769
+ }
770
+ const sentinel = JSON.stringify(sentinelObj);
771
+ const tmpRoot = roomRootPath + '.tmp.' + process.pid + '.' + Math.random().toString(36).slice(2, 10);
772
+ fs.writeFileSync(tmpRoot, sentinel, 'utf8');
773
+ fs.renameSync(tmpRoot, roomRootPath);
774
+ }
775
+
776
+ // scaffoldRoomSkeleton: fills the room with the canonical 8-section ICM
777
+ // structure + STATE.md + MINTO.md + USER.md + ROOM.md identity files.
778
+ // Idempotent: never overwrites human-authored content.
779
+ scaffold.scaffoldRoomSkeleton(roomDir, { blueprintFamily: blueprintFamily });
780
+
781
+ // seedSection per section to close the 4/6 -> 6/6 memory complement gap.
782
+ // scaffold writes ROOM.md / STATE.md / MINTO.md / USER.md; FEYNMAN.md and
783
+ // BRAIN.md have no scaffold templates. feynman-seed-writer closes FEYNMAN.md.
784
+ // (BRAIN.md is written by Phase 90 brain-derivation; STEP 7 enqueues it.)
785
+ // Lazy-require feynman-seed-writer here (not at file top) to avoid the
786
+ // circular dep: feynman-seed-writer -> navigation -> room-birth -> feynman-seed-writer.
787
+ let feynmanSeedWriter = null;
788
+ try {
789
+ feynmanSeedWriter = require('../feynman/feynman-seed-writer.cjs');
790
+ } catch (_e) {
791
+ // Best-effort: if the seed-writer cannot load, skip seeding.
792
+ }
793
+ if (feynmanSeedWriter && typeof feynmanSeedWriter.seedSection === 'function') {
794
+ for (const sectionSlug of SECTION_NAMES) {
795
+ const seedBody = 'Seeded at birth -- replace with your content for the ' +
796
+ sectionSlug + ' section of your venture.';
797
+ try {
798
+ feynmanSeedWriter.seedSection(roomDir, sectionSlug, seedBody, { db: null });
799
+ } catch (_e) {
800
+ // Best-effort: seedSection failure never aborts birth.
801
+ }
802
+ }
803
+ }
804
+
805
+ // Write USER.md via writeUserMdAtomic (RESEARCH Pitfall 12: USER.md MUST
806
+ // exist before confirmNode is called in STEP 2 so resolveByUser finds identity).
807
+ // Plan 03 owns the full USER.md schema; here we write the minimum identity.
808
+ const userMdPath = path.join(roomDir, 'USER.md');
809
+ // Only write if not already authored (idempotent).
810
+ try {
811
+ userMdOps.writeUserMdAtomic(userMdPath, {
812
+ canonical_role: canonicalRole,
813
+ role_blend: roleBlend,
814
+ journey_stage: journeyStage,
815
+ });
816
+ } catch (_e) {
817
+ // Tolerate: if USER.md already exists with human content, preserve it.
818
+ }
819
+
820
+ // Phase 195-03 born-wired STEP 1 additions (sub-room births only):
821
+ // - BRAIN.md stub so the 6-file complement is 6/6 synchronously.
822
+ // - FCM-04 inheritance seed: when the parent .umbilical marks USER/BRAIN
823
+ // `parent`, derive the child's USER/BRAIN from the parent (generic
824
+ // enums/handles only; Part 8). Runs BEFORE STEP 3 compute-state (which
825
+ // only rewrites STATE.md, never USER/BRAIN), so the derived files stand.
826
+ if (bornWired) {
827
+ _writeBrainStub(roomDir, slug);
828
+ _seedInheritedMemory(roomDir, parentRoomDir);
829
+ }
830
+ } catch (e) {
831
+ if (bornWired) { _bornWiredRollback(roomDir, slug, roomsHomeForBirth, null, parent); }
832
+ return { ok: false, reason: 'scaffold_failed', detail: String(e.message || '').slice(0, 200) };
833
+ }
834
+
835
+ // --------------------------------------------------------------------------
836
+ // STEP 2: SQLite transaction (the ACID block; mirrors writeBreakthrough D-20)
837
+ //
838
+ // openRoomDb (the lazy creator) creates room.db if absent. openRoomDbForCaller
839
+ // is FORBIDDEN here (it refuses creation; RESEARCH Canon note).
840
+ // BEGIN...COMMIT with ROLLBACK on any error.
841
+ // --------------------------------------------------------------------------
842
+ let db;
843
+ let ventureNodeId = null;
844
+
845
+ try {
846
+ db = roomDbMod.openRoomDb(roomDir);
847
+ } catch (e) {
848
+ return { ok: false, reason: 'open_room_db_failed', detail: String(e.message || '').slice(0, 200) };
849
+ }
850
+
851
+ try {
852
+ db.exec('BEGIN');
853
+
854
+ // writeClaimNode for the venture node (knowledge_type:'heuristic'; the initial
855
+ // framing of the venture is a heuristic claim at birth).
856
+ const claimResult = typedClaim.writeClaimNode(db, {
857
+ knowledge_type: 'heuristic',
858
+ text: ventureText,
859
+ sessionId: sessionId,
860
+ sourceSegment: 'birth:venture:' + slug,
861
+ });
862
+ if (claimResult && claimResult.ok) {
863
+ ventureNodeId = claimResult.node_id;
864
+ }
865
+
866
+ // setFocus on the venture node ('user' is valid; 'auto-from-upload' is NOT --
867
+ // RESEARCH Pitfall 1). Falls back gracefully when ventureNodeId is null.
868
+ if (ventureNodeId) {
869
+ try {
870
+ focusMod.setFocus(db, sessionId, ventureNodeId, 'user');
871
+ } catch (_e) {
872
+ // Tolerate: setFocus failure does not abort the transaction.
873
+ }
874
+ }
875
+
876
+ // drainBirthGateAnswers: converts gate answers into memory_events + typed edges.
877
+ // Called inside BEGIN...COMMIT so the gate audit trail is atomic with room birth.
878
+ drainBirthGateAnswers(db, roomDir, gateAnswers, ventureNodeId);
879
+
880
+ // confirmNode batch on all proposed truth-claim nodes. Resolves byUser from
881
+ // USER.md (written in STEP 1; RESEARCH Pitfall 12 guard). Uses resolveByUser
882
+ // after USER.md is confirmed written.
883
+ // OPEN-Q7: batch attribution; revisit for per-claim if navigator decides.
884
+ if (ventureNodeId) {
885
+ const byUser = confirmNodeMod.resolveByUser(roomDir);
886
+ try {
887
+ confirmNodeMod.confirmNode(db, ventureNodeId, byUser, 'confirmed at birth');
888
+ } catch (_e) {
889
+ // Tolerate: confirmNode failure does not abort birth.
890
+ }
891
+ }
892
+
893
+ // logJtbdTransition -- inside COMMIT sequence by passing the open db directly.
894
+ // The spine-events logJtbdTransition takes a roomDir and opens its own handle;
895
+ // to stay inside our transaction we call logMemoryEvent directly for the
896
+ // jtbd_transitioned event (the same net effect, one handle).
897
+ if (typeof jtbd === 'string' && jtbd.length > 0) {
898
+ try {
899
+ memoryEvents.logEvent(db, 'jtbd_transitioned', {
900
+ to: jtbd,
901
+ kind: 'set',
902
+ sessionId: sessionId,
903
+ created_by: 'system',
904
+ source_path: 'birth:jtbd',
905
+ });
906
+ } catch (_e) {
907
+ // Tolerate.
908
+ }
909
+ }
910
+
911
+ // Phase 162-02 (R11 / D-B): write real Section nodes into room.db INSIDE the
912
+ // birth ACID transaction so room.db is genuinely complete (Canon Part 9) and
913
+ // the export-time Section anchors in graph-export.cjs demote to a Tier-0
914
+ // fallback. Section nodes are SYSTEM-BOOKKEEPING structural anchors, NOT
915
+ // truth-claim nodes (Part 9 v1.5 audit-node carve-out: created_by=system,
916
+ // review_status=confirmed is canon-legal -- the same reasoning as focus/audit
917
+ // nodes). One node per canonical section, idempotent via the insertNode
918
+ // ON CONFLICT(id) upsert (re-birth never duplicates a Section id).
919
+ writeSectionNodes(db, SECTION_NAMES);
920
+
921
+ // room_created event: the canonical signal that birth succeeded. Emitted ONCE
922
+ // at the end of the STEP 2 transaction. Everything in Phase 155 composes on
923
+ // this event.
924
+ memoryEvents.logEvent(db, 'room_created', {
925
+ slug: slug,
926
+ blueprint_family: blueprintFamily,
927
+ sessionId: sessionId,
928
+ created_by: 'system',
929
+ source_path: 'birth:room_created',
930
+ });
931
+
932
+ // Phase 195-03 (FCM-05 side-effect 3): the child->parent NESTED_WITHIN
933
+ // lineage edge, written INSIDE this ACID block so lineage is ATOMIC with
934
+ // birth (today the edge is written by the 169 heal path, not birthRoom). A
935
+ // Room node for the sub-room is inserted first (system-bookkeeping structural
936
+ // anchor). Part 8: properties are ENUM/scalar ONLY (relation enum + parent
937
+ // slug handle + depth scalar); never prose. bornWired only; a failed edge
938
+ // write THROWS so the whole transaction ROLLBACKs (born WIRED or fail CLOSED).
939
+ if (bornWired) {
940
+ try {
941
+ insertNode(
942
+ db,
943
+ 'room:' + slug,
944
+ 'Room',
945
+ JSON.stringify({ room: slug, parent: parent, created_by: 'system' }),
946
+ {
947
+ source_path: 'system:room-node',
948
+ created_by: 'system',
949
+ // R17-02: 'observation' -- system-bookkeeping structural anchor
950
+ // (same class as the umbilical Project/Room handles).
951
+ epistemic_type: 'observation',
952
+ }
953
+ );
954
+ } catch (_e) {
955
+ // Tolerate node-anchor upsert failure; the edges table has no FK, so the
956
+ // NESTED_WITHIN edge below still lands. The verify gate is the authority.
957
+ }
958
+ const nwRes = edges.writeEdge(db, {
959
+ source_id: 'room:' + slug,
960
+ target_id: 'room:' + parent,
961
+ edge_type: 'NESTED_WITHIN',
962
+ properties: { relation: 'nested', parent: parent, depth: bornWiredDepth },
963
+ });
964
+ if (!nwRes || !nwRes.ok) {
965
+ throw new Error('nested_within_write_failed:' + (nwRes ? nwRes.reason : 'no_result'));
966
+ }
967
+ // Test-only fault seam: force a STEP-2 failure to exercise the ACID
968
+ // ROLLBACK + fs cleanup path (no half-born orphan). Never set in prod.
969
+ if (options._faultInject === 'step2') {
970
+ throw new Error('fault_inject_step2');
971
+ }
972
+ }
973
+
974
+ db.exec('COMMIT');
975
+ } catch (e) {
976
+ try { db.exec('ROLLBACK'); } catch (_) {}
977
+ try { db.close(); } catch (_) {}
978
+ // Fail-closed: a born-wired STEP-2 failure must leave NO half-born scaffold.
979
+ if (bornWired) { _bornWiredRollback(roomDir, slug, roomsHomeForBirth, null, parent); }
980
+ return { ok: false, reason: 'birth_transaction_failed', detail: String(e.message || '').slice(0, 200) };
981
+ }
982
+
983
+ // STEP 2 post-commit: logOperatorTransition safe now that room.db exists.
984
+ try {
985
+ spineEvents.logOperatorTransition(roomDir, {
986
+ to: 'BUILD_ROOM',
987
+ write_transition_edge: true,
988
+ sessionId: sessionId,
989
+ });
990
+ } catch (_e) {
991
+ // Tolerate: post-commit transition failure does not abort birth.
992
+ }
993
+
994
+ // --------------------------------------------------------------------------
995
+ // STEP 3: compute-state (writes STATE.md; STATE.md is NEVER authored;
996
+ // RESEARCH Section 3 note).
997
+ //
998
+ // T-155-02-02: shellEscape via double-quoting; reject '..' in roomDir (done
999
+ // above via _pathSafetyReason). Only reach here when the path is safe.
1000
+ // --------------------------------------------------------------------------
1001
+ try {
1002
+ const computeStateScript = path.join(REPO_ROOT, 'scripts', 'compute-state');
1003
+ execSync(
1004
+ 'node ' + JSON.stringify(computeStateScript) + ' ' + JSON.stringify(roomDir),
1005
+ { stdio: 'pipe', cwd: REPO_ROOT }
1006
+ );
1007
+ } catch (_e) {
1008
+ // Tolerate: compute-state failure does not abort birth (STATE.md may be
1009
+ // missing until the next session-start, which calls compute-state again).
1010
+ }
1011
+
1012
+ // --------------------------------------------------------------------------
1013
+ // STEP 4 (COMMIT POINT): room-registry create.
1014
+ //
1015
+ // The atomic tmp+mv registry flip is the LAST structural step. Registry-first
1016
+ // would dangle the active pointer during the structurally-incomplete window.
1017
+ // --------------------------------------------------------------------------
1018
+ try {
1019
+ const registryScript = path.join(REPO_ROOT, 'scripts', 'room-registry');
1020
+ // Determine ROOMS_HOME from the environment (the same source room-registry uses).
1021
+ const roomsHome = process.env.MINDRIAN_ROOMS_HOME || path.join(require('node:os').homedir(), 'MindrianRooms');
1022
+
1023
+ // T-155-02-02: args are JSON.stringify-quoted; the registry script
1024
+ // validates its own inputs. We only pass slug + absolute roomDir +
1025
+ // scalar vname + scalar vstage.
1026
+ execSync(
1027
+ 'bash ' + JSON.stringify(registryScript) +
1028
+ ' ' + JSON.stringify(roomsHome) +
1029
+ ' create' +
1030
+ ' ' + JSON.stringify(slug) +
1031
+ ' ' + JSON.stringify(roomDir) +
1032
+ ' ' + JSON.stringify(vname) +
1033
+ ' ' + JSON.stringify(vstage),
1034
+ { stdio: 'pipe', cwd: REPO_ROOT }
1035
+ );
1036
+
1037
+ // Phase 169-07 additive amendment: thread opts.parent into the registry as a
1038
+ // `parent` field via the existing `update <slug> parent <parent-slug>` verb
1039
+ // (Part 7 reuse -- no new registry verb invented). Only runs when parent is
1040
+ // provided; the omitted case leaves the registry create byte-unchanged.
1041
+ if (parent) {
1042
+ execSync(
1043
+ 'bash ' + JSON.stringify(registryScript) +
1044
+ ' ' + JSON.stringify(roomsHome) +
1045
+ ' update' +
1046
+ ' ' + JSON.stringify(slug) +
1047
+ ' ' + JSON.stringify('parent') +
1048
+ ' ' + JSON.stringify(parent),
1049
+ { stdio: 'pipe', cwd: REPO_ROOT }
1050
+ );
1051
+ }
1052
+
1053
+ // ------------------------------------------------------------------------
1054
+ // Bind the new room into THIS session's write scope (todo slug
1055
+ // 2026-06-28-birthroom-active-room-reverts-next-turn).
1056
+ //
1057
+ // The registry `active` flip above is only ONE of the two write authorities.
1058
+ // Phase 194 (PSB) made the per-session bound SET in session-binding.cjs the
1059
+ // PRIMARY write authority that scripts/write-scope-check.cjs consults
1060
+ // (readSessionBinding -> isRoomInWriteScope). Without ALSO adding the newborn
1061
+ // room to this session's bound SET, that set-membership guard BLOCKS every
1062
+ // write to the just-created room (the binding still lists only the prior
1063
+ // room), so the navigator cannot write into the room birthRoom just made
1064
+ // active. Reuse the shipped session-binding writer (Canon Part 7; no new
1065
+ // binding writer) and keep the write LOCAL (Canon Part 8; zero Brain egress).
1066
+ //
1067
+ // Design (navigator-locked): UNION the new slug into the bound SET and make
1068
+ // it PRIMARY -- do NOT replace the set (a session may legitimately span
1069
+ // rooms). Gate on a REAL interactive session (sessionId present and not the
1070
+ // 'nosession' sentinel), which naturally excludes the graph-self-heal /
1071
+ // migration / backfill callers that birth rooms with no session. This runs
1072
+ // only after the registry create above SUCCEEDED (an execSync throw jumps to
1073
+ // the catch below and skips this). Fire-and-forget: readSessionBinding /
1074
+ // writeSessionBinding never throw, and the whole block is wrapped so a
1075
+ // binding hiccup can NEVER block birth (Larry-never-blocks).
1076
+ if (typeof sessionId === 'string' && sessionId.length > 0 && sessionId !== 'nosession') {
1077
+ try {
1078
+ const sb = require('../session-binding.cjs');
1079
+ const prior = sb.readSessionBinding(sessionId, { home: roomsHome });
1080
+ const priorBound = (prior && Array.isArray(prior.bound)) ? prior.bound : [];
1081
+ const bound = Array.from(new Set(priorBound.concat([slug])));
1082
+ sb.writeSessionBinding(
1083
+ sessionId,
1084
+ { bound: bound, primary: slug, sticky: prior ? prior.sticky : false },
1085
+ { home: roomsHome }
1086
+ );
1087
+ } catch (_eBind) {
1088
+ // Fire-and-forget: a session-binding write failure never blocks birth.
1089
+ }
1090
+ }
1091
+ } catch (_e) {
1092
+ // Tolerate: registry flip failure should not leave a half-born room stranded.
1093
+ // The room.db + files exist; the user can re-run /mos:register if needed.
1094
+ }
1095
+
1096
+ // --------------------------------------------------------------------------
1097
+ // STEP 5: reconcileMemoryArtifacts (cortex + SENS-08 scalars live before
1098
+ // next turn). Re-use the open db handle (still open from STEP 2 post-commit).
1099
+ // --------------------------------------------------------------------------
1100
+ try {
1101
+ // Guard: db may have been closed by an error path; reopen if needed.
1102
+ let reconDb = db;
1103
+ let reopened = false;
1104
+ try {
1105
+ // A simple probe to check if db is still open.
1106
+ reconDb.prepare('SELECT 1').get();
1107
+ } catch (_e) {
1108
+ try {
1109
+ reconDb = roomDbMod.openRoomDb(roomDir);
1110
+ reopened = true;
1111
+ } catch (_e2) {
1112
+ reconDb = null;
1113
+ }
1114
+ }
1115
+ if (reconDb) {
1116
+ // Lazy-require to break the circular dep (see top-of-file comment).
1117
+ let reconcileRunner = null;
1118
+ try {
1119
+ reconcileRunner = require('../memory/reconcile-memory-runner.cjs');
1120
+ } catch (_e2) {
1121
+ // Best-effort: if the runner cannot load, skip reconcile.
1122
+ }
1123
+ if (reconcileRunner && typeof reconcileRunner.reconcileMemoryArtifacts === 'function') {
1124
+ reconcileRunner.reconcileMemoryArtifacts(roomDir, { db: reconDb });
1125
+ }
1126
+ if (reopened) {
1127
+ try { reconDb.close(); } catch (_) {}
1128
+ }
1129
+ }
1130
+ } catch (_e) {
1131
+ // Tolerate: reconcile failure does not abort birth.
1132
+ }
1133
+
1134
+ // --------------------------------------------------------------------------
1135
+ // STEP 6: scratchpadOps.migrateToRoom (drains banked opportunities and
1136
+ // highlights). Gate answers were consumed in STEP 2 via drainBirthGateAnswers;
1137
+ // migrateToRoom is safe to call now without losing them.
1138
+ // --------------------------------------------------------------------------
1139
+ try {
1140
+ scratchpadOps.migrateToRoom(roomDir);
1141
+ } catch (_e) {
1142
+ // Tolerate: scratchpad migration failure does not abort birth.
1143
+ }
1144
+
1145
+ // --------------------------------------------------------------------------
1146
+ // STEP 7: BRAIN derivation enqueue (deferred enrichment).
1147
+ //
1148
+ // The actual Phase 90 enqueue is optional here; the log line makes the intent
1149
+ // explicit and prevents a future plan from forgetting it.
1150
+ // T-155-02-05: STEP 7 is a log line only (no real enqueue in this plan); the
1151
+ // Phase 90 enqueue sends only generic handles (Part 8).
1152
+ // --------------------------------------------------------------------------
1153
+ // BRAIN derivation enqueued for room: log entry here; Phase 90 enqueue picks
1154
+ // up on next session-start when Brain is reachable.
1155
+ process.stdout.write('[room-birth] BRAIN derivation enqueued for room: ' + slug + '\n');
1156
+
1157
+ // Close the db handle (if still open from STEP 2).
1158
+ try {
1159
+ db.prepare('SELECT 1').get(); // probe
1160
+ db.close();
1161
+ } catch (_e) {
1162
+ // Already closed or unavailable; tolerate.
1163
+ }
1164
+
1165
+ // --------------------------------------------------------------------------
1166
+ // Phase 195-03 born-wired FINALIZE (FCM-05): the remaining SEED-001 side-effects
1167
+ // (1 parent STATE.md, 2 child STATE.md, 4 registry lineage, 5 wikilink cache)
1168
+ // wire here (STATE.md exists post-STEP-3; registry exists post-STEP-4; the db
1169
+ // is closed). Side-effect 3 (NESTED_WITHIN) already landed inside the ACID
1170
+ // block and is verified. ANY of the five missing -> compensating rollback so
1171
+ // NO half-born orphan remains (Part 11 R1/R2 fail-closed).
1172
+ // --------------------------------------------------------------------------
1173
+ if (bornWired) {
1174
+ const se = { s1: false, s2: false, s3: false, s4: false, s5: false };
1175
+ se.s3 = _verifyNestedWithin(roomDir, slug, parent);
1176
+ try {
1177
+ se.s2 = _patchChildStateParent(roomDir, parent);
1178
+ se.s4 = _patchRegistryLineage(roomsHomeForBirth, slug, parent, roomDir, bornWiredDepth);
1179
+ se.s1 = _patchParentStateSubroom(parentRoomDir, slug);
1180
+ se.s5 = _invalidateParentWikilinkCache(parentRoomDir);
1181
+ // Test-only fault seam: force one side-effect to read as failed to exercise
1182
+ // the compensating rollback. Never set in production.
1183
+ if (typeof options._faultInject === 'string' && /^s[1-5]$/.test(options._faultInject)) {
1184
+ se[options._faultInject] = false;
1185
+ }
1186
+ } catch (e) {
1187
+ _bornWiredRollback(roomDir, slug, roomsHomeForBirth, null, parent);
1188
+ return {
1189
+ ok: false,
1190
+ reason: 'born_wired_side_effect_failed',
1191
+ detail: String(e.message || '').slice(0, 120),
1192
+ side_effects: se,
1193
+ };
1194
+ }
1195
+ const allWired = se.s1 && se.s2 && se.s3 && se.s4 && se.s5;
1196
+ if (!allWired) {
1197
+ _bornWiredRollback(roomDir, slug, roomsHomeForBirth, null, parent);
1198
+ return { ok: false, reason: 'born_wired_incomplete', side_effects: se };
1199
+ }
1200
+ return {
1201
+ ok: true,
1202
+ roomDir: roomDir,
1203
+ slug: slug,
1204
+ db_created: true,
1205
+ born_wired: true,
1206
+ side_effects: se,
1207
+ };
1208
+ }
1209
+
1210
+ return { ok: true, roomDir: roomDir, slug: slug, db_created: true };
1211
+ }
1212
+
1213
+ module.exports = { birthRoom, drainBirthGateAnswers, writeSectionNodes, SECTION_NAMES };