@mindrian_os/install 1.13.0-beta.11

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 (597) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/.mcp.json +9 -0
  3. package/CHANGELOG.md +3333 -0
  4. package/LICENSE +123 -0
  5. package/README.md +673 -0
  6. package/agents/brain-query.md +80 -0
  7. package/agents/framework-runner.md +237 -0
  8. package/agents/grading.md +188 -0
  9. package/agents/investor.md +128 -0
  10. package/agents/larry-extended.md +135 -0
  11. package/agents/opportunity-scanner.md +91 -0
  12. package/agents/persona-analyst.md +132 -0
  13. package/agents/research.md +89 -0
  14. package/agents/reverse-salient-agent.md +27 -0
  15. package/bin/cli.js +142 -0
  16. package/bin/mindrian-mcp-server.cjs +182 -0
  17. package/bin/mindrian-tools.cjs +765 -0
  18. package/commands/act.md +439 -0
  19. package/commands/admin.md +404 -0
  20. package/commands/analyze-needs.md +42 -0
  21. package/commands/analyze-systems.md +39 -0
  22. package/commands/analyze-timing.md +42 -0
  23. package/commands/auto-explore.md +64 -0
  24. package/commands/beautiful-question.md +40 -0
  25. package/commands/brain-derive.md +78 -0
  26. package/commands/build-knowledge.md +42 -0
  27. package/commands/build-thesis.md +46 -0
  28. package/commands/causal.md +234 -0
  29. package/commands/challenge-assumptions.md +33 -0
  30. package/commands/compare-ventures.md +83 -0
  31. package/commands/dashboard.md +110 -0
  32. package/commands/deep-grade.md +82 -0
  33. package/commands/diagnose.md +58 -0
  34. package/commands/diagnostics.md +151 -0
  35. package/commands/doctor.md +151 -0
  36. package/commands/dominant-designs.md +40 -0
  37. package/commands/explain-decision.md +87 -0
  38. package/commands/explore-domains.md +42 -0
  39. package/commands/explore-futures.md +40 -0
  40. package/commands/explore-trends.md +42 -0
  41. package/commands/export.md +103 -0
  42. package/commands/file-meeting.md +724 -0
  43. package/commands/find-analogies.md +188 -0
  44. package/commands/find-bottlenecks.md +62 -0
  45. package/commands/find-connections.md +76 -0
  46. package/commands/funding.md +81 -0
  47. package/commands/grade.md +203 -0
  48. package/commands/graph.md +128 -0
  49. package/commands/hat-briefing.md +125 -0
  50. package/commands/heal.md +196 -0
  51. package/commands/help.md +399 -0
  52. package/commands/hmi-status.md +172 -0
  53. package/commands/jtbd.md +241 -0
  54. package/commands/leadership.md +73 -0
  55. package/commands/lean-canvas.md +40 -0
  56. package/commands/macro-trends.md +40 -0
  57. package/commands/map-unknowns.md +40 -0
  58. package/commands/memory.md +173 -0
  59. package/commands/models.md +175 -0
  60. package/commands/mos-reason.md +285 -0
  61. package/commands/mullins.md +120 -0
  62. package/commands/new-project.md +481 -0
  63. package/commands/onboard.md +434 -0
  64. package/commands/operator.md +149 -0
  65. package/commands/opportunities.md +144 -0
  66. package/commands/organize.md +497 -0
  67. package/commands/persona.md +198 -0
  68. package/commands/pipeline.md +112 -0
  69. package/commands/present.md +91 -0
  70. package/commands/publish.md +201 -0
  71. package/commands/query.md +124 -0
  72. package/commands/radar.md +72 -0
  73. package/commands/reanalyze.md +91 -0
  74. package/commands/research.md +196 -0
  75. package/commands/room.md +352 -0
  76. package/commands/rooms.md +598 -0
  77. package/commands/root-cause.md +40 -0
  78. package/commands/rs-experts.md +85 -0
  79. package/commands/rs-explain.md +100 -0
  80. package/commands/rs-fetch.md +94 -0
  81. package/commands/rs-thesis.md +85 -0
  82. package/commands/scenario-plan.md +40 -0
  83. package/commands/scheduled-tasks.md +285 -0
  84. package/commands/score-innovation.md +43 -0
  85. package/commands/scout.md +239 -0
  86. package/commands/setup.md +618 -0
  87. package/commands/snapshot.md +147 -0
  88. package/commands/speakers.md +84 -0
  89. package/commands/splash.md +28 -0
  90. package/commands/status.md +75 -0
  91. package/commands/structure-argument.md +42 -0
  92. package/commands/suggest-next.md +80 -0
  93. package/commands/systems-thinking.md +40 -0
  94. package/commands/think-hats.md +42 -0
  95. package/commands/update.md +181 -0
  96. package/commands/user-needs.md +40 -0
  97. package/commands/validate.md +40 -0
  98. package/commands/value-proposition.md +61 -0
  99. package/commands/vault.md +180 -0
  100. package/commands/visualize.md +52 -0
  101. package/commands/whitespace.md +507 -0
  102. package/commands/wiki.md +69 -0
  103. package/hooks/hooks.json +381 -0
  104. package/hooks/run-hook.cmd +64 -0
  105. package/lib/__init__.py +0 -0
  106. package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
  107. package/lib/agents/auto-explore-agent.cjs +1043 -0
  108. package/lib/agents/reverse-salient-agent.cjs +679 -0
  109. package/lib/agents/tension-hook-agent.cjs +544 -0
  110. package/lib/brain/ROOM.md +44 -0
  111. package/lib/brain/chain-recommender.cjs +301 -0
  112. package/lib/chat/chat-context.js +185 -0
  113. package/lib/chat/chat-panel.js +721 -0
  114. package/lib/chat/fabric-chat.cjs +288 -0
  115. package/lib/chat/generative-tools.js +219 -0
  116. package/lib/conversation/ROOM.md +39 -0
  117. package/lib/conversation/classifier-rules.json +38 -0
  118. package/lib/conversation/classifier.cjs +264 -0
  119. package/lib/conversation/operator.cjs +287 -0
  120. package/lib/copy/115-spec-strings.cjs +55 -0
  121. package/lib/core/__init__.py +0 -0
  122. package/lib/core/__nav-stub.cjs +14 -0
  123. package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
  124. package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
  125. package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
  126. package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
  127. package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
  128. package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
  129. package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
  130. package/lib/core/artifact-id.cjs +148 -0
  131. package/lib/core/asset-ops.cjs +151 -0
  132. package/lib/core/auto-commit-throttle.cjs +129 -0
  133. package/lib/core/bearer-token.cjs +199 -0
  134. package/lib/core/brain-client.cjs +865 -0
  135. package/lib/core/brain-derivation-prompts.cjs +326 -0
  136. package/lib/core/brain-derivation-queue.cjs +431 -0
  137. package/lib/core/brain-derivation.cjs +580 -0
  138. package/lib/core/brain-md-schema.cjs +528 -0
  139. package/lib/core/brain-md-staleness.cjs +357 -0
  140. package/lib/core/brain-response-sanitize.cjs +188 -0
  141. package/lib/core/bridge-writer.cjs +477 -0
  142. package/lib/core/chat-context-builder.cjs +253 -0
  143. package/lib/core/cross-room-aggregator.cjs +762 -0
  144. package/lib/core/daily-briefing.cjs +438 -0
  145. package/lib/core/decision-capture.cjs +618 -0
  146. package/lib/core/deep-links.cjs +82 -0
  147. package/lib/core/dispatch-optimizer.cjs +354 -0
  148. package/lib/core/dual-path-detector.cjs +84 -0
  149. package/lib/core/dual-path-detector.test.cjs +334 -0
  150. package/lib/core/exports-log.cjs +79 -0
  151. package/lib/core/feynman-minto-invariants.cjs +605 -0
  152. package/lib/core/folder-memory-async.cjs +338 -0
  153. package/lib/core/folder-memory-shared.cjs +890 -0
  154. package/lib/core/folder-memory.cjs +416 -0
  155. package/lib/core/framework-chain-composer.cjs +411 -0
  156. package/lib/core/frontmatter-schemas.cjs +330 -0
  157. package/lib/core/git-ops.cjs +141 -0
  158. package/lib/core/graph-ops.cjs +258 -0
  159. package/lib/core/hat-persistence.cjs +362 -0
  160. package/lib/core/index.cjs +60 -0
  161. package/lib/core/integration-registry.cjs +232 -0
  162. package/lib/core/intelligence-cascade.cjs +661 -0
  163. package/lib/core/lazygraph-ops.cjs +1057 -0
  164. package/lib/core/lru-cache.cjs +139 -0
  165. package/lib/core/mcp-profiles.cjs +182 -0
  166. package/lib/core/meeting-ops.cjs +54 -0
  167. package/lib/core/memory-ops.cjs +600 -0
  168. package/lib/core/migrations/ROOM.md +33 -0
  169. package/lib/core/migrations/phase-109-nodes-provenance.cjs +339 -0
  170. package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
  171. package/lib/core/model-profiles.cjs +246 -0
  172. package/lib/core/mullins-scaffold.cjs +160 -0
  173. package/lib/core/nav-dial.cjs +316 -0
  174. package/lib/core/navigation/ROOM.md +15 -0
  175. package/lib/core/navigation/explanation.cjs +43 -0
  176. package/lib/core/navigation/focus.cjs +135 -0
  177. package/lib/core/navigation/ingestion.cjs +82 -0
  178. package/lib/core/navigation/insights.cjs +350 -0
  179. package/lib/core/navigation/memory-events.cjs +118 -0
  180. package/lib/core/navigation/neighborhood.cjs +78 -0
  181. package/lib/core/navigation/packet.cjs +182 -0
  182. package/lib/core/navigation/room-home.cjs +127 -0
  183. package/lib/core/navigation/transitions.cjs +82 -0
  184. package/lib/core/navigation-engine-shared.cjs +242 -0
  185. package/lib/core/navigation-engine.cjs +664 -0
  186. package/lib/core/navigation.cjs +60 -0
  187. package/lib/core/nl-graph-queries.cjs +164 -0
  188. package/lib/core/offer-presenter.cjs +406 -0
  189. package/lib/core/opportunity-extractor.cjs +183 -0
  190. package/lib/core/opportunity-ops.cjs +1371 -0
  191. package/lib/core/persona-ops.cjs +537 -0
  192. package/lib/core/persona-taxonomy.cjs +190 -0
  193. package/lib/core/platform-gates.cjs +120 -0
  194. package/lib/core/platform.cjs +257 -0
  195. package/lib/core/proactive-intelligence.cjs +528 -0
  196. package/lib/core/problem-type-router.cjs +315 -0
  197. package/lib/core/reasoning-ops.cjs +639 -0
  198. package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
  199. package/lib/core/room-classifier-strict-mode.cjs +229 -0
  200. package/lib/core/room-db.cjs +127 -0
  201. package/lib/core/room-ops-async.cjs +92 -0
  202. package/lib/core/room-ops-shared.cjs +64 -0
  203. package/lib/core/room-ops-sync.cjs +70 -0
  204. package/lib/core/room-ops.cjs +32 -0
  205. package/lib/core/room-type-detector.cjs +386 -0
  206. package/lib/core/rs-brain-substrate-prompts.cjs +129 -0
  207. package/lib/core/rs-brain-substrate.cjs +570 -0
  208. package/lib/core/rs-breakthrough-scorer.cjs +255 -0
  209. package/lib/core/rs-canon-violations.cjs +82 -0
  210. package/lib/core/rs-chain-feeder.cjs +343 -0
  211. package/lib/core/rs-commercial-assessor.cjs +280 -0
  212. package/lib/core/rs-differential-scorer.cjs +376 -0
  213. package/lib/core/rs-domain-analyzer.cjs +385 -0
  214. package/lib/core/rs-egress-prompts.cjs +113 -0
  215. package/lib/core/rs-egress-telemetry.cjs +225 -0
  216. package/lib/core/rs-egress-violations.cjs +53 -0
  217. package/lib/core/rs-expert-mapper.cjs +467 -0
  218. package/lib/core/rs-fetcher-academic.cjs +697 -0
  219. package/lib/core/rs-fetcher-experts.cjs +314 -0
  220. package/lib/core/rs-fetcher-industry.cjs +731 -0
  221. package/lib/core/rs-fetcher-patents.cjs +564 -0
  222. package/lib/core/rs-innovation-classifier.cjs +194 -0
  223. package/lib/core/rs-mind-map.cjs +656 -0
  224. package/lib/core/rs-neo4j-writer.cjs +388 -0
  225. package/lib/core/rs-nl-to-query.cjs +425 -0
  226. package/lib/core/rs-pinecone-bridge.cjs +303 -0
  227. package/lib/core/rs-preprocessor.cjs +350 -0
  228. package/lib/core/rs-query-matrix.cjs +316 -0
  229. package/lib/core/rs-query-to-text.cjs +438 -0
  230. package/lib/core/rs-sqlite-mirror.cjs +443 -0
  231. package/lib/core/rs-thesis-generator.cjs +188 -0
  232. package/lib/core/rs_cache.py +479 -0
  233. package/lib/core/rs_corpus.py +468 -0
  234. package/lib/core/rs_hybrid.py +586 -0
  235. package/lib/core/rs_math.py +287 -0
  236. package/lib/core/rs_rooms.py +193 -0
  237. package/lib/core/scheduled-scanner.cjs +463 -0
  238. package/lib/core/scratchpad-ops.cjs +201 -0
  239. package/lib/core/section-8-trace-schema.cjs +138 -0
  240. package/lib/core/section-registry.cjs +111 -0
  241. package/lib/core/session-state.cjs +144 -0
  242. package/lib/core/shallow-doc-parser.cjs +174 -0
  243. package/lib/core/shallow-doc-parser.test.cjs +226 -0
  244. package/lib/core/skill-activation-router.cjs +284 -0
  245. package/lib/core/state-ops.cjs +46 -0
  246. package/lib/core/statusline-cache.cjs +266 -0
  247. package/lib/core/token-estimator.cjs +348 -0
  248. package/lib/core/user-archetype.cjs +239 -0
  249. package/lib/core/user-md-ops.cjs +524 -0
  250. package/lib/core/visual-ops.cjs +624 -0
  251. package/lib/core/write-lock.cjs +149 -0
  252. package/lib/graph/canvas-graph.js +467 -0
  253. package/lib/graph/constellation-config.cjs +299 -0
  254. package/lib/graph/graph-detail-panel.js +165 -0
  255. package/lib/hmi/ROOM.md +47 -0
  256. package/lib/hmi/across-session-memory.cjs +604 -0
  257. package/lib/hmi/cross-room-memory.cjs +575 -0
  258. package/lib/hmi/decoy-tier.cjs +395 -0
  259. package/lib/hmi/jtbd-classifier.cjs +219 -0
  260. package/lib/hmi/jtbd-state.cjs +199 -0
  261. package/lib/hmi/jtbd-taxonomy.json +392 -0
  262. package/lib/hmi/selector-dispatcher.cjs +546 -0
  263. package/lib/hmi/selector-telemetry.cjs +263 -0
  264. package/lib/hmi/shape-f0-renderer.cjs +139 -0
  265. package/lib/hmi/shape-f1-fallback.cjs +80 -0
  266. package/lib/hmi/shape-f1-renderer.cjs +138 -0
  267. package/lib/hmi/shape-f2-renderer.cjs +132 -0
  268. package/lib/hmi/shape-f3-renderer.cjs +66 -0
  269. package/lib/hmi/shape-f4-renderer.cjs +72 -0
  270. package/lib/hmi/shape-f5-renderer.cjs +155 -0
  271. package/lib/hmi/shape-f6-plan-review-renderer.cjs +312 -0
  272. package/lib/hmi/shape-f6-renderer.cjs +144 -0
  273. package/lib/hmi/shape-g-renderer.cjs +219 -0
  274. package/lib/hmi/shape-h-renderer.cjs +222 -0
  275. package/lib/hmi/tier-check.cjs +63 -0
  276. package/lib/import/PRECONDITIONS.md +41 -0
  277. package/lib/import/branding.cjs +210 -0
  278. package/lib/import/branding.test.cjs +235 -0
  279. package/lib/import/classifications-sync.cjs +104 -0
  280. package/lib/import/classifications-sync.test.cjs +129 -0
  281. package/lib/import/enricher.cjs +296 -0
  282. package/lib/import/enricher.test.cjs +273 -0
  283. package/lib/import/integration.test.cjs +376 -0
  284. package/lib/import/manifest.cjs +129 -0
  285. package/lib/import/manifest.schema.json +185 -0
  286. package/lib/import/manifest.test.cjs +123 -0
  287. package/lib/import/meeting-detector.cjs +92 -0
  288. package/lib/import/meeting-detector.test.cjs +100 -0
  289. package/lib/import/person-detector.cjs +229 -0
  290. package/lib/import/person-detector.test.cjs +149 -0
  291. package/lib/import/report.cjs +186 -0
  292. package/lib/import/report.test.cjs +186 -0
  293. package/lib/import/room-md-scaffolder.cjs +49 -0
  294. package/lib/import/router.cjs +224 -0
  295. package/lib/import/router.test.cjs +356 -0
  296. package/lib/import/run-all-tests.cjs +36 -0
  297. package/lib/import/smoke-test.cjs +213 -0
  298. package/lib/import/smoke-test.test.cjs +148 -0
  299. package/lib/import/test-fixtures/collision-vault/preexisting-room/STATE.md +8 -0
  300. package/lib/import/test-fixtures/collision-vault/preexisting-room/problem-definition/onboarding/onboarding.md +7 -0
  301. package/lib/import/test-fixtures/collision-vault/source/onboarding.md +5 -0
  302. package/lib/import/test-fixtures/obsidian-vault/.obsidian/workspace.json +1 -0
  303. package/lib/import/test-fixtures/obsidian-vault/notes/with-wikilinks.md +4 -0
  304. package/lib/import/test-fixtures/tiny-vault/notes/2026-01-15-team-sync.md +9 -0
  305. package/lib/import/test-fixtures/tiny-vault/notes/empty.md +3 -0
  306. package/lib/import/test-fixtures/tiny-vault/notes/onboarding.md +5 -0
  307. package/lib/import/test-fixtures/tiny-vault/notes/pricing.md +5 -0
  308. package/lib/import/test-fixtures/tiny-vault/notes/random.md +4 -0
  309. package/lib/import/undo.test.cjs +199 -0
  310. package/lib/import/vault-scanner.cjs +105 -0
  311. package/lib/import/vault-scanner.test.cjs +67 -0
  312. package/lib/mcp/app-html/dashboard.html +316 -0
  313. package/lib/mcp/app-html/graph.html +428 -0
  314. package/lib/mcp/app-html/mindrian-platform.html +1841 -0
  315. package/lib/mcp/app-html/wiki.html +383 -0
  316. package/lib/mcp/app-views.cjs +322 -0
  317. package/lib/mcp/brain-router.cjs +418 -0
  318. package/lib/mcp/capability-registry.cjs +62 -0
  319. package/lib/mcp/larry-context.cjs +46 -0
  320. package/lib/mcp/larry-server-instructions.md +114 -0
  321. package/lib/mcp/pipeline-state.cjs +275 -0
  322. package/lib/mcp/prompts.cjs +302 -0
  323. package/lib/mcp/resources.cjs +227 -0
  324. package/lib/mcp/session-catchup.cjs +327 -0
  325. package/lib/mcp/surface-detect.cjs +75 -0
  326. package/lib/mcp/tool-router.cjs +1034 -0
  327. package/lib/memory/aaak-compress.cjs +403 -0
  328. package/lib/memory/aaak-compress.test.cjs +288 -0
  329. package/lib/memory/async-artifact-auto-commit.test.cjs +223 -0
  330. package/lib/memory/bearer-token.test.cjs +315 -0
  331. package/lib/memory/brain-cache-lru.test.cjs +259 -0
  332. package/lib/memory/brain-client-query-shape.test.cjs +160 -0
  333. package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
  334. package/lib/memory/brain-derivation-queue.test.cjs +539 -0
  335. package/lib/memory/brain-derivation.test.cjs +634 -0
  336. package/lib/memory/brain-derive-command.test.cjs +534 -0
  337. package/lib/memory/brain-md-invariants-validator.test.cjs +704 -0
  338. package/lib/memory/brain-md-schema.test.cjs +467 -0
  339. package/lib/memory/brain-md-staleness.test.cjs +525 -0
  340. package/lib/memory/brain-server-resolution.test.cjs +314 -0
  341. package/lib/memory/chain-recommender.test.cjs +233 -0
  342. package/lib/memory/chat-context.test.cjs +128 -0
  343. package/lib/memory/command-registry.test.cjs +220 -0
  344. package/lib/memory/cross-room-aggregator.test.cjs +909 -0
  345. package/lib/memory/dashboard-server.test.cjs +256 -0
  346. package/lib/memory/debouncer-drain-at-prompt.test.cjs +389 -0
  347. package/lib/memory/decision-capture.test.cjs +632 -0
  348. package/lib/memory/decision-capture.worker.cjs +70 -0
  349. package/lib/memory/explain-decision-command.test.cjs +521 -0
  350. package/lib/memory/explain-decision-footer.test.cjs +316 -0
  351. package/lib/memory/explored-materials-store.cjs +392 -0
  352. package/lib/memory/feynman-minto-guardian.test.cjs +736 -0
  353. package/lib/memory/feynman-minto-invariants.test.cjs +511 -0
  354. package/lib/memory/feynman-prompts-drift.test.cjs +144 -0
  355. package/lib/memory/feynman-prompts.cjs +151 -0
  356. package/lib/memory/feynman-prompts.test.cjs +96 -0
  357. package/lib/memory/folder-memory-quadruple.test.cjs +548 -0
  358. package/lib/memory/folder-memory.test.cjs +503 -0
  359. package/lib/memory/framework-chain-composer.test.cjs +515 -0
  360. package/lib/memory/frontmatter-schema-validator.test.cjs +290 -0
  361. package/lib/memory/heal-command.test.cjs +604 -0
  362. package/lib/memory/index-artifact-transaction.test.cjs +333 -0
  363. package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +122 -0
  364. package/lib/memory/mcp-input-validation.test.cjs +240 -0
  365. package/lib/memory/mcp-server-brain-deps.test.cjs +270 -0
  366. package/lib/memory/mcp-stack-fallback.test.cjs +433 -0
  367. package/lib/memory/minto-debouncer.test.cjs +407 -0
  368. package/lib/memory/minto-debouncer.worker.cjs +46 -0
  369. package/lib/memory/minto-migration-v88.test.cjs +265 -0
  370. package/lib/memory/minto-schema-v88.test.cjs +390 -0
  371. package/lib/memory/mos-status-renderer.test.cjs +631 -0
  372. package/lib/memory/narrative-schema.cjs +376 -0
  373. package/lib/memory/narrative-schema.test.cjs +209 -0
  374. package/lib/memory/nav-dial.test.cjs +414 -0
  375. package/lib/memory/navigation-engine-core.test.cjs +722 -0
  376. package/lib/memory/navigation-invariants.test.cjs +483 -0
  377. package/lib/memory/offer-presenter.test.cjs +554 -0
  378. package/lib/memory/on-stop-snapshot.test.cjs +404 -0
  379. package/lib/memory/pending-tension-store.cjs +373 -0
  380. package/lib/memory/post-compact-reinjection.test.cjs +854 -0
  381. package/lib/memory/post-write-triple.test.cjs +317 -0
  382. package/lib/memory/pre-compact-snapshot.test.cjs +495 -0
  383. package/lib/memory/problem-type-router.test.cjs +656 -0
  384. package/lib/memory/query-efficiency-telemetry.test.cjs +370 -0
  385. package/lib/memory/recompile-room-references.test.cjs +392 -0
  386. package/lib/memory/recompile-room-references.worker.cjs +42 -0
  387. package/lib/memory/record-decision-dual-write.test.cjs +454 -0
  388. package/lib/memory/room-classifier-strict-mode.test.cjs +417 -0
  389. package/lib/memory/room-minto-hook.test.cjs +398 -0
  390. package/lib/memory/rs-discovery-engine.test.cjs +323 -0
  391. package/lib/memory/run-feynman-tests.cjs +1247 -0
  392. package/lib/memory/security-trifecta.test.cjs +312 -0
  393. package/lib/memory/session-start-brain-staleness.test.cjs +363 -0
  394. package/lib/memory/session-start-triple-injection.test.cjs +514 -0
  395. package/lib/memory/sessionstart-banner-formatter.cjs +318 -0
  396. package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
  397. package/lib/memory/skill-activation-router.test.cjs +419 -0
  398. package/lib/memory/stamp-artifact-write.test.cjs +304 -0
  399. package/lib/memory/statusline-active-room.test.cjs +315 -0
  400. package/lib/memory/statusline-minto-segment.test.cjs +292 -0
  401. package/lib/memory/sync-async-entry-points.test.cjs +204 -0
  402. package/lib/memory/test-bridge-writer-enhanced.cjs +452 -0
  403. package/lib/memory/test-rs-brain-substrate-shape.cjs +529 -0
  404. package/lib/memory/test-rs-brain-substrate.cjs +636 -0
  405. package/lib/memory/test-rs-breakthrough-scorer.cjs +375 -0
  406. package/lib/memory/test-rs-canon-violations.cjs +218 -0
  407. package/lib/memory/test-rs-chain-feeder-core.cjs +344 -0
  408. package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +297 -0
  409. package/lib/memory/test-rs-commercial-assessor.cjs +385 -0
  410. package/lib/memory/test-rs-differential-scorer.cjs +480 -0
  411. package/lib/memory/test-rs-discovery-engine.cjs +603 -0
  412. package/lib/memory/test-rs-domain-analyzer.cjs +492 -0
  413. package/lib/memory/test-rs-egress-primitives.cjs +420 -0
  414. package/lib/memory/test-rs-expert-mapper.cjs +547 -0
  415. package/lib/memory/test-rs-explain-command.cjs +443 -0
  416. package/lib/memory/test-rs-fetcher-academic.cjs +848 -0
  417. package/lib/memory/test-rs-fetcher-experts.cjs +496 -0
  418. package/lib/memory/test-rs-fetcher-industry.cjs +702 -0
  419. package/lib/memory/test-rs-fetcher-patents.cjs +674 -0
  420. package/lib/memory/test-rs-innovation-classifier.cjs +301 -0
  421. package/lib/memory/test-rs-mind-map.cjs +646 -0
  422. package/lib/memory/test-rs-neo4j-writer.cjs +518 -0
  423. package/lib/memory/test-rs-nl-to-query.cjs +449 -0
  424. package/lib/memory/test-rs-pinecone-bridge.cjs +277 -0
  425. package/lib/memory/test-rs-preprocessor.cjs +433 -0
  426. package/lib/memory/test-rs-query-matrix.cjs +391 -0
  427. package/lib/memory/test-rs-query-to-text.cjs +551 -0
  428. package/lib/memory/test-rs-sqlite-mirror.cjs +649 -0
  429. package/lib/memory/test-rs-thesis-generator.cjs +360 -0
  430. package/lib/memory/triple-context-formatter.cjs +473 -0
  431. package/lib/memory/triple-context-formatter.test.cjs +442 -0
  432. package/lib/memory/user-md-persona.test.cjs +565 -0
  433. package/lib/memory/userpromptsubmit-integration.test.cjs +690 -0
  434. package/lib/memory/validators/README.md +157 -0
  435. package/lib/memory/validators/brain-md-invariants.cjs +475 -0
  436. package/lib/memory/validators/brain-substrate-invariants.cjs +285 -0
  437. package/lib/memory/validators/external-academic-invariants.cjs +249 -0
  438. package/lib/memory/validators/external-industry-invariants.cjs +271 -0
  439. package/lib/memory/validators/external-patents-invariants.cjs +266 -0
  440. package/lib/memory/validators/minto-invariants.cjs +62 -0
  441. package/lib/memory/validators/navigation-invariants.cjs +340 -0
  442. package/lib/memory/validators/queue-health.cjs +95 -0
  443. package/lib/memory/validators/snapshot-integrity.cjs +129 -0
  444. package/lib/memory/validators/stale-lifecycle.cjs +116 -0
  445. package/lib/memory/vault-section-minto-generator-atomic.test.cjs +556 -0
  446. package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +73 -0
  447. package/lib/memory/write-lock-atomic.test.cjs +137 -0
  448. package/lib/memory/write-lock-atomic.worker.cjs +55 -0
  449. package/lib/parity/check-parity.cjs +83 -0
  450. package/lib/presentation/presentation-server.cjs +101 -0
  451. package/lib/presentation/presentation-watcher.cjs +123 -0
  452. package/lib/quickview/hub-server.cjs +719 -0
  453. package/lib/quickview/server.cjs +533 -0
  454. package/lib/render/JTBD-PALETTES.md +145 -0
  455. package/lib/render/ROOM.md +59 -0
  456. package/lib/render/render-v2.cjs +486 -0
  457. package/lib/render/render-v2.test.cjs +267 -0
  458. package/lib/render/render.cjs +65 -0
  459. package/lib/state/ROOM.md +46 -0
  460. package/lib/state/state-md-parser.cjs +215 -0
  461. package/lib/statusline/ROOM.md +38 -0
  462. package/lib/statusline/banner-suppression.cjs +50 -0
  463. package/lib/statusline/surface-detect.cjs +85 -0
  464. package/lib/update-bootstrap.sh.template +145 -0
  465. package/lib/vault/frontmatter-schema.cjs +297 -0
  466. package/lib/vault/room-scanner.cjs +352 -0
  467. package/lib/vault/wikilink-builder.cjs +231 -0
  468. package/lib/vault/wikilink-builder.test.cjs +182 -0
  469. package/lib/wiki/graph-links.cjs +281 -0
  470. package/lib/wiki/page-renderer.cjs +229 -0
  471. package/lib/wiki/wiki-chat.cjs +81 -0
  472. package/lib/wiki/wiki-layout.cjs +1459 -0
  473. package/lib/wiki/wiki-search.cjs +142 -0
  474. package/lib/wiki/wiki-server.cjs +678 -0
  475. package/lib/wiki/wiki-watcher.cjs +105 -0
  476. package/lib/workflow/ROOM.md +47 -0
  477. package/lib/workflow/command-resolver.cjs +155 -0
  478. package/lib/workflow/command-resolver.test.cjs +235 -0
  479. package/package.json +44 -0
  480. package/pipelines/analogy/01-decompose.md +80 -0
  481. package/pipelines/analogy/02-abstract.md +87 -0
  482. package/pipelines/analogy/03-search.md +135 -0
  483. package/pipelines/analogy/04-transfer.md +101 -0
  484. package/pipelines/analogy/05-validate.md +106 -0
  485. package/pipelines/analogy/CHAIN.md +56 -0
  486. package/pipelines/discovery/01-explore-domains.md +44 -0
  487. package/pipelines/discovery/02-think-hats.md +50 -0
  488. package/pipelines/discovery/03-analyze-needs.md +54 -0
  489. package/pipelines/discovery/CHAIN.md +37 -0
  490. package/pipelines/thesis/01-structure-argument.md +45 -0
  491. package/pipelines/thesis/02-challenge-assumptions.md +48 -0
  492. package/pipelines/thesis/03-build-thesis.md +54 -0
  493. package/pipelines/thesis/CHAIN.md +37 -0
  494. package/references/brain/causal-directives.md +91 -0
  495. package/references/brain/causal-enrichment.cypher +165 -0
  496. package/references/brain/command-triggers-schema.md +226 -0
  497. package/references/brain/graph-architecture.md +317 -0
  498. package/references/brain/query-patterns.md +460 -0
  499. package/references/brain/room-hierarchy-schema.md +218 -0
  500. package/references/brain/schema.md +76 -0
  501. package/references/capability-radar/capabilities-index.md +241 -0
  502. package/references/capability-radar/changelog-cache.md +81 -0
  503. package/references/causal/causal-schema.md +103 -0
  504. package/references/design/email-template-standard.md +155 -0
  505. package/references/design/graph-visualization-standard.md +178 -0
  506. package/references/document-generation.md +179 -0
  507. package/references/hsi/HSI-TOOLS-REFERENCE.md +222 -0
  508. package/references/import-config.md +141 -0
  509. package/references/integrations/detection-patterns.md +101 -0
  510. package/references/meeting/artifact-template.md +377 -0
  511. package/references/meeting/cross-meeting-intelligence.md +216 -0
  512. package/references/meeting/cross-relationship-patterns.md +202 -0
  513. package/references/meeting/live-join-interface.md +244 -0
  514. package/references/meeting/section-mapping.md +192 -0
  515. package/references/meeting/segment-classification.md +258 -0
  516. package/references/meeting/speaker-profile-template.md +219 -0
  517. package/references/meeting/summary-template.md +348 -0
  518. package/references/meeting/transcript-patterns.md +226 -0
  519. package/references/methodology/analyze-needs.md +135 -0
  520. package/references/methodology/analyze-systems.md +121 -0
  521. package/references/methodology/analyze-timing.md +149 -0
  522. package/references/methodology/beautiful-question.md +109 -0
  523. package/references/methodology/build-knowledge.md +161 -0
  524. package/references/methodology/build-thesis.md +237 -0
  525. package/references/methodology/challenge-assumptions.md +127 -0
  526. package/references/methodology/diagnose.md +169 -0
  527. package/references/methodology/dominant-designs.md +212 -0
  528. package/references/methodology/explore-domains.md +147 -0
  529. package/references/methodology/explore-futures.md +163 -0
  530. package/references/methodology/explore-trends.md +129 -0
  531. package/references/methodology/find-bottlenecks.md +131 -0
  532. package/references/methodology/grade.md +211 -0
  533. package/references/methodology/index.md +97 -0
  534. package/references/methodology/leadership.md +200 -0
  535. package/references/methodology/lean-canvas.md +116 -0
  536. package/references/methodology/macro-trends.md +192 -0
  537. package/references/methodology/map-unknowns.md +137 -0
  538. package/references/methodology/mullins-7-domains.md +104 -0
  539. package/references/methodology/problem-types.md +65 -0
  540. package/references/methodology/root-cause.md +178 -0
  541. package/references/methodology/sapphire-encoding.md +355 -0
  542. package/references/methodology/scenario-plan.md +178 -0
  543. package/references/methodology/score-innovation.md +154 -0
  544. package/references/methodology/structure-argument.md +158 -0
  545. package/references/methodology/systems-thinking.md +159 -0
  546. package/references/methodology/think-hats.md +147 -0
  547. package/references/methodology/triz-matrix.json +751 -0
  548. package/references/methodology/triz-principles.md +501 -0
  549. package/references/methodology/user-needs.md +199 -0
  550. package/references/methodology/validate.md +163 -0
  551. package/references/methodology/value-proposition.md +244 -0
  552. package/references/opportunities/funding-lifecycle.md +103 -0
  553. package/references/opportunities/grant-api-patterns.md +99 -0
  554. package/references/opportunities/opportunity-template.md +84 -0
  555. package/references/personality/assessment-philosophy.md +72 -0
  556. package/references/personality/lexicon.md +100 -0
  557. package/references/personality/persona-chains.md +56 -0
  558. package/references/personality/pws-lexicon-full.md +499 -0
  559. package/references/personality/voice-dna.md +156 -0
  560. package/references/personas/hat-perspectives.md +76 -0
  561. package/references/personas/persona-template.md +63 -0
  562. package/references/pipeline/act-output-contract.md +88 -0
  563. package/references/pipeline/chains-index.md +39 -0
  564. package/references/pws-profile-generation.md +79 -0
  565. package/references/reasoning/reasoning-schema.md +143 -0
  566. package/references/reasoning/reasoning-template.md +68 -0
  567. package/references/reasoning/run-template.md +38 -0
  568. package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +209 -0
  569. package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +375 -0
  570. package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +575 -0
  571. package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +272 -0
  572. package/references/taxonomy/TAXONOMY.md +192 -0
  573. package/references/templates/MINTO.md +36 -0
  574. package/references/user-research/2026-04-05-leah-lawrence-session.md +202 -0
  575. package/references/vault-kit/README.md +35 -0
  576. package/references/vault-kit/app.json +12 -0
  577. package/references/vault-kit/appearance.json +12 -0
  578. package/references/vault-kit/graph.json +35 -0
  579. package/references/vault-kit/snippets/mindrian-destijl.css +297 -0
  580. package/references/vault-kit/templates/new-artifact.md +37 -0
  581. package/references/vault-kit/templates/new-meeting-note.md +35 -0
  582. package/references/vault-kit/templates/new-team-profile.md +29 -0
  583. package/references/vault-kit/templates/new-xref.md +35 -0
  584. package/references/visual/symbol-system.md +151 -0
  585. package/skills/MOSDeckEngine/SKILL.md +325 -0
  586. package/skills/brain-connector/SKILL.md +114 -0
  587. package/skills/context-engine/SKILL.md +147 -0
  588. package/skills/conversation-mode/SKILL.md +102 -0
  589. package/skills/larry-personality/SKILL.md +219 -0
  590. package/skills/larry-personality/framework-chains.md +92 -0
  591. package/skills/larry-personality/mode-engine.md +185 -0
  592. package/skills/mullins-scaffold/SKILL.md +61 -0
  593. package/skills/mullins-scaffold/scaffold.json +146 -0
  594. package/skills/pws-methodology/SKILL.md +49 -0
  595. package/skills/room-passive/SKILL.md +165 -0
  596. package/skills/room-proactive/SKILL.md +250 -0
  597. package/skills/ui-system/SKILL.md +277 -0
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: opportunities
3
+ description: Discover and manage grants in the Opportunity Bank
4
+ argument-hint: [list|add|scan]
5
+ body_shape: E (Action Report)
6
+ serves_jtbd: ["explore"]
7
+ allowed-tools:
8
+ - Read
9
+ - Write
10
+ - Bash
11
+ - Glob
12
+ - Agent
13
+ - WebSearch
14
+ ---
15
+
16
+ # /mos:opportunities -- Grant Discovery + Opportunity Management
17
+
18
+ > Context-driven grant discovery. Larry reads your room, generates search queries, and presents opportunities for you to confirm or reject.
19
+
20
+ ## How Opportunities Get Banked
21
+
22
+ Opportunities enter the bank through two paths:
23
+
24
+ 1. **Grant discovery** (`/mos:opportunities scan`) - external funding opportunities from Grants.gov and Simpler Grants, filed after user confirmation
25
+ 2. **Intelligence cascade** (automatic) - every methodology command that triggers analyze-room extracts gaps, convergences, and contradictions as bankable opportunities. These are filed automatically with no user action needed.
26
+
27
+ Every opportunity carries a Knight position (risk vs uncertainty vs mixed) and a confidence score. Risk = known problem with quantifiable odds. Uncertainty = unknown problem requiring exploration. Mixed = contradiction that could go either way.
28
+
29
+ ## Subcommands
30
+
31
+ ### scan
32
+
33
+ Run a context-driven grant discovery scan.
34
+
35
+ **How it works:**
36
+ 1. Larry reads your room's STATE.md (domain, geography, venture stage) and problem-definition/ for context
37
+ 2. Generates search queries from YOUR room data (not hardcoded searches)
38
+ 3. Searches Grants.gov and Simpler Grants APIs concurrently
39
+ 4. Deduplicates and scores results by relevance to your room
40
+ 5. Presents results in a table with relevance reasoning
41
+
42
+ **After presenting results, ask the user:**
43
+
44
+ > I found {N} opportunities relevant to your venture. Here are the top matches:
45
+ >
46
+ > | # | Funder | Program | Amount | Deadline | Relevance |
47
+ > |---|--------|---------|--------|----------|-----------|
48
+ > | 1 | ... | ... | ... | ... | 0.85 |
49
+ >
50
+ > **What would you like to do?**
51
+ > - **File all** -- I'll file all opportunities to your opportunity-bank
52
+ > - **Review individually** -- I'll walk through each one for your decision
53
+ > - **Skip** -- No opportunities filed
54
+
55
+ This is the **confirm-first pattern**: Larry presents, user decides. Nothing is filed automatically.
56
+
57
+ **CLI:** `mindrian-tools.cjs opportunity scan [roomDir]`
58
+ **MCP:** `data_room` tool with command `scan-opportunities`
59
+
60
+ ### list
61
+
62
+ Show filed opportunities with optional filters (--domain, --knight, --min-confidence).
63
+
64
+ **Display format:**
65
+
66
+ > | # | Source | Program/Problem | Knight Position | Confidence | Deadline | Status |
67
+ > |---|--------|-----------------|-----------------|------------|----------|--------|
68
+ > | 1 | NIH | SBIR Phase I | risk | 0.85 | 2026-06-01 | filed |
69
+ > | 2 | diagnose | Missing structural coverage in market-analysis | uncertainty | 0.8 | - | banked |
70
+
71
+ This unified table works for both grant-scanned and cascade-extracted opportunities:
72
+ - Grant opportunities: Source = funder name, Knight Position = 'risk' (grants are known risk), Confidence = relevance_score
73
+ - Cascade opportunities: Source = source_framework, Knight Position = from schema, Confidence = from schema
74
+
75
+ ### Filter Flags
76
+
77
+ The list subcommand supports filter flags to narrow results:
78
+
79
+ - `--domain <name>` -- Filter by domain (partial match, case-insensitive). Example: `--domain market-analysis`
80
+ - `--knight <position>` -- Filter by Knight position: `risk`, `uncertainty`, or `mixed`
81
+ - `--min-confidence <N>` -- Filter by minimum confidence score (0.0-1.0). Example: `--min-confidence 0.7`
82
+
83
+ Flags can be combined: `--domain healthcare --knight uncertainty --min-confidence 0.5`
84
+
85
+ **CLI:** `mindrian-tools.cjs opportunity list [roomDir] --domain X --knight Y --min-confidence N`
86
+ **MCP:** `data_room` tool with command `list-opportunities`
87
+
88
+ ### file
89
+
90
+ File a specific opportunity after scan confirmation. Used internally after user confirms from scan results.
91
+
92
+ **CLI:** `mindrian-tools.cjs opportunity file [roomDir] [dataJson]`
93
+ **MCP:** `data_room` tool with command `file-opportunity`
94
+
95
+ ### bank
96
+
97
+ List all banked opportunities extracted from methodology commands (not grant scans).
98
+
99
+ These are opportunities discovered by the intelligence cascade - gaps, convergences, and contradictions that represent bankable problems.
100
+
101
+ **Display format:**
102
+
103
+ > Here are the opportunities your Data Room intelligence has banked:
104
+ >
105
+ > | # | Problem | Domain | Knight Position | Confidence | Source | Status |
106
+ > |---|---------|--------|-----------------|------------|--------|--------|
107
+ > | 1 | Missing structural coverage in market-analysis | market-analysis | uncertainty | 0.8 | diagnose | banked |
108
+ >
109
+ > **Actions:**
110
+ > - **View details** - I'll show the full evidence and mirror solution
111
+ > - **Pursue** - promote to funding pipeline
112
+ > - **Reject** - capture your reason (this teaches me)
113
+
114
+ **CLI:** `mindrian-tools.cjs opportunity bank [roomDir]`
115
+ **MCP:** `data_room` tool with command `bank-opportunities`
116
+
117
+ ## Rejection Handling
118
+
119
+ When the user rejects an opportunity, **capture the reason**. Rejection is data (per CLAUDE.md architecture).
120
+
121
+ Ask: "Why are you passing on this one? (This helps me find better matches next time.)"
122
+
123
+ The reason is recorded in opportunity-bank/STATE.md and informs future scans.
124
+
125
+ ## Insufficient Context
126
+
127
+ If the room lacks sufficient context for grant discovery (no domain_keywords, sparse problem-definition), Larry should explain:
128
+
129
+ > "I need more context about your venture to search for relevant grants. Your room needs:
130
+ > - `domain_keywords` in STATE.md (e.g., artificial-intelligence, healthcare)
131
+ > - Content in problem-definition/ describing your domain
132
+ > - `geography` in STATE.md for eligibility matching
133
+ >
134
+ > Run /mos:room update to add this context, then try scanning again."
135
+
136
+ ## Discovery is Context-Driven
137
+
138
+ The key insight: Larry does NOT search for "AI grants" because someone hardcoded that. Larry searches for grants that match THIS room's specific problem domain, geography, team profile, and venture stage. Every room gets different search queries.
139
+
140
+ The room context generates the search queries:
141
+ - `domain_keywords` --> API keyword parameters and funding categories
142
+ - `geography` --> eligibility filters
143
+ - `venture_stage` --> grant type matching (SBIR for pre-revenue, etc.)
144
+ - `problem-definition/` content --> additional domain terms
@@ -0,0 +1,497 @@
1
+ ---
2
+ name: organize
3
+ description: Navigate room hierarchy with graph-aware tree
4
+ argument-hint: [tree|propose|compound]
5
+ body_shape: B (Semantic Tree)
6
+ serves_jtbd: ["audit-room"]
7
+ ui_reference: skills/ui-system/SKILL.md
8
+ allowed-tools:
9
+ - Read
10
+ - Write
11
+ - Bash
12
+ - Glob
13
+ - Grep
14
+ ---
15
+
16
+ # /mos:organize
17
+
18
+ You are Larry. This command manages the room portfolio hierarchy using **Body Shape B (Semantic Tree)** per the UI Ruling System.
19
+
20
+ Room organization is a wicked problem (Rittel & Webber 1973). Multiple valid groupings exist simultaneously. Decisions are never final -- they feed future proposals. The system gets smarter from every GROUP, SEPARATE, and DEFER decision.
21
+
22
+ ## UI Format
23
+
24
+ - **Body Shape:** B (Semantic Tree) for all subcommands
25
+ - **Reference:** `skills/ui-system/SKILL.md`
26
+ - All subcommands follow the 4-zone anatomy: Header Panel, Content Body, Intelligence Strip (cross-room signals), Action Footer (NEVER omitted)
27
+ - **Symbols:** Only the 12 approved glyphs. No emoji. No em-dashes.
28
+ - **Nesting depth:** Max 3 levels (root / group / room). Never deeper.
29
+
30
+ ## Routing
31
+
32
+ Parse user input to determine which subcommand to execute. If no subcommand is given, default to `tree`.
33
+
34
+ Subcommands: `tree` (default), `propose`, `view`, `move`
35
+
36
+ **Natural language mapping (Desktop/Cowork):**
37
+ - "organize my rooms" / "show room structure" -> `tree`
38
+ - "how should I reorganize?" / "suggest groupings" -> `propose`
39
+ - "show rooms by client" / "group by stage" -> `view by-stage`
40
+ - "move fintech to clients" / "put biotech in health group" -> `move fintech-startup clients`
41
+
42
+ ---
43
+
44
+ ## Subcommand: tree
45
+
46
+ **Trigger:** `/mos:organize` or `/mos:organize tree`
47
+
48
+ ### Step 1: Get Room Data
49
+
50
+ Determine `ROOMS_HOME` (`$MINDRIAN_ROOMS_HOME` or `~/MindrianRooms`).
51
+
52
+ Run `bash scripts/room-registry list` to get JSON array of rooms.
53
+
54
+ If the command fails or returns empty:
55
+ > "No rooms found. Run `/mos:rooms new` to create your first room."
56
+ Then STOP.
57
+
58
+ ### Step 2: Scan Physical Hierarchy
59
+
60
+ Scan `$ROOMS_HOME` for the actual directory structure:
61
+
62
+ ```bash
63
+ # List top-level directories (excluding hidden, _archive)
64
+ ls -d "$ROOMS_HOME"/*/ 2>/dev/null | grep -v '/\.' | grep -v '/_'
65
+ ```
66
+
67
+ For each directory, check:
68
+ 1. Is it a registered room? (exists in registry.json)
69
+ 2. Is it a group directory? (contains subdirectories that are rooms, has a CLAUDE.md)
70
+ 3. Is it an orphan? (directory exists but not in registry)
71
+
72
+ ### Step 3: Check ICM Compliance
73
+
74
+ For each room, check:
75
+ - `CLAUDE.md` exists at room level (Layer 0)
76
+ - `STATE.md` exists (Layer 2)
77
+ - Section directories present (problem-definition/, market-analysis/, etc.)
78
+
79
+ Use status indicators:
80
+ - `checkmark` = ICM-compliant (CLAUDE.md + STATE.md + sections)
81
+ - `bullet` = Partial (missing some ICM layers)
82
+ - `warning` = Non-compliant (no STATE.md or no sections)
83
+
84
+ ### Step 4: Render Room Tree
85
+
86
+ Render using Body Shape B (Semantic Tree):
87
+
88
+ ```
89
+ -- MindrianOS -- Room Portfolio -- ~/MindrianRooms/ -------------------
90
+
91
+ v ~/MindrianRooms/
92
+ |- [group-icon] clients/ 3 rooms
93
+ | |- [checkmark] acme-robotics active Pre-Opportunity 8 entries
94
+ | |- [bullet] fintech-startup parked Discovery 14 entries
95
+ | +- [checkmark] biotech-venture parked Validation 22 entries
96
+ |
97
+ |- [group-icon] internal/ 1 room
98
+ | +- [checkmark] mindrian-ops active -- 5 entries
99
+ |
100
+ |- [warning] orphan-project -- -- 0 entries
101
+ +- _archive/ 2 rooms
102
+
103
+ Rooms: 5 registered, 1 orphan, 2 archived
104
+ Groups: 2 (clients/, internal/)
105
+ ICM health: 3 compliant, 1 partial, 1 non-compliant
106
+ ```
107
+
108
+ For ungrouped rooms (directly under ROOMS_HOME), show them at root level without a group parent.
109
+
110
+ Symbol key for groups:
111
+ - `v` (down-triangle) = expanded group with rooms
112
+ - `>` (right-triangle-filled) = collapsed group
113
+
114
+ ### Step 5: Intelligence Strip (Zone 3)
115
+
116
+ If any cross-room signals exist, show max 2:
117
+ - `!` "acme-robotics and fintech-startup share 3 market themes" (convergence)
118
+ - `[ ]` "orphan-project not in registry -- run /mos:rooms new to adopt"
119
+
120
+ Omit entirely if no signals.
121
+
122
+ ### Step 6: Action Footer (Zone 4)
123
+
124
+ ```
125
+ > /mos:organize propose Get graph-informed grouping suggestions
126
+ > /mos:organize view by-stage See rooms grouped by venture stage
127
+ > /mos:organize move <room> <group> Move a room into a group (with confirmation)
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Subcommand: propose
133
+
134
+ **Trigger:** `/mos:organize propose`
135
+
136
+ ### Step 1: Gather Room Intelligence
137
+
138
+ Determine `ROOMS_HOME` and load room list via `bash scripts/room-registry list`.
139
+
140
+ For each room, collect metadata:
141
+ - `venture_name` and `venture_stage` from registry
142
+ - Domain keywords: scan `problem-definition/` for topic terms if files exist
143
+ - Team info: check `team/` directory for client/stakeholder names
144
+ - Entry count and section health
145
+
146
+ ### Step 2: Attempt Graph-Informed Groupings (Graceful Degradation)
147
+
148
+ **Tier 1 -- Brain + SQLite graph (richest proposals):**
149
+
150
+ Try calling Brain MCP: `mcp__mindrian-brain__brain_schema` or `mcp__mindrian-brain__get_neo4j_schema`.
151
+
152
+ If Brain is available, query for cross-room intelligence:
153
+
154
+ ```cypher
155
+ // Find rooms that share frameworks
156
+ MATCH (r1:Room)-[:USES_FRAMEWORK]->(f:Framework)<-[:USES_FRAMEWORK]-(r2:Room)
157
+ WHERE r1.name <> r2.name
158
+ RETURN r1.name, r2.name, collect(f.name) AS shared_frameworks
159
+
160
+ // Find rooms at the same stage
161
+ MATCH (r:Room)-[:AT_STAGE]->(s:VentureStage)
162
+ RETURN s.name, collect(r.name) AS rooms_at_stage
163
+
164
+ // Find rooms with shared themes
165
+ MATCH (r1:Room)-[:SHARES_THEME]->(t:Theme)<-[:SHARES_THEME]-(r2:Room)
166
+ RETURN t.name, collect(DISTINCT r1.name) + collect(DISTINCT r2.name) AS themed_rooms
167
+ ```
168
+
169
+ Note: Room nodes may not exist yet (Phase 59.2 creates them). If these queries return empty, fall through to Tier 2.
170
+
171
+ **Tier 2 -- Metadata-based groupings (always available):**
172
+
173
+ Group rooms by analyzing:
174
+ 1. **By venture stage:** Cluster rooms sharing the same `venture_stage`
175
+ 2. **By name pattern:** Extract common prefixes or domain keywords from room slugs
176
+ 3. **By domain keywords:** Read first 50 lines of each room's `problem-definition/` files, extract key domain terms, find overlaps
177
+ 4. **By activity level:** Group stale rooms (no activity >30 days) vs. active ones
178
+
179
+ ### Step 3: Generate Proposals
180
+
181
+ Create a ranked list of grouping proposals. Each proposal has:
182
+ - **Group name** (suggested slug, e.g., `health-ventures`, `pre-opp-rooms`)
183
+ - **Rooms included** (which rooms would move into this group)
184
+ - **Rationale** (why these rooms belong together)
185
+ - **Confidence** (high/medium/low based on signal strength)
186
+ - **Source** (Brain graph / metadata / name pattern)
187
+
188
+ ### Step 4: Render Proposals
189
+
190
+ ```
191
+ -- MindrianOS -- Room Portfolio -- Reorganization Proposals -----------
192
+
193
+ Analyzed 5 rooms. Found 3 potential groupings.
194
+
195
+ Proposal 1: "health-ventures" [HIGH confidence]
196
+ Source: shared domain keywords (genomics, clinical, biotech)
197
+ |- biotech-venture Validation 22 entries
198
+ +- pharma-discovery Discovery 11 entries
199
+
200
+ Proposal 2: "pre-opportunity" [MEDIUM confidence]
201
+ Source: venture stage clustering
202
+ |- acme-robotics Pre-Opportunity 8 entries
203
+ +- new-idea-room Pre-Opportunity 3 entries
204
+
205
+ Proposal 3: "fintech" [LOW confidence]
206
+ Source: name pattern match
207
+ +- fintech-startup Discovery 14 entries
208
+ (single room -- grouping deferred)
209
+
210
+ > /mos:organize move biotech-venture health-ventures Accept proposal 1
211
+ > /mos:organize propose --refresh Re-analyze with latest data
212
+ > /mos:organize view by-stage Preview stage-based view first
213
+ ```
214
+
215
+ ### Step 5: Record Proposals
216
+
217
+ Write proposals to `$ROOMS_HOME/.rooms/proposals.json` for future reference:
218
+
219
+ ```json
220
+ {
221
+ "generated": "2026-04-06T20:00:00Z",
222
+ "source": "metadata",
223
+ "proposals": [
224
+ {
225
+ "group": "health-ventures",
226
+ "rooms": ["biotech-venture", "pharma-discovery"],
227
+ "rationale": "shared domain keywords: genomics, clinical, biotech",
228
+ "confidence": "high",
229
+ "status": "pending"
230
+ }
231
+ ]
232
+ }
233
+ ```
234
+
235
+ ---
236
+
237
+ ## Subcommand: view
238
+
239
+ **Trigger:** `/mos:organize view [axis]`
240
+
241
+ Available axes: `by-stage`, `by-client`, `by-domain`, `by-activity`
242
+
243
+ This subcommand shows virtual projections WITHOUT moving files. The rooms stay where they are. The view is a lens, not a reorganization.
244
+
245
+ ### Step 1: Load Room Data
246
+
247
+ Get room list via `bash scripts/room-registry list`. For each room, load metadata as in `propose`.
248
+
249
+ ### Step 2: Build Virtual Grouping
250
+
251
+ **by-stage:** Group rooms by `venture_stage` field from registry.
252
+
253
+ **by-client:** Extract client/owner from:
254
+ 1. `venture_name` in registry (parse for company names)
255
+ 2. `team/` directory contents (look for stakeholder names)
256
+ 3. Room slug prefix patterns
257
+
258
+ **by-domain:** Extract domain from:
259
+ 1. Problem-definition content keywords
260
+ 2. Room slug domain terms
261
+ 3. Brain framework associations (if available)
262
+
263
+ **by-activity:** Group by last activity:
264
+ - Active (activity within 7 days)
265
+ - Recent (7-30 days)
266
+ - Stale (30+ days)
267
+ - Dormant (90+ days)
268
+
269
+ ### Step 3: Render Virtual View
270
+
271
+ ```
272
+ -- MindrianOS -- Room Portfolio -- View: by-stage ---------------------
273
+
274
+ [virtual projection -- no files moved]
275
+
276
+ v Pre-Opportunity (2 rooms)
277
+ |- acme-robotics active 8 entries
278
+ +- new-idea-room parked 3 entries
279
+
280
+ v Discovery (2 rooms)
281
+ |- fintech-startup parked 14 entries
282
+ +- pharma-discovery active 11 entries
283
+
284
+ v Validation (1 room)
285
+ +- biotech-venture parked 22 entries
286
+
287
+ > /mos:organize move acme-robotics pre-opportunity Make this grouping real
288
+ > /mos:organize view by-domain Try another lens
289
+ > /mos:organize tree Back to physical structure
290
+ ```
291
+
292
+ ### Step 4: Action Footer
293
+
294
+ Suggest converting the virtual view into real groups (with move commands) or trying other axes.
295
+
296
+ ---
297
+
298
+ ## Subcommand: move
299
+
300
+ **Trigger:** `/mos:organize move <room-name> <target-group>`
301
+
302
+ ### Step 1: Validate Inputs
303
+
304
+ Run `bash scripts/room-registry read <room-name>` to verify room exists.
305
+
306
+ If not found:
307
+ ```
308
+ x Room not found: <room-name>
309
+ Why: No room named "<room-name>" in .rooms/registry.json
310
+ Fix: /mos:rooms list
311
+ ```
312
+ Then STOP.
313
+
314
+ Check if target-group is valid:
315
+ - Must be a valid directory slug (lowercase, alphanumeric, hyphens)
316
+ - Must not exceed nesting depth (max 3 levels: root/group/room)
317
+
318
+ ### Step 2: Show Move Preview
319
+
320
+ Display what will happen before asking for confirmation:
321
+
322
+ ```
323
+ -- MindrianOS -- Room Move Preview ------------------------------------
324
+
325
+ Moving: fintech-startup
326
+ From: ~/MindrianRooms/fintech-startup/
327
+ To: ~/MindrianRooms/clients/fintech-startup/
328
+
329
+ This will:
330
+ 1. Create group directory "clients/" (if new)
331
+ 2. Generate ICM CLAUDE.md for "clients/" group
332
+ 3. Move fintech-startup/ into clients/
333
+ 4. Update registry.json path
334
+ 5. Refresh INDEX.md
335
+
336
+ Confirm move? (yes/no)
337
+ ```
338
+
339
+ ### Step 3: Require Explicit Human Confirmation
340
+
341
+ **CRITICAL:** Wait for explicit "yes" from the user. Accept: "yes", "y", "confirm", "do it", "go ahead".
342
+
343
+ If user declines or says anything ambiguous, STOP:
344
+ > "Move cancelled. Room stays at current location."
345
+
346
+ If user says "defer":
347
+ > Record DEFER decision (Step 7) and STOP.
348
+
349
+ ### Step 4: Execute Move
350
+
351
+ If confirmed, execute the move:
352
+
353
+ ```bash
354
+ ROOMS_HOME="${MINDRIAN_ROOMS_HOME:-$HOME/MindrianRooms}"
355
+
356
+ # Create group directory if it doesn't exist
357
+ mkdir -p "$ROOMS_HOME/<target-group>"
358
+
359
+ # Move the room directory
360
+ mv "$ROOMS_HOME/<room-name>" "$ROOMS_HOME/<target-group>/<room-name>"
361
+ ```
362
+
363
+ ### Step 5: Generate Group ICM CLAUDE.md
364
+
365
+ If this is a NEW group (just created), generate an ICM Layer 0 CLAUDE.md for the group directory.
366
+
367
+ Read the template from `templates/icm/GROUP-CLAUDE.md` and fill in:
368
+ - Group name
369
+ - Rationale for grouping (from proposal if available, or ask user)
370
+ - List of rooms in the group
371
+
372
+ Write the filled template to `$ROOMS_HOME/<target-group>/CLAUDE.md`.
373
+
374
+ If the group already has a CLAUDE.md, update the room list section to include the newly moved room.
375
+
376
+ ### Step 6: Update Registry and Index
377
+
378
+ Update the room's path in the registry:
379
+
380
+ ```bash
381
+ bash scripts/room-registry update <room-name> path "<target-group>/<room-name>"
382
+ ```
383
+
384
+ Refresh INDEX.md:
385
+
386
+ ```bash
387
+ bash scripts/update-icm-index "$ROOMS_HOME"
388
+ ```
389
+
390
+ ### Step 7: Record Decision
391
+
392
+ Record the user's decision for future proposal intelligence.
393
+
394
+ Write to `$ROOMS_HOME/.rooms/decisions.json`:
395
+
396
+ ```json
397
+ {
398
+ "decisions": [
399
+ {
400
+ "timestamp": "2026-04-06T20:00:00Z",
401
+ "type": "GROUP",
402
+ "room": "fintech-startup",
403
+ "target": "clients",
404
+ "rationale": "client-based grouping",
405
+ "source": "user-confirmed"
406
+ }
407
+ ]
408
+ }
409
+ ```
410
+
411
+ Decision types:
412
+ - **GROUP** -- user confirmed moving room into a group
413
+ - **SEPARATE** -- user explicitly rejected a proposed grouping ("keep these apart")
414
+ - **DEFER** -- user acknowledged the proposal but chose not to act now
415
+
416
+ When Brain graph is available (Phase 59.2+), also create graph edges:
417
+
418
+ ```cypher
419
+ // GROUP decision
420
+ MERGE (r:Room {name: "fintech-startup"})
421
+ MERGE (g:RoomGroup {name: "clients"})
422
+ MERGE (r)-[:GROUPED_BY_USER {timestamp: datetime(), rationale: "client-based"}]->(g)
423
+
424
+ // SEPARATE decision
425
+ MERGE (r1:Room {name: "room-a"})
426
+ MERGE (r2:Room {name: "room-b"})
427
+ MERGE (r1)-[:SEPARATED_BY_USER {timestamp: datetime(), reason: "different domains"}]->(r2)
428
+ ```
429
+
430
+ If Brain is not available, the local `decisions.json` file is sufficient. Future proposals read this file to avoid re-suggesting rejected groupings.
431
+
432
+ ### Step 8: Report Success
433
+
434
+ ```
435
+ -- MindrianOS -- Room Move Complete -----------------------------------
436
+
437
+ Moved: fintech-startup
438
+ To: ~/MindrianRooms/clients/fintech-startup/
439
+ Group: clients/ (ICM CLAUDE.md generated)
440
+ Registry: updated
441
+ INDEX.md: refreshed
442
+
443
+ Decision recorded: GROUP fintech-startup -> clients
444
+
445
+ > /mos:organize tree See updated structure
446
+ > /mos:organize propose Get more suggestions
447
+ > /mos:organize move <room> clients Add another room to this group
448
+ ```
449
+
450
+ ---
451
+
452
+ ## Decision Memory
453
+
454
+ The organize command maintains two local files for decision intelligence:
455
+
456
+ 1. **`$ROOMS_HOME/.rooms/proposals.json`** -- generated proposals with status tracking
457
+ 2. **`$ROOMS_HOME/.rooms/decisions.json`** -- all GROUP/SEPARATE/DEFER decisions with timestamps
458
+
459
+ When generating new proposals (via `propose`), the system:
460
+ 1. Reads `decisions.json` to avoid re-suggesting SEPARATE'd groupings
461
+ 2. Boosts confidence for proposals that align with previous GROUP decisions
462
+ 3. Surfaces DEFER'd proposals again after 30 days with a note: "Previously deferred on [date]"
463
+
464
+ When Brain graph is available, these local files serve as a staging area. Decisions are promoted to graph edges for richer cross-room intelligence.
465
+
466
+ ---
467
+
468
+ ## Graceful Degradation
469
+
470
+ | Available | Proposal Quality | Source |
471
+ |-----------|-----------------|--------|
472
+ | Brain + SQLite graph | Rich: shared frameworks, themes, co-occurrence | Graph queries |
473
+ | Brain only | Good: venture stage taxonomy, framework connections | Cypher queries |
474
+ | SQLite graph only | Good: local graph relationships, room metadata | Local graph |
475
+ | Neither (Tier 0) | Basic: stage clustering, name patterns, domain keywords | Registry + filesystem |
476
+
477
+ The command always works. Intelligence quality scales with available infrastructure. This is the Tier 0 principle applied to room organization.
478
+
479
+ ---
480
+
481
+ ## Cross-Surface Notes (Tri-Polar Rule)
482
+
483
+ | Surface | Behavior |
484
+ |---------|----------|
485
+ | **CLI** | Full subcommand syntax as documented above. Scripts run directly. |
486
+ | **Desktop** | Larry interprets natural language and maps to subcommands. See natural language mapping at top. |
487
+ | **Cowork** | Same registry, same commands. Moves affect all team members sharing the room hierarchy. Announce moves in shared context. |
488
+
489
+ ## Error Format
490
+
491
+ Always use the 3-line error pattern:
492
+
493
+ ```
494
+ x What happened
495
+ Why: reason
496
+ Fix: /mos:command
497
+ ```