@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,1090 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /*
5
+ * Phase 167-01 Task 1 - the declared harness MANIFEST generator (HARN-01,
6
+ * D-167-01, D-167-06).
7
+ *
8
+ * Produces data/harness-manifest.json: the DECLARED, VERSIONED descriptor that
9
+ * NAMES the three existing recipe maps as ONE binding and nothing more. It is a
10
+ * READ LAYER OVER the three maps (a 3-MAP DIGEST), not a merge and not a
11
+ * per-surface registry. It does NOT merge or retire them (D-166-03 PRESERVED).
12
+ *
13
+ * THE GENERATOR IS A PART 7 REUSE SIBLING of
14
+ * scripts/build-orchestration-projection.cjs and
15
+ * scripts/build-connector-registry.cjs. It mirrors the shipped generator idiom
16
+ * wholesale: a deterministic source read -> build -> serialize
17
+ * (JSON.stringify(...,2) + a single trailing newline, byte-stable across
18
+ * machines) -> a 3-branch main (default write / --check / --refresh). The ONE
19
+ * structural difference is grain: the connector/projection generators emit a
20
+ * per-surface / per-node registry; this manifest emits EXACTLY THREE map entries
21
+ * (posture / wiring / ranked_next_reach) and NEVER a per-surface row. A surface
22
+ * (a /mos command, an agent, a skill) is reflected ONLY TRANSITIVELY: it lands
23
+ * in connector-registry.json (its real home, the per-surface registry), the
24
+ * wiring map's digest + source_count change, and this manifest's wiring entry
25
+ * digest + source_count update to match. The manifest digests the three maps; it
26
+ * never inlines or enumerates the surfaces inside them. This is what keeps
27
+ * D-166-03 inviolate.
28
+ *
29
+ * HIGH-1 (LOCKED): the manifest is a 3-MAP DIGEST naming EXACTLY the three maps
30
+ * as { role, path, digest(sha256), source_count }:
31
+ * posture -> data/command-registry.json
32
+ * wiring -> data/connector-registry.json
33
+ * ranked_next_reach -> data/brain-orchestration-projection.json
34
+ *
35
+ * Canon Part 8 (The Graph Boundary) + the Phase 157 amendment (Appendix D entry
36
+ * 19): the manifest carries methodology_tier=mindrian-operation machinery
37
+ * metadata ONLY (the sha256 digests are machinery metadata, NOT contents). It
38
+ * NEVER carries user content. It is a LOCAL artifact: there is NO live Brain read
39
+ * and NO live Brain write anywhere in this file - no brain-client require, no
40
+ * fetch, no http. It is NOT folded into the Brain projection (D-167-01). NO new
41
+ * deps; node built-ins only (node:fs, node:path, node:crypto for sha256). NO
42
+ * YAML; NO TS.
43
+ *
44
+ * Usage:
45
+ * node scripts/build-harness-manifest.cjs
46
+ * read the three maps -> write data/harness-manifest.json
47
+ * node scripts/build-harness-manifest.cjs --check
48
+ * regenerate in memory, assert STALE / UNRESOLVED / MALFORMED, exit-1 on
49
+ * any finding with a stderr recovery line, else print an OK line. Phase
50
+ * 298 (SEED-032) Plan 13: --check ALSO runs every `kind: "contract"`
51
+ * policy in data/harness-policies/ INLINE (runContractChecks below) --
52
+ * pure file reads a faster feedback path onto the truths the nine
53
+ * frozen-phrase tests already pin, never a second source of truth.
54
+ * node scripts/build-harness-manifest.cjs --refresh
55
+ * re-derive the digests + re-write the artifact (idempotent)
56
+ *
57
+ * House rule: hyphens only, no em-dashes.
58
+ */
59
+
60
+ const fs = require('node:fs');
61
+ const path = require('node:path');
62
+ const crypto = require('node:crypto');
63
+
64
+ const REPO_ROOT = path.resolve(__dirname, '..');
65
+ const DATA_DIR = path.join(REPO_ROOT, 'data');
66
+
67
+ const COMMAND_REGISTRY_PATH = path.join(DATA_DIR, 'command-registry.json');
68
+ const CONNECTOR_REGISTRY_PATH = path.join(DATA_DIR, 'connector-registry.json');
69
+ const PROJECTION_PATH = path.join(DATA_DIR, 'brain-orchestration-projection.json');
70
+ const MANIFEST_PATH = path.join(DATA_DIR, 'harness-manifest.json');
71
+
72
+ const GENERATED_NOTE =
73
+ 'GENERATED by scripts/build-harness-manifest.cjs - do not edit by hand';
74
+
75
+ // The only legal methodology_tier for this LOCAL machinery descriptor (Canon
76
+ // Part 8, Phase 157 amendment). The manifest is mindrian-operation machinery
77
+ // metadata, never pws teaching IP and never user content.
78
+ const TIER_OP = 'mindrian-operation';
79
+
80
+ const MANIFEST_VERSION = 2;
81
+
82
+ // ---------------------------------------------------------------------------
83
+ // THE THREE-MAP BINDING (HIGH-1, D-167-01). EXACTLY three entries, one per map.
84
+ // Each entry declares { role, relPath, primaryArrayKey }. The generator reads
85
+ // the on-disk bytes of each path, sha256-digests them (machinery metadata, NOT
86
+ // contents), and counts the primary array's length for source_count. There is
87
+ // NO fourth entry, and NO per-surface row: a surface is digested transitively
88
+ // inside the wiring map's source_count.
89
+ //
90
+ // role -> map (LOCKED naming):
91
+ // posture command-registry.json (the posture / autonomy authority)
92
+ // wiring connector-registry.json (the reach -> surface wiring)
93
+ // ranked_next_reach brain-orchestration-projection.json (the ranked next-reach)
94
+ // ---------------------------------------------------------------------------
95
+ const MAP_BINDINGS = Object.freeze([
96
+ Object.freeze({
97
+ role: 'posture',
98
+ relPath: 'data/command-registry.json',
99
+ absPath: COMMAND_REGISTRY_PATH,
100
+ primaryArrayKey: 'commands',
101
+ }),
102
+ Object.freeze({
103
+ role: 'wiring',
104
+ relPath: 'data/connector-registry.json',
105
+ absPath: CONNECTOR_REGISTRY_PATH,
106
+ primaryArrayKey: 'connectors',
107
+ }),
108
+ Object.freeze({
109
+ role: 'ranked_next_reach',
110
+ relPath: 'data/brain-orchestration-projection.json',
111
+ absPath: PROJECTION_PATH,
112
+ primaryArrayKey: 'nodes',
113
+ }),
114
+ ]);
115
+
116
+ // ---------------------------------------------------------------------------
117
+ // THE RUNTIME-SURFACE BINDINGS (Phase 201-01, SEED-032, D-201-1). The agent is
118
+ // Model + Harness; the three maps above declare the harness's DATA, but SEED-032's
119
+ // point is that the harness's RUNTIME surfaces - the code the harness runs ON -
120
+ // belong in the SAME declared manifest too. These four bindings name each runtime
121
+ // surface as { role, path, digest(sha256) } - DIGEST-ONLY (D-201-1, the RECOMMENDED
122
+ // depth): a fixed-length fingerprint of the on-disk bytes, machinery metadata,
123
+ // NEVER the file contents. There is NO source_count (these are code files, not
124
+ // arrays of sources) and NO richer per-surface schema - a richer schema would turn
125
+ // the read/descriptor into a second orchestration brain (Canon Part 11: one
126
+ // governed path). This block is purely ADDITIVE: it DECLARES what already runs
127
+ // (Part 7), retires no map (D-166-03), keeps maps at EXACTLY three, and opens no
128
+ // Brain wire (Part 8). --check re-digests these files and fails closed on any drift
129
+ // between the declared harness and the on-disk harness.
130
+ //
131
+ // role -> the runtime surface (the code file that IS that surface):
132
+ // orchestration_spine lib/core/chain-executor.cjs (the runChain spine)
133
+ // decide_engine lib/core/navigation-engine.cjs (the decide() engine)
134
+ // cockpit lib/statusline/cockpit-renderer.cjs (the statusline cockpit)
135
+ // brain_orchestration lib/core/directive-envelope.cjs (the brain-orchestration reader)
136
+ // ---------------------------------------------------------------------------
137
+ const RUNTIME_SURFACE_BINDINGS = Object.freeze([
138
+ Object.freeze({
139
+ role: 'orchestration_spine',
140
+ relPath: 'lib/core/chain-executor.cjs',
141
+ absPath: path.join(REPO_ROOT, 'lib/core/chain-executor.cjs'),
142
+ }),
143
+ Object.freeze({
144
+ role: 'decide_engine',
145
+ relPath: 'lib/core/navigation-engine.cjs',
146
+ absPath: path.join(REPO_ROOT, 'lib/core/navigation-engine.cjs'),
147
+ }),
148
+ Object.freeze({
149
+ role: 'cockpit',
150
+ relPath: 'lib/statusline/cockpit-renderer.cjs',
151
+ absPath: path.join(REPO_ROOT, 'lib/statusline/cockpit-renderer.cjs'),
152
+ }),
153
+ Object.freeze({
154
+ role: 'brain_orchestration',
155
+ relPath: 'lib/core/directive-envelope.cjs',
156
+ absPath: path.join(REPO_ROOT, 'lib/core/directive-envelope.cjs'),
157
+ }),
158
+ ]);
159
+
160
+ // ---------------------------------------------------------------------------
161
+ // THE LARRY SURFACE BINDINGS (Phase 298, SEED-032, D-201-1 sibling). Larry
162
+ // speaks through exactly THREE surfaces; each is its OWN declared, digested
163
+ // binding, kept OUT of RUNTIME_SURFACE_BINDINGS (which stays exactly four -
164
+ // tests/test-201-harness-manifest.cjs's EXPECTED_SURFACE_ROLES pins that
165
+ // length). buildSurfaceEntry(binding) is REUSED VERBATIM (Part 7): a
166
+ // `{ role, path, digest }` triple, digest-only, no source_count, matching the
167
+ // runtime-surface entry shape exactly.
168
+ //
169
+ // role -> the speaking surface (the file that IS that surface):
170
+ // cli_agent agents/larry-extended.md (the CLI agent)
171
+ // personality_skill skills/larry-personality/SKILL.md (the skill)
172
+ // desktop_cowork_wire lib/mcp/runtime-instructions.cjs (the Desktop/Cowork wire)
173
+ // ---------------------------------------------------------------------------
174
+ const LARRY_SURFACE_BINDINGS = Object.freeze([
175
+ Object.freeze({
176
+ role: 'cli_agent',
177
+ relPath: 'agents/larry-extended.md',
178
+ absPath: path.join(REPO_ROOT, 'agents/larry-extended.md'),
179
+ }),
180
+ Object.freeze({
181
+ role: 'personality_skill',
182
+ relPath: 'skills/larry-personality/SKILL.md',
183
+ absPath: path.join(REPO_ROOT, 'skills/larry-personality/SKILL.md'),
184
+ }),
185
+ Object.freeze({
186
+ role: 'desktop_cowork_wire',
187
+ relPath: 'lib/mcp/runtime-instructions.cjs',
188
+ absPath: path.join(REPO_ROOT, 'lib/mcp/runtime-instructions.cjs'),
189
+ }),
190
+ ]);
191
+
192
+ // ---------------------------------------------------------------------------
193
+ // THE POLICY DIRECTORY + FIXTURE DIRECTORY (Phase 298, SEED-032). Both are
194
+ // digested as ONE directory-wide entry (path, digest[, count]) - the manifest
195
+ // never enumerates a directory's individual files as rows, exactly as it never
196
+ // enumerates a map's individual sources as rows (HIGH-1's own discipline
197
+ // extended one level).
198
+ // ---------------------------------------------------------------------------
199
+ const POLICIES_DIR = 'data/harness-policies';
200
+ const POLICIES_ABS = path.join(REPO_ROOT, POLICIES_DIR);
201
+ const FIXTURE_DIR = 'data/harness-fixtures/converged-room';
202
+ const FIXTURE_ABS = path.join(REPO_ROOT, FIXTURE_DIR);
203
+
204
+ // ---------------------------------------------------------------------------
205
+ // The Part 8 boundary-scan field allowlists (D-167-06, BOG-10 sibling). SINGLE
206
+ // SOURCE OF TRUTH the Wave-1 boundary scan
207
+ // (tests/test-harness-manifest-part8-boundary.cjs) asserts against. A top-level
208
+ // manifest key outside NODE_FIELD_ALLOWLIST, or a maps-entry key outside
209
+ // ENTRY_FIELD_ALLOWLIST, is a Part 8 breach (a candidate user-content field) and
210
+ // fails the build before the artifact lands. Every name here is a GENERIC
211
+ // machinery field: an ontology reference, a generated note, a tier enum, a
212
+ // version int, the maps binding, and the per-entry { role, path, digest,
213
+ // source_count } machinery quadruple. NONE is a user-content channel.
214
+ const NODE_FIELD_ALLOWLIST = Object.freeze([
215
+ 'ontology_ref',
216
+ 'generated_note',
217
+ 'methodology_tier',
218
+ 'version',
219
+ 'maps',
220
+ // Phase 201-01: the additive runtime-surface digest block. Each entry is the
221
+ // generic { role, path, digest } machinery triple (a subset of
222
+ // ENTRY_FIELD_ALLOWLIST); no source_count, no user-content channel.
223
+ 'runtime_surfaces',
224
+ // Phase 298 (SEED-032): three additive generic machinery fields carrying no
225
+ // user content. `policies` and `fixture_ref` are DIRECTORY-DIGEST objects
226
+ // (path, digest[, count]), never a per-file enumeration. `larry_surfaces` is
227
+ // the same { role, path, digest } machinery triple as runtime_surfaces, just
228
+ // Larry's own three speaking surfaces kept in a separate frozen array.
229
+ 'policies',
230
+ 'larry_surfaces',
231
+ 'fixture_ref',
232
+ ]);
233
+
234
+ // Every maps entry is EXACTLY { role, path, digest, source_count }. A maps-entry
235
+ // key outside this set is a Part 8 breach.
236
+ const ENTRY_FIELD_ALLOWLIST = Object.freeze([
237
+ 'role',
238
+ 'path',
239
+ 'digest',
240
+ 'source_count',
241
+ ]);
242
+
243
+ // ---------------------------------------------------------------------------
244
+ // readBytes(p) -- read a committed source file's raw bytes. Returns null on any
245
+ // failure so the generator/validator degrades rather than throwing (mirrors the
246
+ // shipped generators' readJson degrade discipline).
247
+ // ---------------------------------------------------------------------------
248
+ function readBytes(p) {
249
+ try {
250
+ return fs.readFileSync(p);
251
+ } catch (_e) {
252
+ return null;
253
+ }
254
+ }
255
+
256
+ // ---------------------------------------------------------------------------
257
+ // digestBytes(buf) -- sha256 hex of the raw on-disk bytes. This is MACHINERY
258
+ // METADATA (a fixed-length hex fingerprint), NEVER the map's contents. A digest
259
+ // changes iff the map's bytes change, so a single surface landing in
260
+ // connector-registry.json flips the wiring entry's digest transitively.
261
+ // ---------------------------------------------------------------------------
262
+ function digestBytes(buf) {
263
+ return crypto.createHash('sha256').update(buf).digest('hex');
264
+ }
265
+
266
+ // ---------------------------------------------------------------------------
267
+ // primaryArrayCount(buf, key) -- parse the JSON bytes and return the length of
268
+ // the named primary array (a scalar count, NOT the contents). Returns 0 on a
269
+ // missing / malformed source or a non-array key, so the count degrades to a
270
+ // legible zero rather than throwing.
271
+ // ---------------------------------------------------------------------------
272
+ function primaryArrayCount(buf, key) {
273
+ if (!buf) return 0;
274
+ let parsed;
275
+ try {
276
+ parsed = JSON.parse(buf.toString('utf8'));
277
+ } catch (_e) {
278
+ return 0;
279
+ }
280
+ const arr = parsed && parsed[key];
281
+ return Array.isArray(arr) ? arr.length : 0;
282
+ }
283
+
284
+ // ---------------------------------------------------------------------------
285
+ // buildMapEntry(binding) -- build ONE { role, path, digest, source_count } map
286
+ // entry. Reads the on-disk bytes once: digests them and counts the primary
287
+ // array. A missing source yields a stable empty-digest sentinel (the sha256 of
288
+ // the empty byte string) + a zero count, so the manifest is still byte-stable
289
+ // when a source is absent; --check then flags the absence as UNRESOLVED.
290
+ // ---------------------------------------------------------------------------
291
+ function buildMapEntry(binding) {
292
+ const buf = readBytes(binding.absPath);
293
+ const digest = buf ? digestBytes(buf) : digestBytes(Buffer.from(''));
294
+ const source_count = primaryArrayCount(buf, binding.primaryArrayKey);
295
+ return {
296
+ role: binding.role,
297
+ path: binding.relPath,
298
+ digest: digest,
299
+ source_count: source_count,
300
+ };
301
+ }
302
+
303
+ // ---------------------------------------------------------------------------
304
+ // buildSurfaceEntry(binding) -- build ONE { role, path, digest } runtime-surface
305
+ // entry (Phase 201-01, D-201-1 digest-only). Reads the on-disk code bytes once and
306
+ // sha256-digests them (machinery metadata, NOT contents). A missing surface yields
307
+ // the stable empty-digest sentinel so the manifest stays byte-stable when a file is
308
+ // absent; --check then flags the absence as UNRESOLVED. There is NO source_count:
309
+ // a runtime surface is one code file, not an array of sources.
310
+ // ---------------------------------------------------------------------------
311
+ function buildSurfaceEntry(binding) {
312
+ const buf = readBytes(binding.absPath);
313
+ const digest = buf ? digestBytes(buf) : digestBytes(Buffer.from(''));
314
+ return {
315
+ role: binding.role,
316
+ path: binding.relPath,
317
+ digest: digest,
318
+ };
319
+ }
320
+
321
+ // ---------------------------------------------------------------------------
322
+ // listFilesRecursive(rootDir) -- list every FILE under rootDir (recursing into
323
+ // subdirectories), as paths relative to rootDir using '/' separators
324
+ // regardless of OS, in a plain lexicographic sort over the FULL relative path.
325
+ // Returns [] for a missing or unreadable directory (degrade, never throw).
326
+ // ---------------------------------------------------------------------------
327
+ function listFilesRecursive(rootDir) {
328
+ const out = [];
329
+ function walk(dirAbs, relPrefix) {
330
+ let entries;
331
+ try {
332
+ entries = fs.readdirSync(dirAbs, { withFileTypes: true });
333
+ } catch (_e) {
334
+ return;
335
+ }
336
+ for (const entry of entries) {
337
+ const relPath = relPrefix ? relPrefix + '/' + entry.name : entry.name;
338
+ const absPath = path.join(dirAbs, entry.name);
339
+ if (entry.isDirectory()) {
340
+ walk(absPath, relPath);
341
+ } else if (entry.isFile()) {
342
+ out.push(relPath);
343
+ }
344
+ }
345
+ }
346
+ walk(rootDir, '');
347
+ return out.sort();
348
+ }
349
+
350
+ // ---------------------------------------------------------------------------
351
+ // digestDirectory(dirPath) -- digest a DIRECTORY as ONE value (Phase 298,
352
+ // SEED-032). There is NO shipped directory-digest precedent in this file (the
353
+ // three existing digests are all single-file digestBytes calls), so THE
354
+ // COMPOSITION RULE IS STATED HERE, the way every other invariant in this file
355
+ // is stated:
356
+ //
357
+ // 1. List every file under dirPath, recursing into subdirectories.
358
+ // 2. Sort the relative paths with a plain lexicographic sort (the full
359
+ // relative path, '/' separators, no OS-specific ordering).
360
+ // 3. For each file, in that sorted order, build the line:
361
+ // <relative-path> + NUL(\0) + <lowercase-hex-sha256-of-the-file-bytes> + \n
362
+ // 4. Concatenate those lines in order and return the sha256 hex of the
363
+ // concatenation.
364
+ //
365
+ // This makes the digest filesystem-independent (relative paths only) and
366
+ // RENAME-SENSITIVE: renaming a file with byte-identical content changes the
367
+ // digest, because the relative path is part of what is hashed - which is the
368
+ // correct behavior for a declared harness fingerprint. A missing directory (or
369
+ // an empty one) yields the sha256 of the empty buffer, the SAME stable
370
+ // sentinel readBytes's degrade path already uses for a missing single file.
371
+ // ---------------------------------------------------------------------------
372
+ function digestDirectory(dirPath) {
373
+ const files = listFilesRecursive(dirPath);
374
+ if (files.length === 0) {
375
+ return digestBytes(Buffer.from(''));
376
+ }
377
+ const lines = files.map((relPath) => {
378
+ const buf = readBytes(path.join(dirPath, relPath));
379
+ const fileDigest = buf ? digestBytes(buf) : digestBytes(Buffer.from(''));
380
+ return relPath + '\0' + fileDigest + '\n';
381
+ });
382
+ return digestBytes(Buffer.from(lines.join(''), 'utf8'));
383
+ }
384
+
385
+ // ---------------------------------------------------------------------------
386
+ // listPolicyFileNames(dirAbs) -- the policy directory's *.json files, EXCLUDING
387
+ // `_schema.json` (the vocabulary declaration itself, not a policy) and any
388
+ // non-JSON file (e.g. CONTEXT.md). Sorted for determinism. Returns [] for a
389
+ // missing/unreadable directory (degrade, never throw).
390
+ // ---------------------------------------------------------------------------
391
+ function listPolicyFileNames(dirAbs) {
392
+ let entries;
393
+ try {
394
+ entries = fs.readdirSync(dirAbs);
395
+ } catch (_e) {
396
+ return [];
397
+ }
398
+ return entries.filter((f) => f.endsWith('.json') && f !== '_schema.json').sort();
399
+ }
400
+
401
+ // ---------------------------------------------------------------------------
402
+ // loadPolicySchema() -- read data/harness-policies/_schema.json's `_doc` block
403
+ // (the closed vocabularies + runner_path_rule + policy_fields). Returns null
404
+ // on any failure so a caller can degrade to a single MALFORMED finding rather
405
+ // than throwing (mirrors readBytes's degrade discipline).
406
+ // ---------------------------------------------------------------------------
407
+ function loadPolicySchema() {
408
+ try {
409
+ const raw = fs.readFileSync(path.join(POLICIES_ABS, '_schema.json'), 'utf8');
410
+ const parsed = JSON.parse(raw);
411
+ return parsed && typeof parsed === 'object' && parsed._doc ? parsed._doc : null;
412
+ } catch (_e) {
413
+ return null;
414
+ }
415
+ }
416
+
417
+ // ---------------------------------------------------------------------------
418
+ // EXTRA_KEYS_BY_POLICY_ID -- the narrow extra-key exception
419
+ // data/harness-policies/_schema.json's own `_doc.validation_rule` documents in
420
+ // prose (that file has no separate machine-readable field for it): two
421
+ // migration-slice-1 policy files carry a small set of additional keys beyond
422
+ // the eleven common `policy_fields`. This states that SAME exception verbatim
423
+ // rather than inventing a new one or restating a different description of it.
424
+ // ---------------------------------------------------------------------------
425
+ const EXTRA_KEYS_BY_POLICY_ID = Object.freeze({
426
+ 'memory-write-policy': Object.freeze([
427
+ 'channels', 'verbs', 'basket_fires_at', 'claim_review_status',
428
+ 'toggled_off_writes', 'narrated',
429
+ ]),
430
+ 'contract-parity-larry': Object.freeze([
431
+ 'surfaces', 'byte_budget',
432
+ ]),
433
+ });
434
+
435
+ // ---------------------------------------------------------------------------
436
+ // isValidRunnerPath(runner) -- the schema's own runner_path_rule, implemented:
437
+ // null (an honest declared ghost) is always valid; otherwise runner must be a
438
+ // repo-relative string beginning with the literal prefix "scripts/", carrying
439
+ // no parent-directory ("..") segment, never an absolute path, and resolving
440
+ // inside the repository root when joined to it.
441
+ // ---------------------------------------------------------------------------
442
+ function isValidRunnerPath(runner) {
443
+ if (runner === null) return true;
444
+ if (typeof runner !== 'string' || runner.length === 0) return false;
445
+ if (!runner.startsWith('scripts/')) return false;
446
+ if (path.isAbsolute(runner)) return false;
447
+ if (runner.split('/').includes('..')) return false;
448
+ const resolved = path.resolve(REPO_ROOT, runner);
449
+ const rel = path.relative(REPO_ROOT, resolved);
450
+ return rel !== '' && rel !== '..' && !rel.startsWith('..' + path.sep) && !path.isAbsolute(rel);
451
+ }
452
+
453
+ // ---------------------------------------------------------------------------
454
+ // validatePolicyFile(policy, fileName, schema) -- validate ONE parsed policy
455
+ // object against the closed vocabularies + runner_path_rule READ from the
456
+ // schema (never restated as a second hardcoded copy). Returns an array of
457
+ // finding strings, each naming the file and the failing key; an empty array
458
+ // means the file is valid. Fails closed: every rejection reason from the
459
+ // schema's `default_on_miss` is enforced here.
460
+ // ---------------------------------------------------------------------------
461
+ function validatePolicyFile(policy, fileName, schema) {
462
+ const findings = [];
463
+ const RECOVERY_POLICY =
464
+ 'Recovery: fix data/harness-policies/' + fileName +
465
+ ' against data/harness-policies/_schema.json, then re-run ' +
466
+ 'node scripts/build-harness-manifest.cjs --check.';
467
+
468
+ if (!policy || typeof policy !== 'object' || Array.isArray(policy)) {
469
+ findings.push(
470
+ 'MALFORMED: policy file ' + fileName + ' is not a JSON object. ' + RECOVERY_POLICY
471
+ );
472
+ return findings;
473
+ }
474
+ if (!schema || typeof schema !== 'object') {
475
+ findings.push(
476
+ 'MALFORMED: policy file ' + fileName + ' cannot be validated - ' +
477
+ 'data/harness-policies/_schema.json is missing or invalid. ' + RECOVERY_POLICY
478
+ );
479
+ return findings;
480
+ }
481
+
482
+ const commonFields = Array.isArray(schema.policy_fields)
483
+ ? schema.policy_fields.map((f) => f && f.field).filter((f) => typeof f === 'string')
484
+ : [];
485
+ const id = typeof policy.id === 'string' ? policy.id : '';
486
+ const extraAllowed = EXTRA_KEYS_BY_POLICY_ID[id] || [];
487
+ const allowedKeys = new Set([...commonFields, ...extraAllowed]);
488
+
489
+ // Unknown top-level key.
490
+ for (const key of Object.keys(policy)) {
491
+ if (!allowedKeys.has(key)) {
492
+ findings.push(
493
+ 'MALFORMED: policy file ' + fileName + ' carries unknown top-level key "' + key +
494
+ '" (not one of the schema\'s policy_fields, and not an extra key the schema ' +
495
+ 'permits for this policy id). ' + RECOVERY_POLICY
496
+ );
497
+ }
498
+ }
499
+
500
+ // Missing required field.
501
+ for (const field of commonFields) {
502
+ if (!Object.prototype.hasOwnProperty.call(policy, field)) {
503
+ findings.push(
504
+ 'MALFORMED: policy file ' + fileName + ' is missing required key "' + field + '". ' +
505
+ RECOVERY_POLICY
506
+ );
507
+ }
508
+ }
509
+
510
+ // rung: member of the closed rung_vocabulary.
511
+ const rungVocab = Array.isArray(schema.rung_vocabulary) ? schema.rung_vocabulary : [];
512
+ if (Object.prototype.hasOwnProperty.call(policy, 'rung') && !rungVocab.includes(policy.rung)) {
513
+ findings.push(
514
+ 'MALFORMED: policy file ' + fileName + ' carries unknown "rung" value ' +
515
+ JSON.stringify(policy.rung) + ' (not a member of the schema\'s rung_vocabulary). ' +
516
+ RECOVERY_POLICY
517
+ );
518
+ }
519
+
520
+ // kind: member of the closed kind_vocabulary.
521
+ const kindVocab = Array.isArray(schema.kind_vocabulary) ? schema.kind_vocabulary : [];
522
+ if (Object.prototype.hasOwnProperty.call(policy, 'kind') && !kindVocab.includes(policy.kind)) {
523
+ findings.push(
524
+ 'MALFORMED: policy file ' + fileName + ' carries unknown "kind" value ' +
525
+ JSON.stringify(policy.kind) + ' (not a member of the schema\'s kind_vocabulary). ' +
526
+ RECOVERY_POLICY
527
+ );
528
+ }
529
+
530
+ // applies_to: every member is in the closed applies_to_vocabulary.
531
+ const appliesVocab = Array.isArray(schema.applies_to_vocabulary) ? schema.applies_to_vocabulary : [];
532
+ if (Object.prototype.hasOwnProperty.call(policy, 'applies_to')) {
533
+ if (!Array.isArray(policy.applies_to)) {
534
+ findings.push(
535
+ 'MALFORMED: policy file ' + fileName + ' "applies_to" is not an array. ' + RECOVERY_POLICY
536
+ );
537
+ } else {
538
+ for (const member of policy.applies_to) {
539
+ if (!appliesVocab.includes(member)) {
540
+ findings.push(
541
+ 'MALFORMED: policy file ' + fileName + ' carries unknown "applies_to" member ' +
542
+ JSON.stringify(member) + ' (not a member of the schema\'s applies_to_vocabulary). ' +
543
+ RECOVERY_POLICY
544
+ );
545
+ }
546
+ }
547
+ }
548
+ }
549
+
550
+ // promotion_rule: exactly its three documented keys.
551
+ if (Object.prototype.hasOwnProperty.call(policy, 'promotion_rule')) {
552
+ const pr = policy.promotion_rule;
553
+ const requiredPrKeys = ['window_runs', 'max_false_positive_rate', 'min_true_positives'];
554
+ if (!pr || typeof pr !== 'object' || Array.isArray(pr)) {
555
+ findings.push(
556
+ 'MALFORMED: policy file ' + fileName + ' "promotion_rule" is not an object. ' +
557
+ RECOVERY_POLICY
558
+ );
559
+ } else {
560
+ const missingPr = requiredPrKeys.filter(
561
+ (k) => !Object.prototype.hasOwnProperty.call(pr, k)
562
+ );
563
+ if (missingPr.length) {
564
+ findings.push(
565
+ 'MALFORMED: policy file ' + fileName + ' "promotion_rule" is missing key(s): ' +
566
+ missingPr.join(', ') + '. ' + RECOVERY_POLICY
567
+ );
568
+ }
569
+ }
570
+ }
571
+
572
+ // runner: the schema's own runner_path_rule (read, not restated).
573
+ if (Object.prototype.hasOwnProperty.call(policy, 'runner') && !isValidRunnerPath(policy.runner)) {
574
+ findings.push(
575
+ 'MALFORMED: policy file ' + fileName + ' "runner" value ' + JSON.stringify(policy.runner) +
576
+ ' violates the schema\'s runner_path_rule (' +
577
+ (typeof schema.runner_path_rule === 'string'
578
+ ? schema.runner_path_rule
579
+ : 'see data/harness-policies/_schema.json') +
580
+ '). ' + RECOVERY_POLICY
581
+ );
582
+ }
583
+
584
+ return findings;
585
+ }
586
+
587
+ // ---------------------------------------------------------------------------
588
+ // loadPolicies(rootDir) -- read + validate every policy file in the policy
589
+ // directory. Per-file try/catch (T-233-01 / T-217-01 self-DoS-avoidance
590
+ // pattern): one malformed file is reported by name and skipped from the
591
+ // returned `policies` list, and the loop NEVER aborts the rest of the scan.
592
+ // Returns { policies: [{fileName, id, policy}], findings: string[] }.
593
+ // ---------------------------------------------------------------------------
594
+ function loadPolicies(rootDir) {
595
+ const dirAbs = rootDir || POLICIES_ABS;
596
+ const schema = loadPolicySchema();
597
+ const fileNames = listPolicyFileNames(dirAbs);
598
+ const policies = [];
599
+ const findings = [];
600
+
601
+ for (const fileName of fileNames) {
602
+ let parsed;
603
+ try {
604
+ parsed = JSON.parse(fs.readFileSync(path.join(dirAbs, fileName), 'utf8'));
605
+ } catch (e) {
606
+ findings.push(
607
+ 'MALFORMED: policy file ' + fileName + ' is not valid JSON (' + e.message + '). ' +
608
+ 'Recovery: fix the JSON syntax in data/harness-policies/' + fileName + '.'
609
+ );
610
+ continue;
611
+ }
612
+ const fileFindings = validatePolicyFile(parsed, fileName, schema);
613
+ if (fileFindings.length) {
614
+ for (const f of fileFindings) findings.push(f);
615
+ continue;
616
+ }
617
+ policies.push({ fileName, id: parsed.id, policy: parsed });
618
+ }
619
+
620
+ return { policies, findings };
621
+ }
622
+
623
+ // ---------------------------------------------------------------------------
624
+ // runContractChecks(rootDir) -- Phase 298 Plan 13 (SEED-032, R-06). Runs every
625
+ // `kind: "contract"` policy in data/harness-policies/ INLINE (pure file
626
+ // reads, no spawn, no runner): each declared phrase must be a literal
627
+ // substring of its declared surface file, and the declared byte_budget's
628
+ // EVALUATED constant (required and read, never file-statted) must sit at or
629
+ // under its declared limit. The generator HARDCODES NO PHRASE of its own --
630
+ // `contract-parity-larry.json` is the single declaration (T-298-27); a grep
631
+ // for two of its pinned phrases inside this file must return zero. A missing
632
+ // phrase or a busted budget produces ONE named finding: the surface role,
633
+ // path and the exact missing phrase, or the constant name, the measured
634
+ // bytes and the limit -- so the failure is actionable without opening the
635
+ // policy file. Returns an array of finding strings (empty = clean).
636
+ // ---------------------------------------------------------------------------
637
+ function runContractChecks(rootDir) {
638
+ const dirAbs = rootDir || REPO_ROOT;
639
+ const { policies } = loadPolicies(POLICIES_ABS);
640
+ const findings = [];
641
+ const RECOVERY_CONTRACT =
642
+ 'Recovery: restore the declared phrase, or the declared byte budget, or ' +
643
+ 'update data/harness-policies/<id>.json if the contract itself changed, ' +
644
+ 'then re-run node scripts/build-harness-manifest.cjs --check.';
645
+
646
+ for (const entry of policies) {
647
+ const policy = entry && entry.policy;
648
+ if (!policy || policy.kind !== 'contract') continue;
649
+ const fileName = entry.fileName;
650
+
651
+ const surfaces = Array.isArray(policy.surfaces) ? policy.surfaces : [];
652
+ for (const surface of surfaces) {
653
+ if (!surface || typeof surface.path !== 'string') continue;
654
+ const absSurfacePath = path.join(dirAbs, surface.path);
655
+ const buf = readBytes(absSurfacePath);
656
+ const text = buf ? buf.toString('utf8') : null;
657
+ const phrases = Array.isArray(surface.phrases) ? surface.phrases : [];
658
+ for (const phrase of phrases) {
659
+ if (typeof phrase !== 'string') continue;
660
+ if (text === null || text.indexOf(phrase) === -1) {
661
+ findings.push(
662
+ 'CONTRACT: ' + fileName + ' declares the phrase ' + JSON.stringify(phrase) +
663
+ ' on surface "' + (surface.role || surface.path) + '" (' + surface.path +
664
+ '), but it is not present on disk. ' + RECOVERY_CONTRACT
665
+ );
666
+ }
667
+ }
668
+ }
669
+
670
+ const budget = policy.byte_budget;
671
+ if (budget && typeof budget.path === 'string' && typeof budget.constant === 'string' &&
672
+ typeof budget.limit === 'number') {
673
+ const absModulePath = path.resolve(dirAbs, budget.path);
674
+ let value;
675
+ try {
676
+ const resolved = require.resolve(absModulePath);
677
+ delete require.cache[resolved];
678
+ const mod = require(absModulePath);
679
+ value = mod && mod[budget.constant];
680
+ } catch (_e) {
681
+ value = undefined;
682
+ }
683
+ if (typeof value !== 'string') {
684
+ findings.push(
685
+ 'CONTRACT: ' + fileName + ' declares byte_budget constant "' + budget.constant +
686
+ '" on ' + budget.path + ', but requiring the module and reading that export ' +
687
+ 'failed. ' + RECOVERY_CONTRACT
688
+ );
689
+ } else {
690
+ const measured = Buffer.byteLength(value, 'utf8');
691
+ if (measured > budget.limit) {
692
+ findings.push(
693
+ 'CONTRACT: ' + fileName + ' byte_budget constant "' + budget.constant + '" (' +
694
+ budget.path + ') measured ' + measured + ' bytes, exceeding its declared ' +
695
+ 'limit of ' + budget.limit + ' bytes. ' + RECOVERY_CONTRACT
696
+ );
697
+ }
698
+ }
699
+ }
700
+ }
701
+
702
+ return findings;
703
+ }
704
+
705
+ // ---------------------------------------------------------------------------
706
+ // buildManifest() -- the core. Emits the declared descriptor object:
707
+ // { ontology_ref, generated_note, methodology_tier, version, maps }
708
+ // where maps is EXACTLY the three { role, path, digest, source_count } entries
709
+ // (posture / wiring / ranked_next_reach). NO per-surface rows. NO inlined map
710
+ // contents. methodology_tier=mindrian-operation machinery metadata (D-167-01).
711
+ // ---------------------------------------------------------------------------
712
+ function buildManifest() {
713
+ const maps = MAP_BINDINGS.map((b) => buildMapEntry(b));
714
+ const runtime_surfaces = RUNTIME_SURFACE_BINDINGS.map((b) => buildSurfaceEntry(b));
715
+ const larry_surfaces = LARRY_SURFACE_BINDINGS.map((b) => buildSurfaceEntry(b));
716
+ const policyCount = listPolicyFileNames(POLICIES_ABS).length;
717
+ return {
718
+ ontology_ref:
719
+ 'data/command-registry.json + data/connector-registry.json + ' +
720
+ 'data/brain-orchestration-projection.json',
721
+ generated_note: GENERATED_NOTE,
722
+ methodology_tier: TIER_OP,
723
+ version: MANIFEST_VERSION,
724
+ maps: maps,
725
+ runtime_surfaces: runtime_surfaces,
726
+ policies: {
727
+ path: POLICIES_DIR,
728
+ digest: digestDirectory(POLICIES_ABS),
729
+ count: policyCount,
730
+ },
731
+ larry_surfaces: larry_surfaces,
732
+ fixture_ref: {
733
+ path: FIXTURE_DIR,
734
+ digest: digestDirectory(FIXTURE_ABS),
735
+ },
736
+ };
737
+ }
738
+
739
+ // ---------------------------------------------------------------------------
740
+ // serializeManifest(manifest) -- deterministic JSON + a single trailing newline
741
+ // (byte-stable across machines), mirroring the shipped serialize* idiom. Emits
742
+ // ONLY the serialized fields in a stable key order; each maps entry emits its
743
+ // four keys in a stable order.
744
+ // ---------------------------------------------------------------------------
745
+ function serializeManifest(manifest) {
746
+ const clean = {
747
+ ontology_ref: manifest.ontology_ref,
748
+ generated_note: manifest.generated_note,
749
+ methodology_tier: manifest.methodology_tier,
750
+ version: manifest.version,
751
+ maps: (Array.isArray(manifest.maps) ? manifest.maps : []).map((m) => ({
752
+ role: m.role,
753
+ path: m.path,
754
+ digest: m.digest,
755
+ source_count: m.source_count,
756
+ })),
757
+ runtime_surfaces: (Array.isArray(manifest.runtime_surfaces)
758
+ ? manifest.runtime_surfaces
759
+ : []
760
+ ).map((s) => ({
761
+ role: s.role,
762
+ path: s.path,
763
+ digest: s.digest,
764
+ })),
765
+ policies: {
766
+ path: manifest.policies && manifest.policies.path,
767
+ digest: manifest.policies && manifest.policies.digest,
768
+ count: manifest.policies && manifest.policies.count,
769
+ },
770
+ larry_surfaces: (Array.isArray(manifest.larry_surfaces)
771
+ ? manifest.larry_surfaces
772
+ : []
773
+ ).map((s) => ({
774
+ role: s.role,
775
+ path: s.path,
776
+ digest: s.digest,
777
+ })),
778
+ fixture_ref: {
779
+ path: manifest.fixture_ref && manifest.fixture_ref.path,
780
+ digest: manifest.fixture_ref && manifest.fixture_ref.digest,
781
+ },
782
+ };
783
+ return JSON.stringify(clean, null, 2) + '\n';
784
+ }
785
+
786
+ // ---------------------------------------------------------------------------
787
+ // validateManifest(manifest) -- the 3-mode drift taxonomy (D-167-01 / D-167-03).
788
+ // Returns { stale, unresolved, malformed }: three categorized arrays of error
789
+ // strings (each empty = that mode is clean). PURE with respect to the Brain:
790
+ // reads ONLY the passed manifest + the committed on-disk manifest file (for the
791
+ // byte-compare) + the three named source paths (for the resolve check). ZERO
792
+ // Brain/network calls (Part 8). Mirrors validateProjection in
793
+ // build-orchestration-projection.cjs (categorized error arrays exercised
794
+ // directly by the test without spawning a subprocess).
795
+ //
796
+ // STALE -- the serialized regeneration differs byte-for-byte from the
797
+ // committed data/harness-manifest.json (a source map changed, or
798
+ // the committed file was hand-edited, without regenerating).
799
+ // UNRESOLVED -- a named map path does not exist on disk (a spoofed binding).
800
+ // MALFORMED -- a maps entry is missing a required key (role / path / digest),
801
+ // OR the maps section is not exactly the three declared roles
802
+ // (an extra entry, a per-surface row, or a missing role).
803
+ // ---------------------------------------------------------------------------
804
+ function validateManifest(manifest) {
805
+ const stale = [];
806
+ const unresolved = [];
807
+ const malformed = [];
808
+
809
+ const RECOVERY = 'Run: node scripts/build-harness-manifest.cjs';
810
+
811
+ const m = manifest && typeof manifest === 'object' ? manifest : {};
812
+ const maps = Array.isArray(m.maps) ? m.maps : [];
813
+
814
+ // ---- STALE: byte-compare the serialized manifest vs the committed file. ----
815
+ const serialized = serializeManifest(m);
816
+ const onDisk = fs.existsSync(MANIFEST_PATH)
817
+ ? fs.readFileSync(MANIFEST_PATH, 'utf8')
818
+ : '';
819
+ if (onDisk !== serialized) {
820
+ stale.push(
821
+ 'STALE: data/harness-manifest.json diverges from the regenerated ' +
822
+ 'manifest (a source map changed without regenerating, or the committed ' +
823
+ 'file was hand-edited). ' + RECOVERY
824
+ );
825
+ }
826
+
827
+ // ---- UNRESOLVED: each of the three named map paths must exist on disk. ----
828
+ for (const binding of MAP_BINDINGS) {
829
+ if (!fs.existsSync(binding.absPath)) {
830
+ unresolved.push(
831
+ 'UNRESOLVED: the ' + binding.role + ' map path "' + binding.relPath +
832
+ '" does not exist on disk (a fabricated / missing map binding). ' +
833
+ RECOVERY
834
+ );
835
+ }
836
+ }
837
+
838
+ // ---- MALFORMED: per-entry well-formedness + EXACTLY the three roles. ----
839
+ // The maps section must carry EXACTLY three entries, one per declared role,
840
+ // and NO per-surface row (HIGH-1: a 3-map digest, never a per-surface
841
+ // registry). An extra entry, a missing role, or a non-declared role key is a
842
+ // MALFORMED finding.
843
+ const declaredRoles = MAP_BINDINGS.map((b) => b.role);
844
+ if (maps.length !== declaredRoles.length) {
845
+ malformed.push(
846
+ 'MALFORMED: the maps section has ' + maps.length + ' entries; expected ' +
847
+ 'EXACTLY ' + declaredRoles.length + ' (one per map: ' +
848
+ declaredRoles.join(', ') + '). A per-surface row or an extra entry ' +
849
+ 'breaks the 3-map digest invariant (D-166-03 / HIGH-1). ' + RECOVERY
850
+ );
851
+ }
852
+ const seenRoles = new Set();
853
+ for (const entry of maps) {
854
+ if (!entry || typeof entry !== 'object') {
855
+ malformed.push('MALFORMED: a maps entry is not an object. ' + RECOVERY);
856
+ continue;
857
+ }
858
+ const missing = [];
859
+ if (typeof entry.role !== 'string' || !entry.role) missing.push('role');
860
+ if (typeof entry.path !== 'string' || !entry.path) missing.push('path');
861
+ if (typeof entry.digest !== 'string' || !entry.digest) missing.push('digest');
862
+ if (missing.length) {
863
+ malformed.push(
864
+ 'MALFORMED: maps entry ' + JSON.stringify(entry.role || entry.path || '?') +
865
+ ' is missing required key(s): ' + missing.join(', ') + '. ' + RECOVERY
866
+ );
867
+ }
868
+ if (typeof entry.role === 'string') {
869
+ if (!declaredRoles.includes(entry.role)) {
870
+ malformed.push(
871
+ 'MALFORMED: maps entry carries non-declared role "' + entry.role +
872
+ '" (a per-surface row or an invented role; the only legal roles are ' +
873
+ declaredRoles.join(', ') + '). ' + RECOVERY
874
+ );
875
+ }
876
+ if (seenRoles.has(entry.role)) {
877
+ malformed.push(
878
+ 'MALFORMED: duplicate maps role "' + entry.role + '". ' + RECOVERY
879
+ );
880
+ }
881
+ seenRoles.add(entry.role);
882
+ }
883
+ }
884
+
885
+ // ---- RUNTIME-SURFACE DRIFT (Phase 201-01, D-201-1, fail closed). Each
886
+ // declared runtime surface's committed digest must equal the sha256 of the
887
+ // on-disk code file. A missing surface file is UNRESOLVED; a digest that
888
+ // diverges from the file is STALE and NAMES THE ROLE, so --check fails closed
889
+ // the moment the declared harness and the running harness diverge. This reads
890
+ // the COMMITTED manifest (the byte-compare STALE above already covers a
891
+ // hand-edited / stale committed file); here we prove the declared surface
892
+ // fingerprints still match the code they fingerprint. Zero Brain/network. ----
893
+ let committed = null;
894
+ try {
895
+ committed = JSON.parse(fs.readFileSync(MANIFEST_PATH, 'utf8'));
896
+ } catch (_e) {
897
+ committed = null;
898
+ }
899
+ const committedSurfaces =
900
+ committed && Array.isArray(committed.runtime_surfaces)
901
+ ? committed.runtime_surfaces
902
+ : [];
903
+ for (const binding of RUNTIME_SURFACE_BINDINGS) {
904
+ if (!fs.existsSync(binding.absPath)) {
905
+ unresolved.push(
906
+ 'UNRESOLVED: the ' + binding.role + ' runtime surface "' +
907
+ binding.relPath + '" does not exist on disk (a fabricated / missing ' +
908
+ 'surface binding). ' + RECOVERY
909
+ );
910
+ continue;
911
+ }
912
+ const declared = committedSurfaces.find(
913
+ (s) => s && s.role === binding.role
914
+ );
915
+ // A committed manifest that never declared this surface is caught by the
916
+ // byte-compare STALE (the regeneration adds the missing entry); skip here.
917
+ if (!declared || typeof declared.digest !== 'string') continue;
918
+ const actual = digestBytes(fs.readFileSync(binding.absPath));
919
+ if (declared.digest !== actual) {
920
+ stale.push(
921
+ 'STALE: the ' + binding.role + ' runtime surface (' + binding.relPath +
922
+ ') digest in the manifest drifts from the on-disk file - the DECLARED ' +
923
+ 'harness and the RUNNING harness have diverged. ' + RECOVERY
924
+ );
925
+ }
926
+ }
927
+
928
+ // ---- LARRY-SURFACE DRIFT (Phase 298, SEED-032). Copies the runtime-surface
929
+ // drift loop above EXACTLY, over LARRY_SURFACE_BINDINGS / committed.larry_surfaces
930
+ // instead. ----
931
+ const committedLarrySurfaces =
932
+ committed && Array.isArray(committed.larry_surfaces) ? committed.larry_surfaces : [];
933
+ for (const binding of LARRY_SURFACE_BINDINGS) {
934
+ if (!fs.existsSync(binding.absPath)) {
935
+ unresolved.push(
936
+ 'UNRESOLVED: the ' + binding.role + ' larry surface "' +
937
+ binding.relPath + '" does not exist on disk (a fabricated / missing ' +
938
+ 'surface binding). ' + RECOVERY
939
+ );
940
+ continue;
941
+ }
942
+ const declaredLarry = committedLarrySurfaces.find(
943
+ (s) => s && s.role === binding.role
944
+ );
945
+ if (!declaredLarry || typeof declaredLarry.digest !== 'string') continue;
946
+ const actualLarry = digestBytes(fs.readFileSync(binding.absPath));
947
+ if (declaredLarry.digest !== actualLarry) {
948
+ stale.push(
949
+ 'STALE: the ' + binding.role + ' larry surface (' + binding.relPath +
950
+ ') digest in the manifest drifts from the on-disk file - the DECLARED ' +
951
+ 'harness and the RUNNING harness have diverged. ' + RECOVERY
952
+ );
953
+ }
954
+ }
955
+
956
+ // ---- POLICIES DIRECTORY DRIFT (Phase 298). A directory-digest divergence
957
+ // between the committed manifest's `policies.digest` and the live directory. ----
958
+ if (!fs.existsSync(POLICIES_ABS)) {
959
+ unresolved.push(
960
+ 'UNRESOLVED: the policies directory "' + POLICIES_DIR +
961
+ '" does not exist on disk (a fabricated / missing policies binding). ' + RECOVERY
962
+ );
963
+ } else if (committed && committed.policies && typeof committed.policies.digest === 'string') {
964
+ const actualPolicies = digestDirectory(POLICIES_ABS);
965
+ if (committed.policies.digest !== actualPolicies) {
966
+ stale.push(
967
+ 'STALE: the policies directory (' + POLICIES_DIR + ') digest in the manifest ' +
968
+ 'drifts from the on-disk directory - a policy file changed without regenerating. ' +
969
+ RECOVERY
970
+ );
971
+ }
972
+ }
973
+
974
+ // ---- FIXTURE_REF DRIFT (Phase 298). A directory-digest divergence between
975
+ // the committed manifest's `fixture_ref.digest` and the live directory. ----
976
+ if (!fs.existsSync(FIXTURE_ABS)) {
977
+ unresolved.push(
978
+ 'UNRESOLVED: the fixture directory "' + FIXTURE_DIR +
979
+ '" does not exist on disk (a fabricated / missing fixture_ref binding). ' + RECOVERY
980
+ );
981
+ } else if (committed && committed.fixture_ref && typeof committed.fixture_ref.digest === 'string') {
982
+ const actualFixture = digestDirectory(FIXTURE_ABS);
983
+ if (committed.fixture_ref.digest !== actualFixture) {
984
+ stale.push(
985
+ 'STALE: the fixture_ref directory (' + FIXTURE_DIR + ') digest in the manifest ' +
986
+ 'drifts from the on-disk directory - the converged-room fixture changed without ' +
987
+ 'regenerating. ' + RECOVERY
988
+ );
989
+ }
990
+ }
991
+
992
+ return { stale, unresolved, malformed };
993
+ }
994
+
995
+ // ---------------------------------------------------------------------------
996
+ // runCheck() -- the --check mode. Regenerate the manifest from the LIVE sources
997
+ // in memory, run validateManifest, print each named finding + its recovery line
998
+ // to stderr, and exit non-zero on ANY finding. Exit 0 + an OK line on a clean
999
+ // repo. Mirrors build-orchestration-projection.cjs runCheck. ZERO Brain/network
1000
+ // calls (Part 8).
1001
+ // ---------------------------------------------------------------------------
1002
+ function runCheck() {
1003
+ const manifest = buildManifest();
1004
+ const { stale, unresolved, malformed } = validateManifest(manifest);
1005
+ // Phase 298 (SEED-032): validate every policy file against the closed
1006
+ // schema. An invalid policy file is a MALFORMED finding naming the file and
1007
+ // the failing key; one bad file is reported and skipped, never aborting the
1008
+ // rest of the scan (T-233-01 / T-217-01 self-DoS-avoidance pattern).
1009
+ const { findings: policyFindings } = loadPolicies(POLICIES_ABS);
1010
+ // Phase 298 Plan 13 (R-06): the contract-* policies, run inline as a fourth
1011
+ // finding class beside stale/unresolved/malformed -- a dropped Larry phrase
1012
+ // or a busted Desktop-wire byte budget fails --check by name.
1013
+ const contractFindings = runContractChecks(REPO_ROOT);
1014
+ const all = [...stale, ...unresolved, ...malformed, ...policyFindings, ...contractFindings];
1015
+ if (all.length) {
1016
+ console.error(all.join('\n'));
1017
+ console.error(
1018
+ 'Recovery: regenerate the manifest, then re-stage it: ' +
1019
+ 'node scripts/build-harness-manifest.cjs'
1020
+ );
1021
+ process.exit(1);
1022
+ return;
1023
+ }
1024
+ console.log('harness-manifest: OK');
1025
+ }
1026
+
1027
+ // ---------------------------------------------------------------------------
1028
+ // writeManifest() -- the default + --refresh write path: re-derive the digests
1029
+ // from the live sources and write the artifact (idempotent). --refresh is the
1030
+ // manifest's analogue of the connector --refresh-names: it re-reads the sources,
1031
+ // re-digests, and re-writes, which is a byte-identical no-op when nothing
1032
+ // changed.
1033
+ // ---------------------------------------------------------------------------
1034
+ function writeManifest() {
1035
+ const manifest = buildManifest();
1036
+ fs.mkdirSync(DATA_DIR, { recursive: true });
1037
+ fs.writeFileSync(MANIFEST_PATH, serializeManifest(manifest));
1038
+ console.log(
1039
+ 'Wrote data/harness-manifest.json (' + manifest.maps.length + ' map entries: ' +
1040
+ manifest.maps.map((e) => e.role).join(', ') + '; ' +
1041
+ manifest.runtime_surfaces.length + ' runtime surfaces: ' +
1042
+ manifest.runtime_surfaces.map((e) => e.role).join(', ') + '; ' +
1043
+ manifest.policies.count + ' policies digested; ' +
1044
+ manifest.larry_surfaces.length + ' larry surfaces: ' +
1045
+ manifest.larry_surfaces.map((e) => e.role).join(', ') + ')'
1046
+ );
1047
+ }
1048
+
1049
+ // ---------------------------------------------------------------------------
1050
+ // main() -- the 3-branch entry: default write / --check / --refresh.
1051
+ // ---------------------------------------------------------------------------
1052
+ function main() {
1053
+ const argv = process.argv.slice(2);
1054
+
1055
+ if (argv.includes('--check')) {
1056
+ runCheck();
1057
+ return;
1058
+ }
1059
+
1060
+ // --refresh re-derives the digests + re-writes (idempotent). The default
1061
+ // branch is the same write path; --refresh is named for parity with the
1062
+ // connector generator's --refresh-names idiom.
1063
+ writeManifest();
1064
+ }
1065
+
1066
+ if (require.main === module) {
1067
+ main();
1068
+ } else {
1069
+ module.exports = {
1070
+ buildManifest,
1071
+ buildMapEntry,
1072
+ buildSurfaceEntry,
1073
+ serializeManifest,
1074
+ validateManifest,
1075
+ digestBytes,
1076
+ digestDirectory,
1077
+ primaryArrayCount,
1078
+ loadPolicies,
1079
+ validatePolicyFile,
1080
+ runContractChecks,
1081
+ MAP_BINDINGS,
1082
+ RUNTIME_SURFACE_BINDINGS,
1083
+ LARRY_SURFACE_BINDINGS,
1084
+ POLICIES_DIR,
1085
+ FIXTURE_DIR,
1086
+ NODE_FIELD_ALLOWLIST,
1087
+ ENTRY_FIELD_ALLOWLIST,
1088
+ MANIFEST_PATH,
1089
+ };
1090
+ }