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

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 +497 -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 +2621 -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 +230 -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 +566 -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 +563 -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 +551 -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 +2115 -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 +224 -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/collect-cold-install-evidence.cjs +411 -0
  1402. package/scripts/compute-bayesian-surprise.py +175 -0
  1403. package/scripts/compute-blindspot-mass.py +209 -0
  1404. package/scripts/compute-disruption-index.py +211 -0
  1405. package/scripts/compute-element-novelty.py +254 -0
  1406. package/scripts/compute-external-whitespace.py +563 -0
  1407. package/scripts/compute-hsi.py +947 -0
  1408. package/scripts/compute-meetings-intelligence +716 -0
  1409. package/scripts/compute-opportunity-state +17 -0
  1410. package/scripts/compute-state +393 -0
  1411. package/scripts/compute-team +1112 -0
  1412. package/scripts/compute-whitespace-embeddings.py +464 -0
  1413. package/scripts/compute-whitespace-gaps.py +562 -0
  1414. package/scripts/compute_topic_forest.py +684 -0
  1415. package/scripts/consolidate-pinecone.py +265 -0
  1416. package/scripts/context-monitor +943 -0
  1417. package/scripts/create-speaker-profile +311 -0
  1418. package/scripts/cross-room-detect.cjs +195 -0
  1419. package/scripts/csv-to-idea-graph.cjs +755 -0
  1420. package/scripts/ctxl-eval.cjs +846 -0
  1421. package/scripts/curation-132-03-dedup-held-rename.cjs +395 -0
  1422. package/scripts/curation-132-05-pseudonymize.cjs +189 -0
  1423. package/scripts/derive-verb-reach-affinity.cjs +507 -0
  1424. package/scripts/detect-reverse-salients.py +242 -0
  1425. package/scripts/diagnostics-command.cjs +345 -0
  1426. package/scripts/dial-memory-refresh-command.cjs +147 -0
  1427. package/scripts/discover-analogy-whitespace.py +433 -0
  1428. package/scripts/discover-hsi-whitespace.py +352 -0
  1429. package/scripts/discover-rs-whitespace.py +327 -0
  1430. package/scripts/discovery-cycle.cjs +625 -0
  1431. package/scripts/disposition-render-v2.cjs +229 -0
  1432. package/scripts/doctor-preflight-format.cjs +101 -0
  1433. package/scripts/doctor.cjs +4327 -0
  1434. package/scripts/dogfood-bridge/append-to-queue.sh +59 -0
  1435. package/scripts/dogfood-bridge/path-filter.cjs +86 -0
  1436. package/scripts/dogfood-derive.cjs +158 -0
  1437. package/scripts/dogfood-emit.cjs +126 -0
  1438. package/scripts/empathy-observation-emit.cjs +108 -0
  1439. package/scripts/enrichment-queue-append.cjs +157 -0
  1440. package/scripts/ensure-brain-baseline.cjs +117 -0
  1441. package/scripts/entity-extract.cjs +1135 -0
  1442. package/scripts/eureka-command.cjs +687 -0
  1443. package/scripts/eureka-critic-run.cjs +662 -0
  1444. package/scripts/eureka-portfolio-report.cjs +2038 -0
  1445. package/scripts/eureka-room-report.cjs +419 -0
  1446. package/scripts/explain-decision-command.cjs +499 -0
  1447. package/scripts/export-pinecone-embeddings.cjs +516 -0
  1448. package/scripts/extract-room-intelligence.cjs +714 -0
  1449. package/scripts/fetch-brain-baseline.cjs +190 -0
  1450. package/scripts/fetch-brain-baseline.py +360 -0
  1451. package/scripts/feynman-minto-guardian.cjs +672 -0
  1452. package/scripts/feynman-timeline-refresh-command.cjs +270 -0
  1453. package/scripts/file-asset +253 -0
  1454. package/scripts/fire-sensor-event.cjs +83 -0
  1455. package/scripts/first-install-router.cjs +968 -0
  1456. package/scripts/frontmatter-schema-validator.cjs +339 -0
  1457. package/scripts/fts-index-drain.cjs +221 -0
  1458. package/scripts/generate-chat-embed.cjs +179 -0
  1459. package/scripts/generate-deck.cjs +322 -0
  1460. package/scripts/generate-export.cjs +474 -0
  1461. package/scripts/generate-hub.cjs +2553 -0
  1462. package/scripts/generate-lobby.cjs +718 -0
  1463. package/scripts/generate-presentation.cjs +988 -0
  1464. package/scripts/generate-presentation.test.cjs +405 -0
  1465. package/scripts/generate-section-intelligence.cjs +330 -0
  1466. package/scripts/generate-snapshot.cjs +1410 -0
  1467. package/scripts/generate-standalone +159 -0
  1468. package/scripts/git-ops +211 -0
  1469. package/scripts/graph-heal-pipeline.cjs +321 -0
  1470. package/scripts/gsd-artifact-graph-hook.cjs +219 -0
  1471. package/scripts/gsd-graph-derive-drain.cjs +571 -0
  1472. package/scripts/gsd-graph-derive-sweep.cjs +195 -0
  1473. package/scripts/heal-command.cjs +1365 -0
  1474. package/scripts/hedge-refit-pipeline.cjs +207 -0
  1475. package/scripts/help-renderer.cjs +303 -0
  1476. package/scripts/hmi-compliance-poll.cjs +451 -0
  1477. package/scripts/hmi-status-command.cjs +510 -0
  1478. package/scripts/hooked-rescore-117.cjs +224 -0
  1479. package/scripts/hooks/pre-commit +533 -0
  1480. package/scripts/hooks/pre-commit-room-minto-guard.cmd +43 -0
  1481. package/scripts/hooks/pre-commit-room-minto-guard.sh +533 -0
  1482. package/scripts/hsi-to-graph.cjs +194 -0
  1483. package/scripts/huji-batch.cjs +821 -0
  1484. package/scripts/huji-eval.cjs +1158 -0
  1485. package/scripts/huji-intake.cjs +563 -0
  1486. package/scripts/huji-pin-smoketest.cjs +454 -0
  1487. package/scripts/huji-run-one-async.cjs +305 -0
  1488. package/scripts/huji-run-one.cjs +671 -0
  1489. package/scripts/install-pre-commit.sh +113 -0
  1490. package/scripts/intent-classifier +106 -0
  1491. package/scripts/intent-classifier.cjs +3620 -0
  1492. package/scripts/interpret-whitespace.cjs +691 -0
  1493. package/scripts/jtbd-command.cjs +810 -0
  1494. package/scripts/jtbd-update.cjs +299 -0
  1495. package/scripts/label-topic-forest.cjs +667 -0
  1496. package/scripts/learn-from-usage +168 -0
  1497. package/scripts/lib/__pycache__/ensure_ml_deps.cpython-312.pyc +0 -0
  1498. package/scripts/lib/ensure_ml_deps.py +97 -0
  1499. package/scripts/load-embeddings-into-neo4j.cjs +569 -0
  1500. package/scripts/memory-artifact-graph-hook.cjs +191 -0
  1501. package/scripts/memory-command.cjs +687 -0
  1502. package/scripts/memory-completion-detector.cjs +217 -0
  1503. package/scripts/memory-lifecycle.cjs +620 -0
  1504. package/scripts/memory-resume-nudge.cjs +233 -0
  1505. package/scripts/methodology-ingest-local.sh +36 -0
  1506. package/scripts/migrate-brain-mcp-from-http-to-stdio.cjs +190 -0
  1507. package/scripts/migrate-brain-mcp-from-http-to-stdio.test.cjs +242 -0
  1508. package/scripts/migrate-hats-to-roomdb.cjs +217 -0
  1509. package/scripts/migrate-lazygraph.cjs +250 -0
  1510. package/scripts/migrate-minto-schema-v88.cjs +296 -0
  1511. package/scripts/migrate-plugin-root-refs.cjs +168 -0
  1512. package/scripts/migrate-room-sections-v275.cjs +556 -0
  1513. package/scripts/migrate-rooms +417 -0
  1514. package/scripts/migrate-skill-frontmatter.cjs +472 -0
  1515. package/scripts/migrate-stale-user-settings.cjs +296 -0
  1516. package/scripts/migrate-telemetry-v1.cjs +384 -0
  1517. package/scripts/migrate-telemetry-v1.test.cjs +356 -0
  1518. package/scripts/minto-debouncer.cjs +428 -0
  1519. package/scripts/mos-status.cjs +622 -0
  1520. package/scripts/mva-detect.cjs +229 -0
  1521. package/scripts/mva-run.cjs +36 -0
  1522. package/scripts/on-agent-complete +163 -0
  1523. package/scripts/on-cwd-changed +149 -0
  1524. package/scripts/on-file-changed +68 -0
  1525. package/scripts/on-stop +617 -0
  1526. package/scripts/on-task-complete +194 -0
  1527. package/scripts/operator-command.cjs +858 -0
  1528. package/scripts/operator-update.cjs +308 -0
  1529. package/scripts/part8-egress-guard-hook.cjs +229 -0
  1530. package/scripts/pipeline-command.cjs +271 -0
  1531. package/scripts/post-compact +383 -0
  1532. package/scripts/post-update-activation.cjs +339 -0
  1533. package/scripts/post-write +283 -0
  1534. package/scripts/power-demo-prompt.md +621 -0
  1535. package/scripts/pre-compact +273 -0
  1536. package/scripts/preflight-auto-explore.cjs +314 -0
  1537. package/scripts/preflight-doctor.cjs +225 -0
  1538. package/scripts/preflight-release-drift.cjs +168 -0
  1539. package/scripts/preflight-tension-surface.cjs +414 -0
  1540. package/scripts/probe-brain-contract.cjs +502 -0
  1541. package/scripts/publish-ops +346 -0
  1542. package/scripts/query-efficiency-telemetry.cjs +364 -0
  1543. package/scripts/query-semantic-scholar.cjs +545 -0
  1544. package/scripts/reapply-modifications +49 -0
  1545. package/scripts/reassign-primary.cjs +125 -0
  1546. package/scripts/recompile-room-references.cjs +601 -0
  1547. package/scripts/release-beta-preflight.sh +69 -0
  1548. package/scripts/render-pdf +588 -0
  1549. package/scripts/render-viz +190 -0
  1550. package/scripts/research-speaker +239 -0
  1551. package/scripts/resolve-room +204 -0
  1552. package/scripts/restore-post-compact-context.cjs +320 -0
  1553. package/scripts/room-auto-create-nudge.cjs +136 -0
  1554. package/scripts/room-naming-selector.cjs +201 -0
  1555. package/scripts/room-registry +767 -0
  1556. package/scripts/rs-discovery-engine.cjs +725 -0
  1557. package/scripts/rs-engine.py +2073 -0
  1558. package/scripts/rs-experts-command.cjs +300 -0
  1559. package/scripts/rs-explain-command.cjs +323 -0
  1560. package/scripts/rs-fetch-command.cjs +170 -0
  1561. package/scripts/rs-thesis-command.cjs +203 -0
  1562. package/scripts/rs-vector-bridge.cjs +410 -0
  1563. package/scripts/run-harness.cjs +890 -0
  1564. package/scripts/scout-cadence-guard.cjs +323 -0
  1565. package/scripts/scout-cadence-runner.cjs +509 -0
  1566. package/scripts/scout-telemetry-aggregator.cjs +268 -0
  1567. package/scripts/sealed-walker.py +96 -0
  1568. package/scripts/seed-brain-commands.cjs +324 -0
  1569. package/scripts/self-update +105 -0
  1570. package/scripts/sentinel-deadline-monitor +241 -0
  1571. package/scripts/sentinel-health-check +198 -0
  1572. package/scripts/sentinel-snapshot +42 -0
  1573. package/scripts/serve-dashboard +103 -0
  1574. package/scripts/serve-dashboard-live +932 -0
  1575. package/scripts/serve-presentation +97 -0
  1576. package/scripts/serve-wiki +90 -0
  1577. package/scripts/session-end-presence.cjs +79 -0
  1578. package/scripts/session-start +1943 -0
  1579. package/scripts/sessionstart-coordinator.cjs +249 -0
  1580. package/scripts/sessionstart-npm-reconcile.cjs +111 -0
  1581. package/scripts/sessionstart-post-update-preflight.cjs +303 -0
  1582. package/scripts/sessionstart-reference-now-seed.cjs +137 -0
  1583. package/scripts/setup-hooks.sh +112 -0
  1584. package/scripts/skillopt-codereview.cjs +830 -0
  1585. package/scripts/skillopt-eval.cjs +519 -0
  1586. package/scripts/skillopt-funnel.cjs +1076 -0
  1587. package/scripts/skillopt-genqueries.cjs +571 -0
  1588. package/scripts/skillopt-inventory.cjs +319 -0
  1589. package/scripts/skillopt-merge.cjs +656 -0
  1590. package/scripts/skillopt-triggerloop.cjs +1126 -0
  1591. package/scripts/soft-alias-runner.cjs +116 -0
  1592. package/scripts/stamp-artifact-write.cjs +276 -0
  1593. package/scripts/stamp-firing-block.cjs +325 -0
  1594. package/scripts/state-write.cjs +97 -0
  1595. package/scripts/statusline-fallback-echo.cjs +297 -0
  1596. package/scripts/statusline-mos +116 -0
  1597. package/scripts/statusline-mos-dispatch +127 -0
  1598. package/scripts/suggest-next-command.cjs +416 -0
  1599. package/scripts/sweep-skill-descriptions.cjs +263 -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 +384 -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 +571 -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,1150 @@
1
+ 'use strict';
2
+ // Phase 125-00 -- navigation.cjs edge-write primitive (per CONTEXT.md Pass 3 GAP-2
3
+ // resolution). Adds writeEdge to the navigation.cjs closed surface as an additive
4
+ // extension following the Phase 110-03 logMemoryEvent precedent.
5
+ //
6
+ // Canon Part 4: every choice is graph data; this is the chokepoint primitive that
7
+ // lets Plan 06 selector-decisions.cjs + future Phases 116/117/118 write typed
8
+ // cascade edges without bypassing the closed surface.
9
+ //
10
+ // Canon Part 7: reuse-before-build -- the UPSERT statement mirrors
11
+ // lib/core/lazygraph-ops.cjs::upsertEdge (lines 990-1019) so sibling agents
12
+ // emit edges via the same UPSERT shape and the navigation chokepoint stays
13
+ // the single door for write traffic.
14
+ //
15
+ // Canon Part 8 invariant: writeEdge takes (db, params) -- a db handle owned by
16
+ // the caller (via openRoomDb) -- so this module never opens room.db itself. Zero
17
+ // direct room-db.cjs require here. The navigation pre-commit hook treats this
18
+ // file as part of the navigation/* allow-list, NOT as a bypass.
19
+
20
+ const crypto = require('node:crypto');
21
+
22
+ // Closed edge-type allowlist enforced by writeEdge. Mirrors the EVENT_TYPES Set
23
+ // pattern in lib/core/navigation/memory-events.cjs. Phase 125 ships DEFERRED +
24
+ // REJECTED (D7 typed cascade edge surface for F.1 defer / F.2 reject). Future
25
+ // phases (e.g. Phase 116 tension resolution, Phase 117 auto-explore, Phase 118
26
+ // MVA) extend this Set additively without canon amendment -- same idiom as the
27
+ // EVENT_TYPES additive blocks for Phases 88.2-00 / 89-07 / 116-00 / 117-00 /
28
+ // 110-02.
29
+ //
30
+ // Tests assert a FLOOR (DEFERRED + REJECTED present) and Set-instance shape --
31
+ // not an exact size -- so additive extensions cannot regress baseline.
32
+ const ALLOWED_EDGE_TYPES = Object.freeze(new Set([
33
+ // Phase 125 D7 -- F-selector decision edges (LOCKED LOCAL per Canon Part 8).
34
+ 'DEFERRED',
35
+ 'REJECTED',
36
+ // Phase 120-00 Wave 1 extension (Breakthrough Scan / Category G; D-18 HARD FLOOR enforcement
37
+ // + D-20 Cypher-provable principle). DERIVED_FROM is the structural enforcement: a
38
+ // Breakthrough node CANNOT surface without at least one DERIVED_FROM edge to an
39
+ // Artifact node. Mirrors the Phase 125-00 DEFERRED + REJECTED additive idiom.
40
+ //
41
+ // Canon Part 4: every choice is graph data. The Breakthrough node + its DERIVED_FROM
42
+ // edges are the graph-native artifact of pattern detection.
43
+ //
44
+ // Canon Part 8: writeEdge takes (db, params) over a LOCAL room.db handle; DERIVED_FROM
45
+ // never crosses to Brain. Cross-room aggregation is prevented structurally:
46
+ // writeEdge(db, params) only ever holds the one db handle its caller passed
47
+ // in, so it is physically incapable of opening or writing a second room's
48
+ // db (Phase 8 cross-room fence; no runtime assertion exists because no
49
+ // code path has been found or hypothesized where a handle is swapped
50
+ // mid-call -- see 273-RESEARCH.md D-04).
51
+ //
52
+ // D-20 enforcement: lib/core/breakthrough/schema.cjs::writeBreakthrough wraps the
53
+ // Breakthrough node insert + N DERIVED_FROM edge inserts in a single SQLite transaction.
54
+ // If any step fails, the transaction rolls back -- partial Breakthrough state CANNOT
55
+ // land. The Cypher invariant `MATCH (b:Breakthrough)-[:DERIVED_FROM]->(a:Artifact)
56
+ // RETURN count(a)` is guaranteed >= 1 by construction.
57
+ 'DERIVED_FROM',
58
+ // Phase 120-02 Wave 2 extension (Breakthrough Scan / Category G; D-09 file-as-decision
59
+ // bridge). FILED_AS_DECISION is the typed edge that promotes a Breakthrough node into
60
+ // the Phase 88 decision-log machinery when the user picks the [File as decision]
61
+ // verb on F.7. Mirrors the Phase 120-00 DERIVED_FROM additive idiom verbatim.
62
+ //
63
+ // Canon Part 4: every choice is graph data. The Breakthrough -> Decision edge is the
64
+ // graph-native bridge that lets future related breakthroughs reference the filed
65
+ // decision via ENABLES edges (per CONTEXT.md D-15 "may be referenced as ENABLES in
66
+ // future related breakthroughs").
67
+ //
68
+ // Canon Part 8: writeEdge takes (db, params) over a LOCAL room.db handle;
69
+ // FILED_AS_DECISION never crosses to Brain. Cross-room aggregation is prevented structurally:
70
+ // writeEdge(db, params) only ever holds the one db handle its caller passed
71
+ // in, so it is physically incapable of opening or writing a second room's
72
+ // db (Phase 8 cross-room fence; no runtime assertion exists because no
73
+ // code path has been found or hypothesized where a handle is swapped
74
+ // mid-call -- see 273-RESEARCH.md D-04).
75
+ //
76
+ // Emitted by: lib/core/breakthrough/verb-dispatch.cjs::handleFileAsDecision.
77
+ // The destination Decision node id is 'decision:' + breakthroughId by convention;
78
+ // Phase 88 decision-log machinery (or a future Phase 121 housekeeping pass) is
79
+ // responsible for materializing the Decision node body when one does not yet exist.
80
+ 'FILED_AS_DECISION',
81
+ // Phase 129-01 extension (Spine Repair; FOLLOWS_FROM is the 8th canonical
82
+ // cascade edge type extending the shipped vocabulary INFORMS / CONTRADICTS /
83
+ // CONVERGES / INVALIDATES / ENABLES / REJECTED / DEFERRED per the 2026-05-16
84
+ // dual-graph review additive-scope verdict). Emitted by the spine repair work
85
+ // when one memory_event clearly follows another in the proactive loop (e.g.
86
+ // spine_read FOLLOWS_FROM suggestion_surfaced). Mirrors the Phase 120-02
87
+ // FILED_AS_DECISION additive idiom verbatim.
88
+ //
89
+ // Canon Part 8: properties are ENUM-ONLY (a surface scalar); no freeform
90
+ // user-content fields ever land on a FOLLOWS_FROM edge -- the review's hard
91
+ // constraint. writeEdge takes (db, params) over a LOCAL room.db handle;
92
+ // FOLLOWS_FROM never crosses to Brain.
93
+ //
94
+ // The dual-graph proposal's lens-class taxonomy (ASSOCIATION_LENS /
95
+ // TRANSITION_LENS) is REJECTED -- the verdict accepts a SINGLE additive
96
+ // cascade type that extends the shipped vocabulary, not parallel lens
97
+ // classes. Those strings stay OUT of the Set so writeEdge rejects them.
98
+ 'FOLLOWS_FROM',
99
+ // Phase 129-03 extension (Spine Repair; OPERATOR_TRANSITION is the typed edge
100
+ // that lib/conversation/operator.cjs used to write via a direct node:sqlite
101
+ // INSERT bypass -- a baselined Phase 128 substrate violation). This is the
102
+ // legal home for that edge: routing the write through navigation.writeEdge
103
+ // (the chokepoint) RETIRES the bypass while preserving the edge the bypass
104
+ // produced (the OPERATOR_TRANSITION row between two operator nodes per Canon
105
+ // Part 4). Consumer = lib/core/navigation/spine-events.cjs::logOperatorTransition
106
+ // (when payload.write_transition_edge is true), called by operator.cjs's
107
+ // transition() path. Mirrors the Phase 129-01 FOLLOWS_FROM additive idiom.
108
+ //
109
+ // Canon Part 8: writeEdge takes (db, params) over a LOCAL room.db handle;
110
+ // OPERATOR_TRANSITION never crosses to Brain. The five-operator vocabulary
111
+ // is generic; only the generic operator names land on the edge.
112
+ 'OPERATOR_TRANSITION',
113
+ // Phase 130-01 extension (Lens-Engine Skeleton; the two lens-engine cascade
114
+ // edges that close review finding H2, the edge-allowlist bypass). INFORMS is
115
+ // the lens-engine onAccept cascade edge -- a lens finding INFORMS a target
116
+ // node (the engine's onAccept path writes it via writeEdge). REJECTED_BECAUSE
117
+ // is the lens-engine onReject rejection-as-data edge per Canon Part 4 ("why
118
+ // not" is graph data): the engine's onReject path records WHY a lens finding
119
+ // was rejected so the next cross-relationship scan learns what not to surface.
120
+ // Mirrors the Phase 129-03 OPERATOR_TRANSITION additive idiom verbatim.
121
+ //
122
+ // INFORMS was NAMED in the shipped-vocabulary comment since Phase 129-01
123
+ // (INFORMS / CONTRADICTS / CONVERGES / INVALIDATES / ENABLES) but was never
124
+ // actually a member of this Set -- so writeEdge would have rejected it. This
125
+ // lands it, closing review finding H2 (the bypass where the engine would
126
+ // otherwise write an edge type writeEdge rejects).
127
+ //
128
+ // Canon Part 8: properties are ENUM-ONLY (a surface scalar). REJECTED_BECAUSE
129
+ // carries a single reason scalar -- a short enum string such as low_evidence
130
+ // / off_topic / duplicate / out_of_scope -- never freeform user content, and
131
+ // never crosses to Brain. writeEdge takes (db, params) over a LOCAL room.db
132
+ // handle.
133
+ //
134
+ // The dual-graph proposal's lens-class taxonomy (ASSOCIATION_LENS /
135
+ // TRANSITION_LENS) stays REJECTED per the 2026-05-16 dual-graph verdict --
136
+ // those strings stay OUT of the Set so writeEdge rejects them.
137
+ 'INFORMS',
138
+ 'REJECTED_BECAUSE',
139
+ // Phase 131-01 extension (Research as Graph-Aware Workflow; the two source-lens
140
+ // cascade edges that close the LOCKED Phase 136 forward contract -- CONTRADICTS
141
+ // and SUPERSEDES are added ADDITIVELY to this closed allow-list, never invented
142
+ // per-phase). They EXTEND the shipped vocabulary (INFORMS / REJECTED_BECAUSE
143
+ // shipped at 130-01) per the 4.8 re-baseline forward-contract lock:
144
+ // CONTRADICTS is the finding-kills-an-existing-claim edge -- a research
145
+ // EvidenceClaim node CONTRADICTS a target claim/assumption when the finding
146
+ // invalidates it (Stage 7 ACCEPT path; Phase 136 renders it as BOTH a graph
147
+ // edge AND a sentence per D-06).
148
+ // SUPERSEDES is the better-evidence-tier-version edge -- a higher-tier
149
+ // EvidenceClaim SUPERSEDES a lower-tier prior claim/EvidenceClaim.
150
+ // Mirrors the Phase 130-01 INFORMS / REJECTED_BECAUSE additive idiom verbatim.
151
+ //
152
+ // Canon Part 4: every choice is graph data; CONTRADICTS / SUPERSEDES ARE the
153
+ // graph-native artifact of the Stage 7 wiring decision.
154
+ // Canon Part 8: properties are ENUM-ONLY (a surface reason scalar -- a short
155
+ // enum string such as finding_kills_claim / higher_evidence_tier); never
156
+ // freeform user content, never crosses to Brain. writeEdge takes (db, params)
157
+ // over a LOCAL room.db handle.
158
+ //
159
+ // The cascade-edge targets are canonical correlation_ids (Phase 130.7
160
+ // computeCorrelationId), NOT raw names -- so edges do not fork across
161
+ // cross-label duplicates. The wirer (Plan 04) resolves the canonical id
162
+ // before calling writeEdge; this Set only governs the predicate vocabulary.
163
+ 'CONTRADICTS',
164
+ 'SUPERSEDES',
165
+ // Phase 139-03 extension (Doctor Accumulative Engine -- Umbilical Cord, the
166
+ // FIRST registered accumulative-engine module). AFFILIATED_WITH is the typed
167
+ // edge a `.umbilical` cord projects into its TARGET room's room.db: a non-room
168
+ // project (code / deck / research / deploy / doc / data tree) declares its
169
+ // affiliation to a registered room via a `.umbilical` marker, and the doctor
170
+ // umbilical module projects exactly ONE AFFILIATED_WITH edge per marker via
171
+ // writeEdge. Added ADDITIVELY to this closed allow-list, never invented
172
+ // per-phase -- mirrors the Phase 131-01 CONTRADICTS / SUPERSEDES additive
173
+ // idiom verbatim.
174
+ //
175
+ // umbilical_storage LOCKED decision (Phase 139-CONTEXT.md): cords are
176
+ // authoritative at the REGISTRY layer (cross-tree, many-to-many) and are
177
+ // PROJECTED into each room.db as LOCAL AFFILIATED_WITH edges. The cord is
178
+ // the cross-tree source of truth; the edge is its per-room projection.
179
+ //
180
+ // Canon Part 8: the AFFILIATED_WITH edge is a LOCAL edge written into the
181
+ // TARGET room's OWN room.db ONLY -- NEVER a raw cross-room edge (no second
182
+ // room's db is opened to write it), and NEVER crosses to Brain. Properties
183
+ // are ENUM/scalar ONLY (relation enum + born ISO date); the marker's freeform
184
+ // `note:` field NEVER lands on the edge (it stays LOCAL to the marker file).
185
+ // writeEdge takes (db, params) over a LOCAL room.db handle.
186
+ 'AFFILIATED_WITH',
187
+ // Phase 143.1-03 extension (Dial-TUI Capability Selector; DIALTUI-06 +
188
+ // DIALTUI-08 -- the two dial-decision cascade edges closeReach() writes).
189
+ // Added ADDITIVELY to this closed allow-list, never invented per-phase --
190
+ // mirrors the Phase 139-03 AFFILIATED_WITH additive idiom verbatim. The floor
191
+ // (DEFERRED / REJECTED + every prior type) is byte-identical except these two
192
+ // additions; tests assert a FLOOR + named membership, never an exact count,
193
+ // so this cannot regress baseline.
194
+ //
195
+ // PIVOTED -- DIALTUI-06. The "why not the recommendation" edge: when
196
+ // the navigator rotates the dial OFF the Recommended reach and commits a
197
+ // different one, closeReach writes a PIVOTED edge FROM the chosen reach TO
198
+ // the declined-recommended one. Canon Part 4: "why not" is graph data.
199
+ //
200
+ // Canon Part 8 -- ENUM-ONLY props: {declined_recommended:'cmd:...',
201
+ // margin (a numeric scalar), decision_id (a generated handle)}. NO
202
+ // freeform user content ever lands on a PIVOTED edge -- the same hard
203
+ // constraint the FOLLOWS_FROM precedent (line 79) carries. writeEdge
204
+ // takes (db, params) over a LOCAL room.db handle; PIVOTED never crosses
205
+ // to Brain.
206
+ //
207
+ // SELECTED_REACH -- DIALTUI-08 + FILEVAL-01. Every committed reach (sync OR
208
+ // pivot) writes ONE SELECTED_REACH edge FROM the active focus node TO
209
+ // cmd:<command> with props {jtbd, framework, recommended, decision_id}.
210
+ // This closes the Part 3 Layer-3 gap (the selection becomes graph data at
211
+ // the selection moment) and satisfies FILEVAL-01.
212
+ //
213
+ // Canon Part 9 carve-out: SELECTED_REACH is SYSTEM BOOKKEEPING
214
+ // (created_by=system, exempt from human-confirm), kept DISTINCT from any
215
+ // confirmNode truth-claim promotion. A truth-claim promotion stays on
216
+ // the confirmNode human-byUser path; closeReach never folds it into the
217
+ // SELECTED_REACH write. writeEdge takes (db, params) over a LOCAL
218
+ // room.db handle; SELECTED_REACH never crosses to Brain.
219
+ 'PIVOTED',
220
+ 'SELECTED_REACH',
221
+ // Phase 149-01 extension (GSD Planning Artifacts as Local-Graph Members; the
222
+ // two GSD-lineage cascade edges the planning-artifact writer needs). Added
223
+ // ADDITIVELY to this closed allow-list, never invented per-phase -- mirrors
224
+ // the Phase 143.1-03 PIVOTED / SELECTED_REACH additive idiom verbatim. The
225
+ // floor (DEFERRED / REJECTED + every prior type) is byte-identical except
226
+ // these two additions; tests assert a FLOOR + named membership, never an
227
+ // exact count, so this cannot regress baseline. INFORMS (line 127) is the
228
+ // third lineage type and was already a member; these two complete the
229
+ // FEEDS_INTO / VALIDATES / INFORMS lineage triple the SPEC names.
230
+ //
231
+ // FEEDS_INTO -- GAM-03. The artifact-lineage spine edge: SPEC FEEDS_INTO
232
+ // CONTEXT FEEDS_INTO PLAN (and PLAN FEEDS_INTO a requirement when that
233
+ // reading fits). The directed "this artifact informs the next stage of
234
+ // the GSD lifecycle" edge.
235
+ //
236
+ // VALIDATES -- GAM-03. The verification-lineage edge: a VERIFICATION
237
+ // artifact VALIDATES a requirement (or the owning PLAN). The directed
238
+ // "this artifact confirms that node was satisfied" edge.
239
+ //
240
+ // Canon Part 4: every choice is graph data; the GSD lineage edges ARE the
241
+ // graph-native artifact of the planning-doc lifecycle (Canon Part 9: files
242
+ // preserve meaning, SQL remembers and navigates).
243
+ // Canon Part 8: properties are ENUM/scalar ONLY (a phase id + an artifact-type
244
+ // enum); the artifact BODY never lands on the edge. writeEdge takes
245
+ // (db, params) over a LOCAL room.db handle; FEEDS_INTO / VALIDATES never
246
+ // cross to Brain. Cross-room aggregation is prevented structurally:
247
+ // writeEdge(db, params) only ever holds the one db handle its caller
248
+ // passed in, so it is physically incapable of opening or writing a
249
+ // second room's db (Phase 8 cross-room fence; no runtime assertion
250
+ // exists because no code path has been found or hypothesized where a
251
+ // handle is swapped mid-call -- see 273-RESEARCH.md D-04).
252
+ //
253
+ // Emitted by: lib/core/navigation/planning-artifacts.cjs writeLineageEdge,
254
+ // which constrains its accepted set to the LINEAGE subset
255
+ // {FEEDS_INTO, VALIDATES, INFORMS} -- a subset of this allow-list, so this
256
+ // Set stays the single source of truth for the predicate vocabulary.
257
+ 'FEEDS_INTO',
258
+ 'VALIDATES',
259
+ // Phase 150-01 extension (Memory Cortex as Graph Members; the three cortex
260
+ // lineage cascade edges the memory-artifact writer needs). Added ADDITIVELY to
261
+ // this closed allow-list, never invented per-phase -- mirrors the Phase 149-01
262
+ // FEEDS_INTO / VALIDATES additive idiom verbatim. The floor (DEFERRED /
263
+ // REJECTED + every prior type) is byte-identical except these three additions;
264
+ // tests assert a FLOOR + named membership, never an exact count, so this cannot
265
+ // regress baseline. INFORMS (line 127) is the fourth cortex type and was
266
+ // already a member; these three complete the STATES / SUPPORTS / INFORMS /
267
+ // DESCRIBES cortex lineage taxonomy the SPEC names.
268
+ //
269
+ // STATES -- MEM-01. The governing-thought-states-section edge: a
270
+ // governing_thought node STATES the section memory_artifact it summarizes.
271
+ //
272
+ // SUPPORTS -- MEM-01. The claim-supports-governing-thought edge: a MECE
273
+ // claim node SUPPORTS the governing_thought it underpins.
274
+ //
275
+ // DESCRIBES -- MEM-01. The persona-describes-room edge: a navigator_persona
276
+ // node DESCRIBES the room node.
277
+ //
278
+ // Canon Part 4: every choice is graph data; the cortex lineage edges ARE the
279
+ // graph-native artifact of the user-memory lifecycle (Canon Part 9: files
280
+ // preserve meaning, SQL remembers and navigates).
281
+ // Canon Part 8: properties are ENUM/scalar ONLY (a section id + a kind enum);
282
+ // the memory BODY never lands on the edge. writeEdge takes (db, params) over
283
+ // a LOCAL room.db handle; STATES / SUPPORTS / DESCRIBES never cross to Brain.
284
+ // Cross-room aggregation is prevented structurally: writeEdge(db, params)
285
+ // only ever holds the one db handle its caller passed in, so it is
286
+ // physically incapable of opening or writing a second room's db (Phase 8
287
+ // cross-room fence; no runtime assertion exists because no code path has
288
+ // been found or hypothesized where a handle is swapped mid-call -- see
289
+ // 273-RESEARCH.md D-04).
290
+ //
291
+ // Emitted by: lib/core/navigation/memory-artifacts.cjs writeCortexLineageEdge,
292
+ // which constrains its accepted set to the CORTEX subset
293
+ // {STATES, SUPPORTS, INFORMS, DESCRIBES} -- a subset of this allow-list, so
294
+ // this Set stays the single source of truth for the predicate vocabulary.
295
+ 'STATES',
296
+ 'SUPPORTS',
297
+ 'DESCRIBES',
298
+ // Phase 150.8 extension (Meeting Micro-Knowledge DIKW Filing; the three
299
+ // Knowledge-rung relationship edges the typed-claim writer needs to express
300
+ // refinement + causal + instantiation structure between claim nodes). Added
301
+ // ADDITIVELY to this closed allow-list, never invented per-phase -- mirrors
302
+ // the Phase 150-01 STATES / SUPPORTS / DESCRIBES additive idiom verbatim. The
303
+ // floor (DEFERRED / REJECTED + every prior type) is byte-identical except
304
+ // these three additions; tests assert a FLOOR + named membership, never an
305
+ // exact count, so this cannot regress baseline.
306
+ //
307
+ // NAVIGATOR-GATED Canon Part 4 + Phase 108 amendment (AskUserQuestion approval
308
+ // D-150.8, 2026-06-12). Unlike the routine additive-without-amendment idiom
309
+ // above, this trio MOVES A FROZEN CONSTITUTIONAL SET: a navigator approved
310
+ // the closed-set change via a blocking AskUserQuestion BEFORE these bytes
311
+ // landed, mirroring the Phase 148 D-09 reach-count amendment procedure. The
312
+ // three deferred types (GENERALIZES / CONTRADICTS_CONDITIONALLY /
313
+ // SUPERSEDES_v2) stay OUT (SEED-023, v1.14.0) so writeEdge rejects them.
314
+ //
315
+ // REFINES -- DIKW-04. The refinement edge: a new claim TIGHTENS or
316
+ // CONDITIONS a prior claim without invalidating it. Today the schema
317
+ // forces a wrong binary choice between INFORMS (too weak) and CONTRADICTS
318
+ // (wrong); REFINES is the missing middle. Source = the refining claim,
319
+ // target = the refined-prior claim.
320
+ //
321
+ // ROOT_CAUSES -- DIKW-04. The directional causal-mechanism edge:
322
+ // source = the cause, target = the effect. A causal claim ROOT_CAUSES the
323
+ // outcome it explains; makes the causal chain queryable as graph paths.
324
+ //
325
+ // INSTANTIATES -- DIKW-04. The example-evidences-abstraction edge: a
326
+ // concrete example claim INSTANTIATES an abstract claim it is an instance
327
+ // of. Source = the concrete instance, target = the abstract claim.
328
+ //
329
+ // Canon Part 4: every choice is graph data; REFINES / ROOT_CAUSES /
330
+ // INSTANTIATES ARE the graph-native artifact of the Knowledge-rung filing
331
+ // decision (Canon Part 9: files preserve meaning, SQL remembers and
332
+ // navigates).
333
+ // Canon Part 8: properties are ENUM/scalar ONLY. The claim/segment BODY never
334
+ // lands on the edge; valid_from / valid_until (TV-01) are SCALARS that ride
335
+ // the existing writeEdge properties JSON param with ZERO signature change.
336
+ // writeEdge takes (db, params) over a LOCAL room.db handle; REFINES /
337
+ // ROOT_CAUSES / INSTANTIATES never cross to Brain. Cross-room aggregation
338
+ // forbidden.
339
+ 'REFINES',
340
+ 'ROOT_CAUSES',
341
+ 'INSTANTIATES',
342
+ // Phase 163-01 extension (Trending-to-the-Absurd Harness; the four
343
+ // domain-taxonomy relationship edges the connective taxonomy layer needs to
344
+ // make domains / subdomains / focus_areas first-class connected graph citizens
345
+ // per D-163-01). Added ADDITIVELY to this closed allow-list, never invented
346
+ // per-phase -- mirrors the Phase 150.8 REFINES / ROOT_CAUSES / INSTANTIATES
347
+ // additive idiom verbatim. The floor (DEFERRED / REJECTED + every prior type)
348
+ // is byte-identical except these four additions; tests assert a FLOOR + named
349
+ // membership, never an exact count, so this cannot regress baseline.
350
+ //
351
+ // NAVIGATOR-GATED Canon Part 4 + Phase 108 amendment (D-163-03, navigator-LOCKED
352
+ // 2026-06-17). Unlike the routine additive-without-amendment idiom above, this
353
+ // set of four MOVES A FROZEN CONSTITUTIONAL SET: a navigator ratified the
354
+ // closed-set change at a blocking checkpoint BEFORE these bytes landed,
355
+ // mirroring the Phase 150.8 D-150.8 trio and the Phase 148 D-09 reach-count
356
+ // amendment procedure.
357
+ //
358
+ // DECOMPOSED_INTO -- the hierarchy edge. Source = the parent taxonomy node,
359
+ // target = the child. Legal endpoints are domain -> subdomain and
360
+ // subdomain -> focus_area ONLY. Makes the domain tree queryable as graph
361
+ // paths (walk a domain down to its focus areas and back).
362
+ //
363
+ // PART_OF -- the structural-membership edge. Source = the member node, target
364
+ // = the domain / subdomain it belongs to. Legal source endpoints are ANY
365
+ // node type (claim / assumption / opportunity / Artifact / Section / trend /
366
+ // CausalClaim); legal target endpoints are domain / subdomain / focus_area.
367
+ // This is the connective edge that lets a domain walk to everything it
368
+ // touches (D-163-01).
369
+ //
370
+ // TAGGED_WITH -- the lightweight categorization edge. Source = any node,
371
+ // target = a domain / subdomain (the connective taxonomy tag). Weaker than
372
+ // PART_OF: a tag relationship, not a structural-membership claim.
373
+ //
374
+ // RELATED_TO -- the symmetric cross-domain relatedness edge between two
375
+ // taxonomy nodes (domain <-> domain, subdomain <-> subdomain) when a theme
376
+ // spans them. The undirected sibling of DECOMPOSED_INTO's hierarchy.
377
+ //
378
+ // Canon Part 4: every choice is graph data; DECOMPOSED_INTO / PART_OF /
379
+ // TAGGED_WITH / RELATED_TO ARE the graph-native artifact of the connective
380
+ // taxonomy layer (Canon Part 9: files preserve meaning, SQL remembers and
381
+ // navigates).
382
+ // Canon Part 8: properties are ENUM/scalar ONLY (the taxonomy node id + a
383
+ // relation enum); never prose, never a domain/trend BODY. These edges are
384
+ // LOCAL room.db edges; writeEdge takes (db, params) over a LOCAL room.db
385
+ // handle; DECOMPOSED_INTO / PART_OF / TAGGED_WITH / RELATED_TO never cross to
386
+ // Brain. Cross-room aggregation is prevented structurally: writeEdge(db,
387
+ // params) only ever holds the one db handle its caller passed in, so it
388
+ // is physically incapable of opening or writing a second room's db
389
+ // (Phase 8 cross-room fence; no runtime assertion exists because no code
390
+ // path has been found or hypothesized where a handle is swapped
391
+ // mid-call -- see 273-RESEARCH.md D-04).
392
+ 'DECOMPOSED_INTO',
393
+ 'PART_OF',
394
+ 'TAGGED_WITH',
395
+ 'RELATED_TO',
396
+ // Phase 168-01 extension (Part 4 edge-vocabulary RECONCILIATION; the three
397
+ // Part-4-blessed cascade edges the Part 9 chokepoint frozen set was MISSING).
398
+ // Added ADDITIVELY to this closed allow-list, never invented per-phase --
399
+ // mirrors the Phase 163-01 DECOMPOSED_INTO / PART_OF / TAGGED_WITH / RELATED_TO
400
+ // additive idiom verbatim. The floor (DEFERRED / REJECTED + every prior type)
401
+ // is byte-identical except these three additions; tests assert a FLOOR + named
402
+ // membership, never an exact count, so this cannot regress baseline.
403
+ //
404
+ // This is a RECONCILIATION, not a net-new vocabulary expansion. Canon Part 4
405
+ // PROSE has ALWAYS declared the cascade edges INFORMS / CONTRADICTS /
406
+ // CONVERGES / INVALIDATES / ENABLES, and the legacy lib/core/lazygraph-ops.cjs
407
+ // path (the Phase 84 cascade path) ALREADY writes all three. But this Part 9
408
+ // writeEdge chokepoint frozen set carried only INFORMS (line 127) + CONTRADICTS
409
+ // (line 153) and never caught up on CONVERGES / INVALIDATES / ENABLES -- so
410
+ // writeEdge rejected three edges the canon already blessed. This block brings
411
+ // the code into line with the already-blessed prose (Canon Part 6 dog-fooding:
412
+ // the plugin must honor its own canon; the drift was a self-CONTRADICTS this
413
+ // phase resolves). Phase 164's issue-tree must emit INVALIDATES / ENABLES via
414
+ // THIS chokepoint, so closing the drift was a blocking prerequisite.
415
+ //
416
+ // NAVIGATOR-GATED Canon Part 4 + Phase 108 amendment (D-168, navigator-LOCKED
417
+ // 2026-06-18). Unlike the routine additive-without-amendment idiom above, this
418
+ // trio MOVES A FROZEN CONSTITUTIONAL SET: a navigator ratified the closed-set
419
+ // reconciliation at a blocking checkpoint BEFORE these bytes landed, mirroring
420
+ // the Phase 163 D-163-03 quad and the Phase 150.8 D-150.8 trio. BELONGS_TO is
421
+ // NOT added (the Phase 164 issue-tree REMAPS it to PART_OF, the structural
422
+ // edge Phase 163 already froze); the lazygraph-ops.cjs legacy-array
423
+ // two-vocabulary unification (HSI_CONNECTION / REVERSE_SALIENT / RESOLVES_VIA
424
+ // etc.) is a deferred follow-on, OUT of scope here.
425
+ //
426
+ // CONVERGES -- the convergence cascade edge (CLAUDE.md cross-relationship
427
+ // rule 3): this artifact's themes appear in 3+ other sections. Source = the
428
+ // converging artifact, target = a section/node the theme converges on.
429
+ //
430
+ // INVALIDATES -- the assumption-stale cascade edge (CLAUDE.md rule 4): this
431
+ // artifact makes an existing assumption stale. Source = the invalidating
432
+ // artifact, target = the now-stale assumption.
433
+ //
434
+ // ENABLES -- the unblocks cascade edge (CLAUDE.md rule 5): this artifact
435
+ // unblocks something in another section. Source = the enabling artifact,
436
+ // target = the unblocked node/section.
437
+ //
438
+ // Canon Part 4: every choice is graph data; CONVERGES / INVALIDATES / ENABLES
439
+ // ARE the graph-native artifact of the cross-relationship scan (Canon Part 9:
440
+ // files preserve meaning, SQL remembers and navigates).
441
+ // Canon Part 8: properties are ENUM/scalar ONLY (a relation enum + scalar
442
+ // counts); never prose, never an artifact BODY. These edges are LOCAL room.db
443
+ // edges; writeEdge takes (db, params) over a LOCAL room.db handle; CONVERGES /
444
+ // INVALIDATES / ENABLES never cross to Brain. Cross-room aggregation is prevented structurally:
445
+ // writeEdge(db, params) only ever holds the one db handle its caller passed
446
+ // in, so it is physically incapable of opening or writing a second room's
447
+ // db (Phase 8 cross-room fence; no runtime assertion exists because no
448
+ // code path has been found or hypothesized where a handle is swapped
449
+ // mid-call -- see 273-RESEARCH.md D-04).
450
+ 'CONVERGES',
451
+ 'INVALIDATES',
452
+ 'ENABLES',
453
+ // Phase 169-00 extension (Graph-Derivation Harness; the room-lineage edge the
454
+ // D-169-11 fractal joint needs to have a LEGAL, graph-navigable frozen-set
455
+ // representation). Added ADDITIVELY to this closed allow-list, never invented
456
+ // per-phase -- mirrors the Phase 168-01 CONVERGES / INVALIDATES / ENABLES
457
+ // additive idiom verbatim. The floor (DEFERRED / REJECTED + every prior type)
458
+ // is byte-identical except this one addition; tests assert a FLOOR + named
459
+ // membership, never an exact count, so this cannot regress baseline.
460
+ //
461
+ // The 8-agent ICM/fractal fan-out (verdict MISSING) proved the joint had no
462
+ // legal home today: PART_OF (above) is the domain-taxonomy structural edge
463
+ // whose legal targets are domain / subdomain / focus_area ONLY (consumed by
464
+ // typed-domain.cjs + get-domains-for-trends.cjs), so a room is an illegal
465
+ // PART_OF target -- writeEdge checks type-membership but NOT endpoints, so a
466
+ // room->room PART_OF would write SILENTLY while breaching the frozen-endpoint
467
+ // contract (a Part 4 self-CONTRADICTS). And BELONGS_TO is NOT a member of this
468
+ // navigation frozen set at all (it lives only in the legacy lazygraph
469
+ // EDGE_TYPES array, written via raw SQL, not this chokepoint), so a child-room
470
+ // BELONGS_TO parent-room via navigation.writeEdge would be REJECTED
471
+ // (invalid_edge_type). NESTED_WITHIN is the clean LEGAL representation: a NEW
472
+ // dedicated lineage type, NOT a widening of PART_OF endpoints, so room-lineage
473
+ // walks never pollute the domain-taxonomy traversals.
474
+ //
475
+ // NAVIGATOR-GATED Canon Part 4 + Phase 108 amendment (D-169-11, navigator-LOCKED
476
+ // / ratified as option-a 2026-06-19). Unlike the routine additive-without-
477
+ // amendment idiom above, this MOVES A FROZEN CONSTITUTIONAL SET: a navigator
478
+ // ratified the closed-set move (mint NESTED_WITHIN, NOT a PART_OF widening,
479
+ // NOT BELONGS_TO) at a blocking checkpoint BEFORE these bytes landed, mirroring
480
+ // the Phase 168 D-168 reconciliation, the Phase 163 D-163-03 quad, and the
481
+ // Phase 150.8 D-150.8 trio.
482
+ //
483
+ // NESTED_WITHIN -- the room-lineage edge. Source = a healed / born CHILD room
484
+ // node id (room:<child-slug>), target = its PARENT room node id
485
+ // (room:<parent-slug>). It is the graph-navigable fractal joint (D-169-11):
486
+ // a graph walk traverses the nested hierarchy up to the parent and
487
+ // (read-side, via the rollup) down to children, expressing the ICM / Simon
488
+ // nested-near-decomposable-hierarchy claim directly (the nested folder
489
+ // hierarchy IS the graph). Plans 04 (the rollup walk) + 07 (the heal lineage
490
+ // edge) BOTH consume this type, so it lands Wave 1, before any consumer.
491
+ //
492
+ // Canon Part 4: every choice is graph data; NESTED_WITHIN IS the graph-native
493
+ // artifact of the room-lineage joint (Canon Part 9: files preserve meaning,
494
+ // SQL remembers and navigates).
495
+ // Canon Part 8: properties are ENUM/scalar ONLY (a relation enum + the parent
496
+ // slug handle, e.g. { relation:'nested', parent:'<parent-slug>' }); never
497
+ // prose, never a room/artifact BODY. NESTED_WITHIN is a LOCAL room.db edge in
498
+ // the child's db; writeEdge takes (db, params) over a LOCAL room.db handle;
499
+ // NESTED_WITHIN never crosses to Brain. Cross-room aggregation of the edge is
500
+ // forbidden.
501
+ 'NESTED_WITHIN',
502
+ // Phase 205-02 extension (Larry-Loop Elevation FUSION substrate; the ONE additive
503
+ // cross-frame edge the horizontal-elevation move needs -- decision D-Q5 /
504
+ // 205-CONTEXT.md graph-readiness gap-2). Added ADDITIVELY to this closed
505
+ // allow-list, never invented per-phase -- mirrors the Phase 169-00 NESTED_WITHIN
506
+ // additive idiom verbatim. The floor (DEFERRED / REJECTED + every prior type) is
507
+ // byte-identical except these two additions; tests assert a FLOOR + named
508
+ // membership, never an exact count, so this cannot regress baseline. This is the
509
+ // SAME additive idiom the CONTRADICTS (line 153) / SELECTED_REACH (line 210)
510
+ // members were grown by -- 205-CONTEXT.md names them as the precedent.
511
+ //
512
+ // The FUSION cross-frame move (plan 205-07) is the measured highest-value gap:
513
+ // Larry is strong within-frame (vertical) but weak across-frames (5 Test-6
514
+ // horizontal misses). These two edges give the horizontal move a graph-native
515
+ // home so the connection becomes graph data (Canon Part 4) instead of prose.
516
+ //
517
+ // SHARES_JOB -- D-Q5 gap-2. The horizontal-move edge: two Frame nodes SHARE
518
+ // THE SAME JTBD JOB (the containing-system signal that the navigator's two
519
+ // separate ideas may be one argument). Source + target are Frame node ids
520
+ // (frame:<sid>:<hash>, minted by typed-frame.cjs); the shared-job signal is
521
+ // what the cross-frame synthesis writes when it detects the same underlying
522
+ // job across two open frames.
523
+ //
524
+ // ELEVATES_TO -- D-Q5 gap-2. The frame-to-containing-system edge: when the
525
+ // horizontal move NAMES the system that contains both frames, it writes an
526
+ // ELEVATES_TO edge FROM a Frame node TO the containing-system node it was
527
+ // elevated to. The directed "this frame elevates to that containing system"
528
+ // edge that makes the elevation path queryable as graph paths.
529
+ //
530
+ // Canon Part 4: every choice is graph data; SHARES_JOB / ELEVATES_TO ARE the
531
+ // graph-native artifact of the horizontal cross-frame elevation decision (Canon
532
+ // Part 9: files preserve meaning, SQL remembers and navigates).
533
+ // Canon Part 8: properties are ENUM/scalar ONLY (a job enum/hash handle + a
534
+ // confidence scalar + a generated decision handle); never prose, never a frame
535
+ // or conversation BODY. These are LOCAL room.db edges; writeEdge takes
536
+ // (db, params) over a LOCAL room.db handle; SHARES_JOB / ELEVATES_TO NEVER
537
+ // cross to Brain (Frame membership + its edges are LOCAL only). Cross-room
538
+ // aggregation forbidden.
539
+ 'SHARES_JOB',
540
+ 'ELEVATES_TO',
541
+ // Phase 195-04 extension (Fractal Cross-Room Memory; FCM-11 -- the ONE net-new
542
+ // frozen-set member this phase mints). Added ADDITIVELY beside NESTED_WITHIN and
543
+ // the Phase-205 SHARES_JOB / ELEVATES_TO pair, never clobbering them -- the floor
544
+ // (DEFERRED / REJECTED + every prior type) asserts named MEMBERSHIP, never an exact
545
+ // count, so this additive change cannot regress the baseline (and cannot race the
546
+ // concurrent 205 additions to the SAME Set).
547
+ //
548
+ // UMBILICAL_TO vs NESTED_WITHIN -- the axis contrast (encode it, do not conflate):
549
+ // NESTED_WITHIN is a parent-child VERTICAL lineage joint. Source = a CHILD room
550
+ // node (room:<child-slug>), target = its PARENT room node (room:<parent-slug>);
551
+ // it is a LOCAL edge living in the CHILD's own room.db, expressing the nested
552
+ // near-decomposable hierarchy (Simon / ICM). It walks UP and DOWN the tree.
553
+ // UMBILICAL_TO is a PEER-to-peer HORIZONTAL cross-room link. Source =
554
+ // item_in_room_A, target = item_in_room_B (two SIBLING rooms, no lineage
555
+ // between them); it is the cross-room cord the F.8 fan-out (Plan 05) consumes.
556
+ // Unlike NESTED_WITHIN, it does NOT live in a single child's room.db -- it is
557
+ // the single source of truth at the REGISTRY level (.rooms/cross-room store,
558
+ // lib/core/cross-room-store.cjs), because a peer edge belongs to neither room
559
+ // alone. D-03 locks this registry-level single-write-chokepoint placement.
560
+ //
561
+ // Canon Part 4: every choice is graph data; UMBILICAL_TO IS the graph-native
562
+ // artifact of the cross-room peer link (Canon Part 9: files preserve meaning,
563
+ // SQL remembers and navigates).
564
+ // Canon Part 8 (the cross-room fence): properties are ENUM/scalar ONLY --
565
+ // { relevance, signal, linked_at, session_id } -- never prose, never a room /
566
+ // artifact BODY. UMBILICAL_TO edges are LOCAL to the registry store and NEVER
567
+ // egress to the Brain; only aggregate scalars cross a boundary (Appendix D
568
+ // entry 23). This chokepoint validation mirrors writeEdge's ALLOWED_EDGE_TYPES.has
569
+ // discipline at the registry (.rooms/) level.
570
+ 'UMBILICAL_TO',
571
+ // Phase 200-02 extension (RS Engine Spine reconciliation; SEED-030 / D-200-2 --
572
+ // the TWO RS discovery edge types the Part-9 chokepoint frozen set was MISSING).
573
+ // Added ADDITIVELY to this closed allow-list, never invented per-phase -- mirrors
574
+ // the Phase 195-04 UMBILICAL_TO additive idiom verbatim. The floor (DEFERRED /
575
+ // REJECTED + every prior type) is byte-identical except these two additions; tests
576
+ // assert a FLOOR + named membership, never an exact count, so this cannot regress
577
+ // baseline (and cannot race any concurrent addition to the SAME Set).
578
+ //
579
+ // This is a RECONCILIATION, not a net-new vocabulary. The RS dual-tier writers
580
+ // (rs-neo4j-writer.cjs Tier 1 + rs-sqlite-mirror.cjs Tier 0) emit FIVE edge
581
+ // types -- DISCOVERED / DERIVED_FROM / ENABLES / AUTHORED_BY / AFFILIATED_WITH.
582
+ // THREE were already members (DERIVED_FROM line 52, AFFILIATED_WITH line 176,
583
+ // ENABLES line 422), so rerouting the RS Tier-0 edge writes through the Part-9
584
+ // navigation.writeEdge chokepoint (mirroring lib/core/breakthrough/schema.cjs:
585
+ // nodes via lazygraph, edges via navigation.writeEdge) was rejected only for the
586
+ // remaining two. This block lands them, closing the drift: rs-sqlite-mirror wrote
587
+ // these edges DIRECTLY to the edges table via lazygraph, bypassing the chokepoint
588
+ // (a Part-9 gap the recon flagged). Wave 1 mints the types before Wave 2's reroute
589
+ // consumes them (same land-type-before-consumer idiom as NESTED_WITHIN line 471).
590
+ //
591
+ // NAVIGATOR-GATED Canon Part 4 + Phase 108 amendment (D-200-2, navigator-ratified
592
+ // via the "Extend navigation vocab" blocking checkpoint 2026-07-01). Unlike the
593
+ // routine additive-without-amendment idiom, this MOVES A FROZEN CONSTITUTIONAL
594
+ // SET: the navigator ratified minting exactly DISCOVERED + AUTHORED_BY BEFORE these
595
+ // bytes landed, mirroring the Phase 168 D-168 reconciliation and the Phase 169-00
596
+ // NESTED_WITHIN mint.
597
+ //
598
+ // DISCOVERED -- the discovery-surfaces-a-salient edge. Source = an RSDiscovery
599
+ // node (rsd-<hash>), target = the ReverseSalient node (rs-<hash>) it surfaced.
600
+ // The root edge of the RS discovery sub-graph.
601
+ //
602
+ // AUTHORED_BY -- the paper-authored-by-author edge. Source = a Paper node,
603
+ // target = an Author node (name|orcid composite id). Makes the expert graph
604
+ // (SEED-030) walkable from a discovery's papers to their authors.
605
+ //
606
+ // Canon Part 4: every choice is graph data; DISCOVERED / AUTHORED_BY ARE the
607
+ // graph-native artifact of the reverse-salient discovery (Canon Part 9: files
608
+ // preserve meaning, SQL remembers and navigates).
609
+ // Canon Part 8: properties are ENUM/scalar ONLY (the RS deterministic node-id
610
+ // handles + a schema_version scalar); never prose, never a paper/abstract BODY.
611
+ // Author/Paper/Institution are LOCAL per the D-200-2 local-only expert-graph
612
+ // resolution. writeEdge takes (db, params) over a LOCAL room.db handle;
613
+ // DISCOVERED / AUTHORED_BY never cross to Brain. Cross-room aggregation is prevented structurally:
614
+ // writeEdge(db, params) only ever holds the one db handle its caller passed
615
+ // in, so it is physically incapable of opening or writing a second room's
616
+ // db (Phase 8 cross-room fence; no runtime assertion exists because no
617
+ // code path has been found or hypothesized where a handle is swapped
618
+ // mid-call -- see 273-RESEARCH.md D-04).
619
+ 'DISCOVERED',
620
+ 'AUTHORED_BY',
621
+ // Phase 189-01 extension (HITL Memory Governance; SEED-040 / HMG-08 -- the THREE
622
+ // net-new governance-bookkeeping edge types the human-in-the-loop memory-write path
623
+ // needs). Added ADDITIVELY to this closed allow-list, never invented per-phase --
624
+ // mirrors the Phase 195-04 UMBILICAL_TO / Phase 205-02 SHARES_JOB / ELEVATES_TO
625
+ // additive idiom verbatim (the LIGHTER additive-comment-only idiom, not the
626
+ // navigator-gated blocking-checkpoint ceremony: SEED-040's Provenance line already
627
+ // records navigator-direction 2026-06-30, Shape-F explainer session, and the two most
628
+ // recent precedents 195-04 / 205-02 used this lighter idiom). The floor (DEFERRED /
629
+ // REJECTED + every prior type) is byte-identical except these three additions; the
630
+ // floor test asserts named MEMBERSHIP, never an exact `.size` / count, so this cannot
631
+ // regress baseline (and cannot race any concurrent addition to the SAME Set).
632
+ //
633
+ // These are the F.8/F.9 memory-governance edges (Phase 188 F.8/F.9 shipped; Phase 189
634
+ // repoints them at the general memory-write path per SEED-040). MEMORY_LAYER is NOT
635
+ // a fourth edge type: it does not read as a directed relationship between two nodes,
636
+ // it reads as an attribute of WHERE a memory lives, so it rides as the enum-scalar
637
+ // `memory_layer` PROPERTY on ATTRIBUTED_TO (values within-session | across-session |
638
+ // cross-room, reusing the exact three strings the shipped /mos:memory three-layer
639
+ // model already uses). Exactly THREE edge types are minted, not four.
640
+ //
641
+ // REMEMBERED_AS -- the "this got durably filed" governance-bookkeeping edge.
642
+ // Source = the candidate / proposed node id, target = the section or typed node it
643
+ // was filed as. Written when a human confirms a candidate and it lands durably.
644
+ //
645
+ // ATTRIBUTED_TO -- the WHO-decided edge. Source = the same candidate node id,
646
+ // target = a session / persona identity handle (e.g. session:<id>). Carries the WHO
647
+ // decision plus the `memory_layer` enum property. WHO is an explicit choice, never a
648
+ // silent default.
649
+ //
650
+ // NOT_REMEMBERED_BECAUSE -- the rejection-as-data edge (Canon Part 4: "why not" is
651
+ // graph data). Source / target = the SAME pair REMEMBERED_AS would have used had the
652
+ // confirm toggle been ON. Mirrors the REJECTED_BECAUSE (line 128) /
653
+ // NOT_LINKED_BECAUSE precedent: a declined candidate records WHY so the next
654
+ // memory-ranking pass learns what not to surface.
655
+ //
656
+ // Canon Part 4: every choice is graph data; REMEMBERED_AS / ATTRIBUTED_TO /
657
+ // NOT_REMEMBERED_BECAUSE ARE the graph-native artifact of the human-in-the-loop
658
+ // memory-governance decision (Canon Part 9: files preserve meaning, SQL remembers
659
+ // and navigates; only a human confirms a truth-claim node).
660
+ // Canon Part 8: properties on all three are ENUM / scalar ONLY (a reason enum, a
661
+ // memory_layer enum, a section / session handle); NEVER prose, NEVER a candidate /
662
+ // artifact BODY. These are LOCAL room.db edges; writeEdge takes (db, params) over a
663
+ // LOCAL room.db handle; REMEMBERED_AS / ATTRIBUTED_TO / NOT_REMEMBERED_BECAUSE NEVER
664
+ // cross to Brain. Cross-room aggregation is prevented structurally:
665
+ // writeEdge(db, params) only ever holds the one db handle its caller
666
+ // passed in, so it is physically incapable of opening or writing a
667
+ // second room's db (Phase 8 cross-room fence; no runtime assertion
668
+ // exists because no code path has been found or hypothesized where a
669
+ // handle is swapped mid-call -- see 273-RESEARCH.md D-04).
670
+ 'REMEMBERED_AS',
671
+ 'ATTRIBUTED_TO',
672
+ 'NOT_REMEMBERED_BECAUSE',
673
+ // Phase 218-01 extension (Entity Extraction Pipeline; D-02 -- the THREE
674
+ // domain-relationship edge types the entity extractor needs to wire
675
+ // company / technology / market nodes to each other and to their source
676
+ // artifacts). Added ADDITIVELY to this closed allow-list, never invented
677
+ // per-phase -- mirrors the Phase 189-01 REMEMBERED_AS / ATTRIBUTED_TO /
678
+ // NOT_REMEMBERED_BECAUSE additive idiom verbatim (the LIGHTER additive-
679
+ // comment-only idiom, not the navigator-gated blocking-checkpoint ceremony;
680
+ // this is a routine additive vocabulary extension, the same lighter idiom the
681
+ // two most recent precedents 195-04 / 189-01 used). The floor (DEFERRED /
682
+ // REJECTED + every prior type) is byte-identical except these three additions;
683
+ // the floor test asserts named MEMBERSHIP, never an exact `.size` / count, so
684
+ // this cannot regress baseline (post-phase count = 40, satisfying REQ-2's
685
+ // ">= 40 entries").
686
+ //
687
+ // COMPETES_WITH -- the rivalry edge. Source = a company / technology node,
688
+ // target = the rival company / technology it competes with. Makes the
689
+ // competitive landscape queryable as graph paths.
690
+ //
691
+ // USES_COMPONENT -- the dependency edge. Source = a company / technology
692
+ // node, target = the technology / component it uses. The directed "this
693
+ // entity is built on that component" edge.
694
+ //
695
+ // SUPPLIES_TO -- the supply-chain edge. Source = a supplier company,
696
+ // target = the company it supplies. The directed "this supplier feeds
697
+ // that customer" edge.
698
+ //
699
+ // Canon Part 4: every choice is graph data; COMPETES_WITH / USES_COMPONENT /
700
+ // SUPPLIES_TO ARE the graph-native artifact of the entity-relationship
701
+ // extraction (Canon Part 9: files preserve meaning, SQL remembers and
702
+ // navigates).
703
+ // Canon Part 8: properties are ENUM / scalar ONLY (a relation enum + scalar
704
+ // handles); NEVER prose, NEVER an artifact / entity BODY. These are LOCAL
705
+ // room.db edges; writeEdge takes (db, params) over a LOCAL room.db handle;
706
+ // COMPETES_WITH / USES_COMPONENT / SUPPLIES_TO NEVER cross to Brain.
707
+ // Cross-room aggregation is prevented structurally: writeEdge(db, params)
708
+ // only ever holds the one db handle its caller passed in, so it is
709
+ // physically incapable of opening or writing a second room's db (Phase 8
710
+ // cross-room fence; no runtime assertion exists because no code path has
711
+ // been found or hypothesized where a handle is swapped mid-call -- see
712
+ // 273-RESEARCH.md D-04).
713
+ //
714
+ // Emitted by: lib/core/navigation/typed-entity.cjs linkEntityRelations, which
715
+ // constrains its accepted set to the ENTITY_EDGE_SUBSET {COMPETES_WITH,
716
+ // USES_COMPONENT, SUPPLIES_TO} plus the already-existing DESCRIBES artifact-
717
+ // link type -- a subset of this allow-list, so this Set stays the single
718
+ // source of truth for the predicate vocabulary.
719
+ 'COMPETES_WITH',
720
+ 'USES_COMPONENT',
721
+ 'SUPPLIES_TO',
722
+ // Quick task 260725-9ca extension (Local Reified-Claim Events; the ONE net-new
723
+ // edge type the ContradictionEvent primitive needs). Added ADDITIVELY to this
724
+ // closed allow-list, never invented per-phase -- mirrors the Phase 218-01
725
+ // COMPETES_WITH / USES_COMPONENT / SUPPLIES_TO additive idiom verbatim (the
726
+ // LIGHTER additive-comment-only idiom; this is a routine additive vocabulary
727
+ // extension, not a navigator-gated blocking-checkpoint ceremony). The floor
728
+ // (DEFERRED / REJECTED + every prior type) is byte-identical except this one
729
+ // addition; the floor test asserts named MEMBERSHIP, never an exact `.size` /
730
+ // count, so this cannot regress baseline.
731
+ //
732
+ // CONCERNS -- the event-to-claim "this event is about that claim" edge. It is
733
+ // the FIRST link a reified event node needs: no existing edge type means
734
+ // "this event concerns that claim" (INFORMS is too weak, PART_OF is domain
735
+ // taxonomy, DESCRIBES is artifact-link). Source = a ContradictionEvent node
736
+ // (event:contradictionevent:<hash>), target = its `claim` participant (a
737
+ // typed_claim node, type='claim'). Minted by
738
+ // lib/core/navigation/reified-claim.cjs writeContradictionEvent.
739
+ //
740
+ // Edge vocabulary decision (260725-9ca-CONTEXT.md, LOCKED): CONTRADICTS (already
741
+ // a member at line 153) is REUSED VERBATIM for the event-to-rivalClaim link.
742
+ // NO CONTRADICTED_BY type is minted -- it would be a near-duplicate of an edge
743
+ // type that already means exactly this. So this block adds exactly ONE new
744
+ // member (CONCERNS), and the rivalClaim link rides the pre-existing CONTRADICTS.
745
+ //
746
+ // Canon Part 8: properties on CONCERNS are ENUM/scalar ONLY (a relation enum +
747
+ // the event-node id handle, e.g. { relation:'concerns', event:'event:...' });
748
+ // NEVER prose, NEVER a claim BODY. This is a LOCAL room.db edge; writeEdge
749
+ // takes (db, params) over a LOCAL room.db handle; CONCERNS NEVER crosses to
750
+ // Brain (Canon Part 8 LOCAL -> BRAIN: NO). Cross-room aggregation is prevented structurally:
751
+ // writeEdge(db, params) only ever holds the one db handle its caller passed
752
+ // in, so it is physically incapable of opening or writing a second room's
753
+ // db (Phase 8 cross-room fence; no runtime assertion exists because no
754
+ // code path has been found or hypothesized where a handle is swapped
755
+ // mid-call -- see 273-RESEARCH.md D-04).
756
+ 'CONCERNS',
757
+ // Quick task 260806-grant-grader-room-graph extension (Grant-Rubric Graph
758
+ // Substrate; the ONE net-new edge type the grant-rubric map needs). Added
759
+ // ADDITIVELY to this closed allow-list, never invented per-phase -- mirrors
760
+ // the quick 260725-9ca CONCERNS additive idiom verbatim (the LIGHTER
761
+ // additive-comment-only idiom; this is a routine additive vocabulary
762
+ // extension, not a navigator-gated blocking-checkpoint ceremony). The floor
763
+ // (DEFERRED / REJECTED + every prior type) is byte-identical except this one
764
+ // addition; the floor test asserts named MEMBERSHIP, never an exact `.size` /
765
+ // count, so this cannot regress baseline.
766
+ //
767
+ // MAPS_TO_SECTION -- the rubric-criterion-to-room-section edge. Source = a
768
+ // grant_criterion anchor node (grant_criterion:<program>:<criterion_id>,
769
+ // minted by lib/core/navigation/grant-rubric.cjs writeGrantRubricGraph),
770
+ // target = the standard Section node it maps to (the 8 canonical slugs
771
+ // room-birth.cjs writeSectionNodes mints at birth). It is the graph-native
772
+ // home of the grant rubric's room_section map: one edge per criterion with
773
+ // a non-null room_section, so "which sections does this program's rubric
774
+ // touch, and which criteria live where" is a graph walk, not a JSON read.
775
+ // A criterion with room_section null (a pure post-award process/reporting
776
+ // item) gets NO edge -- the null is honest, never forced.
777
+ //
778
+ // Edge vocabulary decision (quick 260806 PLAN.md D2, LOCKED): PART_OF /
779
+ // TAGGED_WITH are NOT reused -- their frozen legal targets are domain /
780
+ // subdomain / focus_area ONLY (Phase 163-01), and Phase 169-00 explicitly
781
+ // REJECTED widening PART_OF endpoints as the pattern for a new joint (the
782
+ // NESTED_WITHIN precedent: mint a dedicated type, keep taxonomy traversals
783
+ // unpolluted). The verdict->section gap-profile edge reuses the pre-existing
784
+ // INFORMS member with scalar count properties, so this block adds exactly
785
+ // ONE new member.
786
+ //
787
+ // Canon Part 4: every choice is graph data; MAPS_TO_SECTION IS the graph-
788
+ // native artifact of the rubric's room_section mapping (Canon Part 9: files
789
+ // preserve meaning, SQL remembers and navigates).
790
+ // Canon Part 8: properties are ENUM/scalar ONLY (a relation enum + the
791
+ // program slug + the category enum); NEVER prose, NEVER a criterion's
792
+ // details/common_mistake BODY (those stay in the LOCAL fixture JSON). This
793
+ // is a LOCAL room.db edge; writeEdge takes (db, params) over a LOCAL
794
+ // room.db handle; MAPS_TO_SECTION NEVER crosses to Brain (the grant rubric
795
+ // is real IIA domain data, empirically blocked by the Part 8 egress guard
796
+ // -- see grade-grant.cjs header). Cross-room aggregation is prevented structurally:
797
+ // writeEdge(db, params) only ever holds the one db handle its caller passed
798
+ // in, so it is physically incapable of opening or writing a second room's
799
+ // db (Phase 8 cross-room fence; no runtime assertion exists because no
800
+ // code path has been found or hypothesized where a handle is swapped
801
+ // mid-call -- see 273-RESEARCH.md D-04).
802
+ 'MAPS_TO_SECTION',
803
+ // Quick task 260903-gct extension, implementing R16 of the ratified MOS
804
+ // Reasoning Constitution v3.1.0 section 2.2
805
+ // (docs/2026-09-03-CONSTITUTION-v3.1.0-mos-reasoning-constitution.md,
806
+ // navigator sign-off 2026-09-03). v3.0.0's original R2 listed five edges
807
+ // to add -- SUPPORTS, CONTRADICTS, REFINES, DERIVED_FROM, SOURCED_FROM --
808
+ // and this session confirmed by direct code read that four of those five
809
+ // (SUPPORTS line 296, CONTRADICTS line 163, REFINES line 339, DERIVED_FROM
810
+ // line 57) were ALREADY live. R16 struck those four; this block mints
811
+ // exactly ONE member.
812
+ //
813
+ // The additive-floor contract: the floor (DEFERRED / REJECTED + every
814
+ // prior type) is byte-identical except this one addition; tests assert
815
+ // named MEMBERSHIP, never an exact `.size`, so this cannot regress the
816
+ // baseline.
817
+ //
818
+ // SOURCED_FROM -- the PROVENANCE edge. Source = a written reasoning node
819
+ // (a claim, conclusion, decision, or artifact node); target = a node id
820
+ // that write was actually sourced FROM (its evidence or subject node).
821
+ // Per the filed T2 write-back design
822
+ // (docs/2026-09-03-DESIGN-t2-write-back-minimal.md line 17):
823
+ // "SOURCED_FROM from the new node to every node id the gate decision
824
+ // was actually about."
825
+ //
826
+ // AXIS CONTRAST with DERIVED_FROM (encode it, do not conflate, mirroring
827
+ // the UMBILICAL_TO vs NESTED_WITHIN contrast at line 542): DERIVED_FROM
828
+ // is the Phase 120-00 STRUCTURAL ENFORCEMENT edge -- narrow and typed,
829
+ // source = a Breakthrough node, target = an Artifact node, and a
830
+ // Breakthrough CANNOT surface without at least one of them. SOURCED_FROM
831
+ // is the GENERAL provenance edge for any written reasoning node back to
832
+ // its evidence; it enforces no surfacing precondition and its endpoints
833
+ // are not restricted to Breakthrough/Artifact.
834
+ //
835
+ // NO CONSUMER SHIPS IN THIS TASK: the T2 write-back path that will emit
836
+ // SOURCED_FROM is DESIGNED and FILED but NOT implemented, and that design
837
+ // names R16 as its blocking dependency. This is the land-the-type-before-
838
+ // the-consumer idiom NESTED_WITHIN (line 471) and DISCOVERED /
839
+ // AUTHORED_BY (line 588) were grown by.
840
+ //
841
+ // Canon Part 4: every choice is graph data; SOURCED_FROM IS the graph-native
842
+ // artifact of provenance (Canon Part 9: files preserve meaning, SQL
843
+ // remembers and navigates).
844
+ // Canon Part 8: properties are ENUM / scalar ONLY (a relation enum plus
845
+ // node-id handles); NEVER prose, NEVER a claim or artifact BODY. This is
846
+ // a LOCAL room.db edge; writeEdge takes (db, params) over a LOCAL room.db
847
+ // handle; SOURCED_FROM NEVER crosses to Brain. Cross-room aggregation is
848
+ // prevented structurally: writeEdge(db, params) only ever holds the one
849
+ // db handle its caller passed in, so it is physically incapable of
850
+ // opening or writing a second room's db (Phase 8 cross-room fence; no
851
+ // runtime assertion exists because no code path has been found or
852
+ // hypothesized where a handle is swapped mid-call -- see
853
+ // 273-RESEARCH.md D-04).
854
+ 'SOURCED_FROM',
855
+ // Quick task 260903-i2x extension, implementing T2's node-writing half of
856
+ // the ratified MOS Reasoning Constitution v3.1.0
857
+ // (docs/2026-09-03-CONSTITUTION-v3.1.0-mos-reasoning-constitution.md).
858
+ // The filed T2 write-back design (docs/2026-09-03-DESIGN-t2-write-back-
859
+ // minimal.md line 19 and line 39) names this edge as T2's own scope, and
860
+ // CLAUDE.md's open-handoff row independently names "T2's node-writing
861
+ // half (claim-node creation + SOURCED_FROM/USES_FRAMEWORK edges ...)" as
862
+ // the remaining work this task closes.
863
+ //
864
+ // USES_FRAMEWORK -- the METHODOLOGY-PROVENANCE edge. Source = a written
865
+ // reasoning node (the decision node a gate approval mints); target =
866
+ // a `framework:<slug>` handle naming the methodology that was active
867
+ // when the decision was made.
868
+ //
869
+ // AXIS CONTRAST with SOURCED_FROM (encode it, do not conflate): SOURCED_
870
+ // FROM points at the EVIDENCE a write was sourced from; USES_FRAMEWORK
871
+ // points at the METHOD used to reach it. Different questions,
872
+ // different targets, no overlap.
873
+ //
874
+ // BRAIN-VS-LOCAL COLLISION, named honestly: a USES_FRAMEWORK relationship
875
+ // already exists in the Brain graph (references/brain/room-hierarchy-
876
+ // schema.md:72, Room -> Framework, 86 edges per docs/BRAIN-GRAPH-
877
+ // CENSUS.generated.md). This LOCAL member is a same-named but
878
+ // INDEPENDENT local edge; per Canon Part 8 it NEVER crosses to Brain,
879
+ // and the two are never synced or compared. The framework NAME is a
880
+ // generic methodology handle (the only class of token Part 8 permits
881
+ // near a boundary), never room content.
882
+ //
883
+ // NOT the land-the-type-before-the-consumer idiom (unlike NESTED_WITHIN
884
+ // / DISCOVERED): this type's consumer (lib/core/navigation/reasoning-
885
+ // write.cjs) ships in the SAME task set that mints this type.
886
+ //
887
+ // Canon Part 4: every choice is graph data; USES_FRAMEWORK IS the
888
+ // graph-native artifact of methodology provenance (Canon Part 9: files
889
+ // preserve meaning, SQL remembers and navigates).
890
+ // Canon Part 8: properties are ENUM / scalar ONLY (a relation enum plus a
891
+ // framework slug); NEVER prose, NEVER a claim or artifact BODY. This is
892
+ // a LOCAL room.db edge; writeEdge takes (db, params) over a LOCAL room.db
893
+ // handle; USES_FRAMEWORK NEVER crosses to Brain. Cross-room aggregation
894
+ // is prevented structurally: writeEdge(db, params) only ever holds the
895
+ // one db handle its caller passed in, so it is physically incapable of
896
+ // opening or writing a second room's db (Phase 8 cross-room fence; no
897
+ // runtime assertion exists because no code path has been found or
898
+ // hypothesized where a handle is swapped mid-call -- see
899
+ // 273-RESEARCH.md D-04).
900
+ 'USES_FRAMEWORK',
901
+ ]));
902
+
903
+ function isPlainObject(v) {
904
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
905
+ }
906
+
907
+ // writeEdge(db, params) -- the 15th-style additive re-export on the
908
+ // navigation.cjs closed surface (see navigation.cjs header comment for the
909
+ // canonical re-export pattern alongside logMemoryEvent + firstCapturedLastTouchedBySection).
910
+ //
911
+ // Positional db (first arg, owned by caller via openRoomDb), params object
912
+ // (second arg) with: { source_id, target_id, edge_type, properties }.
913
+ //
914
+ // Returns { ok: true, edge_id, type, source, target, written } on success, or
915
+ // { ok: false, reason, detail? } on validation / write failure. Defensive --
916
+ // never throws on caller input. The underlying prepare/run is sync per the
917
+ // node:sqlite contract (matches the rest of the navigation module).
918
+ // Phase 224-01 (D-05) additive extension: writeEdge gains an OPTIONAL
919
+ // review_status param. When present it must be exactly 'proposed' or 'confirmed'
920
+ // (the derivation writer passes 'proposed'; a future human-confirm path passes
921
+ // 'confirmed'), else the write is rejected (reason: invalid-review-status).
922
+ // When ABSENT it binds NULL -- so every pre-224 caller is byte-compatible (their
923
+ // edges stay review_status NULL, the "not-a-proposal" state documented in the
924
+ // phase-224-edge-review-status migration header).
925
+ //
926
+ // THE UPSERT INVARIANT (Req 4 / the Ralph invariant): review_status is set at
927
+ // FIRST INSERT ONLY. The ON CONFLICT clause updates properties ONLY and NEVER
928
+ // touches review_status -- so a re-derivation never downgrades a 'confirmed'
929
+ // edge and never demotes a NULL legacy edge. No writer can promote or demote an
930
+ // existing row through this path; 'confirmed' stays a separate byUser path.
931
+ //
932
+ // Phase 224 review (WR-06) extension: the properties update is ALSO withheld
933
+ // when the existing row is 'confirmed' (DO UPDATE ... WHERE review_status IS
934
+ // NOT 'confirmed'). Phase 224's automatic background deriver upserts the same
935
+ // (source, target, type) key space humans ratify; without the guard a
936
+ // re-derivation replaced a confirmed edge's whole properties JSON (decision
937
+ // handles, TV-01 validity scalars) with {relation:'derived', ...}. The
938
+ // review_status invariant is thereby mirrored onto properties for confirmed
939
+ // rows. NULL (legacy) and 'proposed' rows keep the pre-224 update-on-conflict
940
+ // contract, byte-compatible with every pre-224 caller.
941
+ //
942
+ // Phase 273 (D-01/D-01a/D-01b/D-06) -- closes Critical C1 (silent-discard) and
943
+ // Critical C2 (schema-mismatch throw) named by the sqlite-graph-layer code
944
+ // review. C1: the WHERE-guarded UPDATE above can genuinely suppress a write
945
+ // (a confirmed edge's properties are intentionally NOT overwritten) but the
946
+ // pre-273 code returned ok:true either way, with zero signal that the write
947
+ // was a no-op. The additive `written` field closes that: true when
948
+ // run().changes > 0, false when the confirmed-guard suppressed the row, with
949
+ // `reason: 'suppressed_by_confirmed'` naming why. `ok` NEVER flips on
950
+ // suppression -- 77 call sites across 43 files read `.ok`, ~30 branch on it,
951
+ // and room-birth.cjs:948 rolls back an entire room birth on `!ok`; changing
952
+ // what `ok` means would be a 43-file regression, not a fix (D-01a).
953
+ //
954
+ // C2: a handle opened via lazygraph-ops.cjs::openGraph (the base schema) has
955
+ // no review_status column and no identity table for the Phase 224 migration
956
+ // to run against (D-01b -- a structural conclusion, not a preference: see
957
+ // edgesHasReviewStatus below). The pre-273 code always referenced
958
+ // review_status in its INSERT, so it threw "table edges has no column named
959
+ // review_status" against that handle instead of degrading. writeEdge now
960
+ // probes the schema (edgesHasReviewStatus) and branches: the wide 5-column
961
+ // insert with the confirmed-guard WHERE clause when the column exists, a
962
+ // narrow 4-column insert with NO WHERE guard when it does not (nothing can be
963
+ // "suppressed" referencing a column that is not there, so every write on that
964
+ // branch reports written:true). When a caller supplies review_status against
965
+ // the narrow schema, the gap is never silently dropped: D-06 requires an
966
+ // explicit `review_status_persisted: false` flag on the return so the caller
967
+ // can see the value did not land, mirroring the same "never mask a
968
+ // data-shape gap" lesson C1 itself teaches.
969
+ const VALID_REVIEW_STATUS = Object.freeze(new Set(['proposed', 'confirmed']));
970
+
971
+ // DEPRECATED_EDGE_TYPES -- Quick task 260903-gct, R16 of the ratified MOS
972
+ // Reasoning Constitution v3.1.0 section 2.2 (navigator sign-off 2026-09-03).
973
+ // This is a SOFT deprecation, not removal. RELATED_TO is live in production
974
+ // across 14 files including the production writers
975
+ // lib/core/navigation/typed-domain.cjs (its DOMAIN_EDGE_SUBSET, consumed by
976
+ // linkDomainToRelated) and scripts/huji-intake.cjs:410, plus test-suite
977
+ // writers (tests/helpers/fixture-room-219.cjs:207,
978
+ // tests/test-201-graph-refine-loop.cjs:81,
979
+ // tests/test-edges-domain-taxonomy-floor.cjs:120, which explicitly asserts
980
+ // rr.ok === true). Deleting RELATED_TO from ALLOWED_EDGE_TYPES would return
981
+ // invalid_edge_type to every one of those writers, and would additionally
982
+ // turn the tests/run-all-163.sh frozen-edge-set gate RED: that gate greps
983
+ // this file for the quoted literal 'RELATED_TO' (its DOMAIN_EDGES array,
984
+ // tests/run-all-163.sh lines 172-181).
985
+ //
986
+ // Shaped as a frozen Map from edge_type to its deprecation message, so a
987
+ // future second deprecation is a one-line addition and each type carries its
988
+ // own guidance.
989
+ //
990
+ // The RELATED_TO message is honest on three points: (1) it is deprecated ON
991
+ // WRITE per constitution v3.1.0 R16 and REMAINS allowlisted; (2) there is NO
992
+ // removal version -- the ruling says "deprecated on write", not "removed",
993
+ // so no target version is invented here (unlike room-ops.cjs's legitimate
994
+ // v1.14.0 citation, naming one here would be a fabricated commitment nobody
995
+ // ratified); (3) guidance names a SPECIFIC typed predicate to pick instead,
996
+ // since there is no single mechanical replacement: DECOMPOSED_INTO / PART_OF
997
+ // / TAGGED_WITH for domain-taxonomy structure, or SUPPORTS / REFINES /
998
+ // CONTRADICTS / SOURCED_FROM / DERIVED_FROM for a reasoning link.
999
+ const DEPRECATED_EDGE_TYPES = Object.freeze(new Map([
1000
+ ['RELATED_TO',
1001
+ "edge_type 'RELATED_TO' is deprecated on write per MOS Reasoning "
1002
+ + 'Constitution v3.1.0 R16. It REMAINS allowlisted -- no removal version '
1003
+ + 'is set. Prefer a specific typed predicate instead: DECOMPOSED_INTO / '
1004
+ + 'PART_OF / TAGGED_WITH for domain-taxonomy structure, or SUPPORTS / '
1005
+ + 'REFINES / CONTRADICTS / SOURCED_FROM / DERIVED_FROM for a reasoning '
1006
+ + 'link.'],
1007
+ ]));
1008
+
1009
+ // _deprecationWarned / _warnDeprecatedEdgeOnce -- the explicit per-type
1010
+ // once-guard. Required, not optional (constitution v3.1.0 R16 discovered
1011
+ // facts F-08): writeEdge runs per-write, and room-ops.cjs's claim that
1012
+ // process.emitWarning "dedups by (name, code) per Node process
1013
+ // automatically" is UNVERIFIED and moot there anyway (that module's warning
1014
+ // fires once at module-load time, not per-call). Mirrors
1015
+ // brain-client.cjs::_warnLegacyOnce's module-level guard idiom (itself
1016
+ // modeled on checkFilePermissions._warned) and room-ops.cjs's stable
1017
+ // MOS_DEP_* code convention, so test environments can filter via
1018
+ // NODE_NO_WARNINGS or a process.on('warning') handler.
1019
+ const _deprecationWarned = new Set();
1020
+ function _warnDeprecatedEdgeOnce(edge_type) {
1021
+ if (_deprecationWarned.has(edge_type)) return;
1022
+ _deprecationWarned.add(edge_type);
1023
+ process.emitWarning(
1024
+ DEPRECATED_EDGE_TYPES.get(edge_type),
1025
+ { type: 'DeprecationWarning', code: 'MOS_DEP_EDGE_' + edge_type }
1026
+ );
1027
+ }
1028
+
1029
+ // edgesHasReviewStatus(db) -- Phase 273 (D-01b) schema probe. Mirrors
1030
+ // lib/core/node-insert.cjs::isMigratedSchema's SHAPE (a PRAGMA table_info
1031
+ // probe with a defensive false-on-failure default) without duplicating its
1032
+ // MEANING -- that helper probes the `nodes` table for a different marker
1033
+ // column; this one probes `edges` for `review_status`. Kept as a narrowly-
1034
+ // scoped sibling function, not folded into writeEdge's body, per the same
1035
+ // one-folder-one-job separation node-insert.cjs already established between
1036
+ // isMigratedSchema and insertNode. Recomputed fresh on every call (never
1037
+ // cached) -- the schema shape of a given handle does not change mid-process,
1038
+ // but a cached boolean would be one more piece of hand-maintained state this
1039
+ // chokepoint does not need.
1040
+ function edgesHasReviewStatus(db) {
1041
+ try {
1042
+ return db.prepare('PRAGMA table_info(edges)').all().some((c) => c && c.name === 'review_status');
1043
+ } catch (_e) {
1044
+ return false; // defensive default, matching node-insert.cjs::isMigratedSchema
1045
+ }
1046
+ }
1047
+
1048
+ function writeEdge(db, params) {
1049
+ if (!params || typeof params !== 'object') {
1050
+ return { ok: false, reason: 'invalid_params' };
1051
+ }
1052
+ const { source_id, target_id, edge_type, properties, review_status } = params;
1053
+ if (typeof source_id !== 'string' || source_id.length === 0) {
1054
+ return { ok: false, reason: 'invalid_source_id' };
1055
+ }
1056
+ if (typeof target_id !== 'string' || target_id.length === 0) {
1057
+ return { ok: false, reason: 'invalid_target_id' };
1058
+ }
1059
+ if (typeof edge_type !== 'string' || !ALLOWED_EDGE_TYPES.has(edge_type)) {
1060
+ return { ok: false, reason: 'invalid_edge_type', detail: String(edge_type).slice(0, 40) };
1061
+ }
1062
+ // R16 soft-deprecation probe (constitution v3.1.0 section 2.2). Placement
1063
+ // is load-bearing: AFTER the ALLOWED_EDGE_TYPES gate means a REJECTED type
1064
+ // (e.g. the misspelled RELATES_TO) never warns -- it stays a silent
1065
+ // fail-closed, which is the constitution's own correction. BEFORE the
1066
+ // insert means the warning describes the CALL and still fires even if the
1067
+ // write later throws.
1068
+ const deprecated = DEPRECATED_EDGE_TYPES.has(edge_type);
1069
+ if (deprecated) _warnDeprecatedEdgeOnce(edge_type);
1070
+ // Optional review_status: absent binds NULL; present must be in the enum.
1071
+ let reviewStatusValue = null;
1072
+ if (review_status !== undefined && review_status !== null) {
1073
+ if (typeof review_status !== 'string' || !VALID_REVIEW_STATUS.has(review_status)) {
1074
+ return { ok: false, reason: 'invalid_review_status', detail: String(review_status).slice(0, 40) };
1075
+ }
1076
+ reviewStatusValue = review_status;
1077
+ }
1078
+ // 'confirmed' is the HUMAN-trust state (Canon Part 9: only a human confirms;
1079
+ // the migration header reserves it for the explicit byUser confirmation
1080
+ // path). The chokepoint ENFORCES that here instead of leaving it to
1081
+ // convention: a first-insert 'confirmed' requires a non-empty byUser handle,
1082
+ // recorded as a confirmed_by scalar in properties (mirroring the confirmNode
1083
+ // discipline), so a background writer can never mint human-trust edges.
1084
+ if (reviewStatusValue === 'confirmed'
1085
+ && (typeof params.byUser !== 'string' || params.byUser.trim().length === 0)) {
1086
+ return { ok: false, reason: 'confirmed_requires_by_user' };
1087
+ }
1088
+ const props = isPlainObject(properties) ? Object.assign({}, properties) : {};
1089
+ if (reviewStatusValue === 'confirmed') {
1090
+ props.confirmed_by = params.byUser.trim();
1091
+ }
1092
+ let propsJson;
1093
+ try {
1094
+ propsJson = JSON.stringify(props);
1095
+ } catch (_e) {
1096
+ return { ok: false, reason: 'properties_serialize_failed' };
1097
+ }
1098
+ const edgeId = 'edge:' + edge_type + ':' + Date.now() + ':' + crypto.randomBytes(4).toString('hex');
1099
+ const hasReviewStatus = edgesHasReviewStatus(db);
1100
+ let runResult;
1101
+ try {
1102
+ if (hasReviewStatus) {
1103
+ runResult = db.prepare(
1104
+ 'INSERT INTO edges (source, target, type, properties, review_status) VALUES (?, ?, ?, ?, ?) ' +
1105
+ 'ON CONFLICT(source, target, type) DO UPDATE SET properties = excluded.properties ' +
1106
+ "WHERE edges.review_status IS NOT 'confirmed'"
1107
+ ).run(source_id, target_id, edge_type, propsJson, reviewStatusValue);
1108
+ } else {
1109
+ // C2 (Phase 273): base openGraph schema has no review_status column and
1110
+ // no identity table to run the Phase 224 migration against (D-01b).
1111
+ // Degrade gracefully: 4-column insert, no confirmed-guard WHERE clause
1112
+ // (the column it would reference does not exist here, so nothing can
1113
+ // be "suppressed" -- every write on this branch lands).
1114
+ runResult = db.prepare(
1115
+ 'INSERT INTO edges (source, target, type, properties) VALUES (?, ?, ?, ?) ' +
1116
+ 'ON CONFLICT(source, target, type) DO UPDATE SET properties = excluded.properties'
1117
+ ).run(source_id, target_id, edge_type, propsJson);
1118
+ }
1119
+ } catch (e) {
1120
+ return { ok: false, reason: 'edge_write_failed', detail: String(e.message || '').slice(0, 80) };
1121
+ }
1122
+ const written = Number(runResult.changes) > 0;
1123
+ const result = {
1124
+ ok: true, edge_id: edgeId, type: edge_type, source: source_id, target: target_id,
1125
+ written,
1126
+ };
1127
+ if (!written) result.reason = 'suppressed_by_confirmed';
1128
+ if (reviewStatusValue !== null) {
1129
+ // D-06: when the caller supplied a review_status, always name whether it
1130
+ // actually landed in a real column -- never silently mask the base-schema
1131
+ // gap (false) and never leave the migrated-schema success (true) implicit.
1132
+ result.review_status_persisted = hasReviewStatus;
1133
+ }
1134
+ // R16 additive signal, same idiom as `written` (D-01) and
1135
+ // `review_status_persisted` (D-06): a machine-readable field a caller can
1136
+ // branch on without `ok` changing meaning. Do NOT touch `ok`, do NOT add a
1137
+ // failure branch, and do NOT add this field to any of the early `ok: false`
1138
+ // returns above (constitution v3.1.0 R16 discovered facts F-04: 77 call
1139
+ // sites across 43 files read `.ok`, ~30 branch on it, and
1140
+ // room-birth.cjs:948 rolls back an entire room birth on `!ok`; changing
1141
+ // what `ok` means would be a 43-file regression, not a fix). The return
1142
+ // field is the RELIABLE signal; the warning is the human one --
1143
+ // process.emitWarning with type DeprecationWarning is suppressed under
1144
+ // NODE_NO_WARNINGS or process.noDeprecation, and result.deprecated still
1145
+ // lands in every one of those cases.
1146
+ if (deprecated) result.deprecated = true;
1147
+ return result;
1148
+ }
1149
+
1150
+ module.exports = { ALLOWED_EDGE_TYPES, DEPRECATED_EDGE_TYPES, writeEdge };