@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.
- package/.claude-plugin/plugin.json +21 -0
- package/.mcp.json +14 -0
- package/CHANGELOG.md +497 -0
- package/agents/analogy-query-fetcher.md +119 -0
- package/agents/brain-query.md +91 -0
- package/agents/competitor-watch-fetcher.md +94 -0
- package/agents/framework-runner.md +258 -0
- package/agents/grading.md +216 -0
- package/agents/grant-reviewer.md +191 -0
- package/agents/investor.md +141 -0
- package/agents/larry-extended.md +215 -0
- package/agents/meeting-perspective-extractor.md +94 -0
- package/agents/opportunity-scanner.md +105 -0
- package/agents/persona-analyst.md +201 -0
- package/agents/research.md +103 -0
- package/agents/reverse-salient-agent.md +42 -0
- package/agents/vault-section-reviewer.md +107 -0
- package/assets/banner-showcase.html +537 -0
- package/assets/fonts/BebasNeue-Regular.ttf +0 -0
- package/assets/fonts/Inter-Bold.ttf +0 -0
- package/assets/fonts/Inter-Regular.ttf +0 -0
- package/assets/logo.svg +10 -0
- package/bin/local-chain-recommender.cjs +256 -0
- package/bin/mindrian-brain-mcp-client.cjs +319 -0
- package/bin/mindrian-mcp-server.cjs +445 -0
- package/bin/mindrian-mcp-shim.cjs +100 -0
- package/bin/mindrian-tools.cjs +784 -0
- package/commands/act.md +529 -0
- package/commands/admin.md +439 -0
- package/commands/agentshield.md +49 -0
- package/commands/analyze-needs.md +78 -0
- package/commands/analyze-systems.md +73 -0
- package/commands/analyze-timing.md +98 -0
- package/commands/auto-explore.md +85 -0
- package/commands/beautiful-question.md +76 -0
- package/commands/bono.md +152 -0
- package/commands/brain-derive.md +137 -0
- package/commands/build-knowledge.md +121 -0
- package/commands/build-thesis.md +94 -0
- package/commands/causal.md +269 -0
- package/commands/challenge-assumptions.md +78 -0
- package/commands/compare-ventures.md +117 -0
- package/commands/correct-reference-now.md +88 -0
- package/commands/dashboard.md +144 -0
- package/commands/deck.md +117 -0
- package/commands/deep-grade.md +214 -0
- package/commands/diagnose.md +131 -0
- package/commands/diagnostics.md +195 -0
- package/commands/dial-memory-refresh.md +113 -0
- package/commands/diffusion.md +129 -0
- package/commands/discover.md +221 -0
- package/commands/doctor.md +271 -0
- package/commands/dogfood-flush.md +130 -0
- package/commands/dominant-designs.md +76 -0
- package/commands/eureka.md +315 -0
- package/commands/explain-decision.md +135 -0
- package/commands/explore-domains.md +78 -0
- package/commands/explore-futures.md +67 -0
- package/commands/explore-opportunity.md +172 -0
- package/commands/explore-trends.md +78 -0
- package/commands/export.md +128 -0
- package/commands/feynman-timeline-refresh.md +102 -0
- package/commands/file-meeting.md +1195 -0
- package/commands/find-analogies.md +369 -0
- package/commands/find-bottlenecks.md +108 -0
- package/commands/find-connections.md +111 -0
- package/commands/funding.md +114 -0
- package/commands/futures.md +128 -0
- package/commands/grade-grant.md +297 -0
- package/commands/grade.md +257 -0
- package/commands/graph.md +218 -0
- package/commands/hat-briefing.md +163 -0
- package/commands/heal.md +72 -0
- package/commands/help.md +176 -0
- package/commands/hmi-status.md +75 -0
- package/commands/ignite.md +229 -0
- package/commands/ingest-methodology.md +128 -0
- package/commands/intel-pipeline.md +133 -0
- package/commands/jtbd.md +262 -0
- package/commands/leadership.md +113 -0
- package/commands/lean-canvas.md +74 -0
- package/commands/macro-trends.md +88 -0
- package/commands/map-unknowns.md +76 -0
- package/commands/memory-cortex-reach.md +79 -0
- package/commands/memory.md +213 -0
- package/commands/models.md +200 -0
- package/commands/mos-reason.md +489 -0
- package/commands/mos.md +162 -0
- package/commands/mullins.md +155 -0
- package/commands/mva-brief.md +86 -0
- package/commands/mva-option.md +119 -0
- package/commands/mva-report.md +76 -0
- package/commands/new-project.md +633 -0
- package/commands/new-surface.md +116 -0
- package/commands/onboard.md +489 -0
- package/commands/operator.md +168 -0
- package/commands/opportunities.md +177 -0
- package/commands/organize.md +74 -0
- package/commands/persona.md +276 -0
- package/commands/pipeline.md +167 -0
- package/commands/present.md +125 -0
- package/commands/publish.md +227 -0
- package/commands/pws-brain.md +154 -0
- package/commands/qualify-opportunity.md +113 -0
- package/commands/query.md +70 -0
- package/commands/radar.md +110 -0
- package/commands/reanalyze.md +124 -0
- package/commands/research.md +467 -0
- package/commands/room.md +385 -0
- package/commands/rooms.md +682 -0
- package/commands/root-cause.md +77 -0
- package/commands/rs-experts.md +153 -0
- package/commands/rs-explain.md +134 -0
- package/commands/rs-fetch.md +119 -0
- package/commands/rs-thesis.md +131 -0
- package/commands/scenario-plan.md +80 -0
- package/commands/scheduled-tasks.md +308 -0
- package/commands/score-innovation.md +78 -0
- package/commands/scout.md +379 -0
- package/commands/setup.md +658 -0
- package/commands/show.md +71 -0
- package/commands/skill.md +108 -0
- package/commands/snapshot.md +179 -0
- package/commands/speakers.md +118 -0
- package/commands/splash.md +55 -0
- package/commands/stance.md +91 -0
- package/commands/status.md +109 -0
- package/commands/structure-argument.md +82 -0
- package/commands/suggest-next.md +141 -0
- package/commands/systems-thinking.md +224 -0
- package/commands/think-hats.md +86 -0
- package/commands/trending-to-absurd.md +151 -0
- package/commands/update.md +256 -0
- package/commands/user-needs.md +77 -0
- package/commands/validate.md +77 -0
- package/commands/value-proposition.md +116 -0
- package/commands/vault.md +330 -0
- package/commands/visualize.md +71 -0
- package/commands/whitespace.md +541 -0
- package/commands/wiki.md +96 -0
- package/data/ROOM.md +47 -0
- package/data/brain-census.generated.json +2617 -0
- package/data/brain-orchestration-projection.json +4973 -0
- package/data/brain-packet-schema.json +545 -0
- package/data/brain-surface-contract.json +32 -0
- package/data/capability-ledger.json +391 -0
- package/data/capability-map-registry.json +23 -0
- package/data/command-registry.json +2433 -0
- package/data/connector-coverage-ledger.json +1618 -0
- package/data/connector-out-of-spine-allowlist.json +71 -0
- package/data/connector-registry.json +3637 -0
- package/data/corpus-stats-source.json +11 -0
- package/data/corpus-stats.generated.json +10 -0
- package/data/cross-domain-analogues.json +15 -0
- package/data/deck-aliases.json +6 -0
- package/data/deck-styles.json +85 -0
- package/data/deployment-surfaces.json +69 -0
- package/data/dispatch-framework-map.json +18 -0
- package/data/doctor-modules.json +206 -0
- package/data/dual-graph-health-baseline.json +12 -0
- package/data/eureka-critic-tags.json +32 -0
- package/data/first-reward-surfaces.json +66 -0
- package/data/first-touch-surfaces.json +60 -0
- package/data/flagship-floor-set.json +37 -0
- package/data/framework-names.json +121 -0
- package/data/grant-rubric-fixtures/early-stage-pre-seed.json +18 -0
- package/data/grant-rubric-fixtures/early-stage-round-a.json +18 -0
- package/data/grant-rubric-fixtures/early-stage-seed.json +18 -0
- package/data/grant-rubric-fixtures/hybrid-seed-incentive.json +18 -0
- package/data/grant-rubric-fixtures/rd-fund.json +18 -0
- package/data/grant-rubric-fixtures/regional-innovation-incubators.json +18 -0
- package/data/grant-rubric-fixtures/technology-incubators.json +18 -0
- package/data/grant-rubric-fixtures/tnufa.json +167 -0
- package/data/grant-rubric-schema.json +33 -0
- package/data/harness-fixtures/converged-room/.context/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/.intelligence/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/.snapshots/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/MINTO.md +19 -0
- package/data/harness-fixtures/converged-room/STATE.md +73 -0
- package/data/harness-fixtures/converged-room/USER.md +23 -0
- package/data/harness-fixtures/converged-room/assets/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/business-model/CONTEXT.md +32 -0
- package/data/harness-fixtures/converged-room/business-model/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/competitive-analysis/CONTEXT.md +33 -0
- package/data/harness-fixtures/converged-room/competitive-analysis/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/financial-model/CONTEXT.md +30 -0
- package/data/harness-fixtures/converged-room/financial-model/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/funding/CONTEXT.md +41 -0
- package/data/harness-fixtures/converged-room/funding/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/legal-ip/CONTEXT.md +30 -0
- package/data/harness-fixtures/converged-room/legal-ip/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/market-analysis/CONTEXT.md +32 -0
- package/data/harness-fixtures/converged-room/market-analysis/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/opportunity-bank/CONTEXT.md +39 -0
- package/data/harness-fixtures/converged-room/opportunity-bank/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/problem-definition/CONTEXT.md +32 -0
- package/data/harness-fixtures/converged-room/problem-definition/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/references/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/references/SECTION-SCHEMA.md +213 -0
- package/data/harness-fixtures/converged-room/references/SUB-SCHEMAS.md +91 -0
- package/data/harness-fixtures/converged-room/solution-design/CONTEXT.md +36 -0
- package/data/harness-fixtures/converged-room/solution-design/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/strategy/CONTEXT.md +35 -0
- package/data/harness-fixtures/converged-room/strategy/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/team/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/team-execution/CONTEXT.md +36 -0
- package/data/harness-fixtures/converged-room/team-execution/ROOM.md +35 -0
- package/data/harness-manifest.json +74 -0
- package/data/harness-policies/CONTEXT.md +55 -0
- package/data/harness-policies/_schema.json +42 -0
- package/data/harness-policies/contract-parity-larry.json +63 -0
- package/data/harness-policies/gate-card-fire.json +13 -0
- package/data/harness-policies/gate-graph-derive-health.json +13 -0
- package/data/harness-policies/gate-shape-declaration.json +13 -0
- package/data/harness-policies/gate-tool-honesty.json +13 -0
- package/data/harness-policies/gate-worktree-hygiene.json +13 -0
- package/data/harness-policies/memory-write-policy.json +28 -0
- package/data/harness-policies/registry-drift.json +13 -0
- package/data/harness-policies/release-payload-ceiling.json +13 -0
- package/data/harness-policies/voice-backend-noun-free.json +13 -0
- package/data/harness-policies/voice-fork-as-card.json +13 -0
- package/data/harness-policies/voice-glyph-present.json +13 -0
- package/data/harness-policies/voice-hyphens-only.json +13 -0
- package/data/help-groups.json +236 -0
- package/data/hitl-shape-backfill.json +777 -0
- package/data/hitl-shape-declaration-fixtures/invalid-bad-shape.json +5 -0
- package/data/hitl-shape-declaration-fixtures/invalid-missing-why.json +4 -0
- package/data/hitl-shape-declaration-fixtures/invalid-ranker-contradiction.json +6 -0
- package/data/hitl-shape-declaration-fixtures/invalid-skill-gap.json +3 -0
- package/data/hitl-shape-declaration-fixtures/valid-multi-stage.json +7 -0
- package/data/hitl-shape-declaration-fixtures/valid-single-shape.json +5 -0
- package/data/hitl-shape-declaration-fixtures/valid-skill-exempt.json +5 -0
- package/data/hitl-shape-declaration-schema.json +34 -0
- package/data/hitl-stages-fixtures/bono.json +10 -0
- package/data/hitl-stages-fixtures/pipeline-1.json +9 -0
- package/data/hitl-stages-fixtures/pipeline-2.json +9 -0
- package/data/hitl-stages-fixtures/pipeline-3.json +10 -0
- package/data/hitl-stages-fixtures/research.json +10 -0
- package/data/hitl-stages-fixtures/rs-convergence.json +10 -0
- package/data/hitl-stages-fixtures/rs-family.json +11 -0
- package/data/hitl-stages-fixtures/rs-reverse-salient.json +10 -0
- package/data/hitl-stages-fixtures/trending-to-absurd.json +11 -0
- package/data/hitl-stages-schema.json +26 -0
- package/data/mcp-tool-connectors.json +464 -0
- package/data/mva-agent-prompts.json +31 -0
- package/data/mva-deck-template.html +15 -0
- package/data/mva-heuristic-keywords.json +35 -0
- package/data/orchestration-command-ledger.json +576 -0
- package/data/orchestration-unwired-allowlist.json +6 -0
- package/data/portfolio-ahp-matrix.json +16 -0
- package/data/publish-needs.json +76 -0
- package/data/render-coverage-registry.json +1152 -0
- package/data/research-sources.json +58 -0
- package/data/roadmap-type-chains.json +28 -0
- package/data/room-blueprints.json +156 -0
- package/data/subagent-dispatch-grants.json +150 -0
- package/hooks/hooks.json +493 -0
- package/hooks/run-hook.cmd +64 -0
- package/lib/__init__.py +0 -0
- package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/agents/auto-explore-agent.cjs +1163 -0
- package/lib/agents/mva/brain-classic-traps.cjs +55 -0
- package/lib/agents/mva/brain-cross-domain.cjs +79 -0
- package/lib/agents/mva/brain-similar-ventures.cjs +93 -0
- package/lib/agents/mva/dashboard-graph-neighborhood.cjs +72 -0
- package/lib/agents/mva/index.cjs +42 -0
- package/lib/agents/mva/six-hats-red-black.cjs +137 -0
- package/lib/agents/mva/tavily-funding-scan.cjs +147 -0
- package/lib/agents/mva/test-all-six-agents.cjs +467 -0
- package/lib/agents/reverse-salient-agent.cjs +757 -0
- package/lib/agents/tension-hook-agent.cjs +586 -0
- package/lib/brain/ROOM.md +44 -0
- package/lib/brain/chain-recommender.cjs +784 -0
- package/lib/brain/curation-batch.cjs +519 -0
- package/lib/brain/framework-chain-slice.cjs +252 -0
- package/lib/brain/hypergraph-event-schema.cjs +184 -0
- package/lib/chat/chat-context.js +185 -0
- package/lib/chat/chat-panel.js +721 -0
- package/lib/chat/fabric-chat.cjs +288 -0
- package/lib/chat/generative-tools.js +219 -0
- package/lib/conversation/ROOM.md +39 -0
- package/lib/conversation/classifier-rules.json +38 -0
- package/lib/conversation/classifier.cjs +264 -0
- package/lib/conversation/operator-epistemic-cap.test.cjs +156 -0
- package/lib/conversation/operator.cjs +492 -0
- package/lib/conversation/operator.test.cjs +160 -0
- package/lib/copy/115-spec-strings.cjs +55 -0
- package/lib/core/__init__.py +0 -0
- package/lib/core/__nav-stub.cjs +14 -0
- package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_corpus_exclude.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
- package/lib/core/abstraction-gate.cjs +133 -0
- package/lib/core/act-jtbd-blurb.cjs +231 -0
- package/lib/core/artifact-id.cjs +148 -0
- package/lib/core/asset-ops.cjs +151 -0
- package/lib/core/auto-commit-throttle.cjs +129 -0
- package/lib/core/bearer-token.cjs +199 -0
- package/lib/core/behavioral/observation-schema.cjs +86 -0
- package/lib/core/bono/cell-fanout.cjs +305 -0
- package/lib/core/bono/debate-composition.cjs +495 -0
- package/lib/core/bono/hat-governance.cjs +367 -0
- package/lib/core/bono/persona-research.cjs +288 -0
- package/lib/core/bono/reviewer-governance.cjs +331 -0
- package/lib/core/brain-client.cjs +2621 -0
- package/lib/core/brain-derivation-prompts.cjs +331 -0
- package/lib/core/brain-derivation-queue.cjs +535 -0
- package/lib/core/brain-derivation.cjs +740 -0
- package/lib/core/brain-md-schema.cjs +528 -0
- package/lib/core/brain-md-staleness.cjs +357 -0
- package/lib/core/brain-response-sanitize.cjs +396 -0
- package/lib/core/breakthrough/canary.cjs +134 -0
- package/lib/core/breakthrough/canary.test.cjs +136 -0
- package/lib/core/breakthrough/detectors.cjs +359 -0
- package/lib/core/breakthrough/detectors.test.cjs +333 -0
- package/lib/core/breakthrough/ethics-fence.cjs +129 -0
- package/lib/core/breakthrough/ethics-fence.test.cjs +178 -0
- package/lib/core/breakthrough/resurfacing.cjs +150 -0
- package/lib/core/breakthrough/resurfacing.test.cjs +233 -0
- package/lib/core/breakthrough/review-queue.cjs +168 -0
- package/lib/core/breakthrough/review-queue.test.cjs +160 -0
- package/lib/core/breakthrough/scanner-d17-d18.test.cjs +229 -0
- package/lib/core/breakthrough/scanner.cjs +435 -0
- package/lib/core/breakthrough/scanner.test.cjs +267 -0
- package/lib/core/breakthrough/schema.cjs +180 -0
- package/lib/core/breakthrough/schema.test.cjs +256 -0
- package/lib/core/breakthrough/scoring.cjs +293 -0
- package/lib/core/breakthrough/scoring.test.cjs +423 -0
- package/lib/core/breakthrough/verb-dispatch.cjs +230 -0
- package/lib/core/breakthrough/verb-dispatch.test.cjs +185 -0
- package/lib/core/breakthrough/voice-scaffold.cjs +249 -0
- package/lib/core/breakthrough/voice-scaffold.test.cjs +251 -0
- package/lib/core/bridge-writer.cjs +477 -0
- package/lib/core/cache-prune.cjs +314 -0
- package/lib/core/card-fire-gate.cjs +107 -0
- package/lib/core/card-fire-sidechannel.cjs +518 -0
- package/lib/core/chain-executor.cjs +939 -0
- package/lib/core/chain-retry.cjs +214 -0
- package/lib/core/chain-step-dispatcher.cjs +397 -0
- package/lib/core/chat-context-builder.cjs +253 -0
- package/lib/core/check-plugin-enabled.cjs +145 -0
- package/lib/core/close-loop-writer.cjs +492 -0
- package/lib/core/command-registration-check.cjs +246 -0
- package/lib/core/correlation-label-index.cjs +230 -0
- package/lib/core/correlation.cjs +112 -0
- package/lib/core/coverage-monitor.cjs +183 -0
- package/lib/core/coverage-rollup.cjs +232 -0
- package/lib/core/cross-room-aggregator.cjs +1127 -0
- package/lib/core/cross-room-store.cjs +292 -0
- package/lib/core/cross-room-triggers.cjs +222 -0
- package/lib/core/daily-briefing.cjs +438 -0
- package/lib/core/decision-axes.cjs +178 -0
- package/lib/core/decision-capture.cjs +618 -0
- package/lib/core/deck-design-rules.cjs +211 -0
- package/lib/core/deep-links.cjs +82 -0
- package/lib/core/directive-envelope.cjs +230 -0
- package/lib/core/directive-envelope.test.cjs +225 -0
- package/lib/core/dispatch-optimizer.cjs +354 -0
- package/lib/core/doc-text-extractor.cjs +133 -0
- package/lib/core/doctor/capability-ledger-module.cjs +170 -0
- package/lib/core/doctor/card-fire-health-module.cjs +159 -0
- package/lib/core/doctor/cascade-rooms-active-module.cjs +127 -0
- package/lib/core/doctor/cascade-rooms-module.cjs +184 -0
- package/lib/core/doctor/class-m-brain-smoke.cjs +479 -0
- package/lib/core/doctor/class-m-brain-smoke.test.cjs +448 -0
- package/lib/core/doctor/class-s-eureka-smoke.cjs +380 -0
- package/lib/core/doctor/deployment-surfaces-module.cjs +408 -0
- package/lib/core/doctor/deprecated-usage-module.cjs +155 -0
- package/lib/core/doctor/eureka-fts-health-module.cjs +236 -0
- package/lib/core/doctor/graph-derive-heal-retrofit-module.cjs +148 -0
- package/lib/core/doctor/graph-derive-health-module.cjs +486 -0
- package/lib/core/doctor/install-incomplete-module.cjs +320 -0
- package/lib/core/doctor/install-state-module.cjs +503 -0
- package/lib/core/doctor/mcp-surface-module.cjs +369 -0
- package/lib/core/doctor/mode-select-checkpoint-module.cjs +113 -0
- package/lib/core/doctor/plugin-enabled-state-module.cjs +86 -0
- package/lib/core/doctor/room-graph-density-module.cjs +181 -0
- package/lib/core/doctor/room-md-module.cjs +198 -0
- package/lib/core/doctor/shared.cjs +555 -0
- package/lib/core/doctor/stale-first-touch-copy-module.cjs +83 -0
- package/lib/core/doctor/statusline-visibility-module.cjs +295 -0
- package/lib/core/doctor/ui-compliance-module.cjs +223 -0
- package/lib/core/doctor/umbilical-module.cjs +486 -0
- package/lib/core/doctor/verify-surface-module.cjs +82 -0
- package/lib/core/doctor/voice-style-log-module.cjs +146 -0
- package/lib/core/domain-insight-sweep.cjs +224 -0
- package/lib/core/drift-baseline.cjs +362 -0
- package/lib/core/drift-runtime-reachability.cjs +283 -0
- package/lib/core/dual-path-detector.cjs +84 -0
- package/lib/core/dual-path-detector.test.cjs +334 -0
- package/lib/core/enrichment-queue.cjs +636 -0
- package/lib/core/eureka/ahp-weights.cjs +232 -0
- package/lib/core/eureka/analogy-fitness.cjs +326 -0
- package/lib/core/eureka/compression-meter.cjs +165 -0
- package/lib/core/eureka/embedding-classifier.cjs +226 -0
- package/lib/core/eureka/embedding-spine.cjs +563 -0
- package/lib/core/eureka/entity-classifier.cjs +232 -0
- package/lib/core/eureka/entity-extractor.cjs +356 -0
- package/lib/core/eureka/eureka-enable.cjs +228 -0
- package/lib/core/eureka/eureka-offer.cjs +225 -0
- package/lib/core/eureka/eureka-reach-runner.cjs +430 -0
- package/lib/core/eureka/explore-chain.cjs +834 -0
- package/lib/core/eureka/explored-artifact.cjs +456 -0
- package/lib/core/eureka/fts-index-lifecycle.cjs +265 -0
- package/lib/core/eureka/grade-grant-examine.cjs +544 -0
- package/lib/core/eureka/grade-grant.cjs +596 -0
- package/lib/core/eureka/hybrid-retrieve.cjs +256 -0
- package/lib/core/eureka/lateral-engine-adapter.cjs +118 -0
- package/lib/core/eureka/lexical-overlap.cjs +98 -0
- package/lib/core/eureka/online-pattern-query.cjs +142 -0
- package/lib/core/eureka/opportunity-harvest.cjs +752 -0
- package/lib/core/eureka/opportunity-statement.cjs +519 -0
- package/lib/core/eureka/portfolio-dimensions.cjs +255 -0
- package/lib/core/eureka/qualify-opportunity.cjs +607 -0
- package/lib/core/eureka/reasoning-mode.cjs +481 -0
- package/lib/core/eureka/report-html.cjs +368 -0
- package/lib/core/eureka/research-filing.cjs +547 -0
- package/lib/core/eureka/room-native-substrate.cjs +343 -0
- package/lib/core/eureka/tail-quadrant.cjs +177 -0
- package/lib/core/eureka/tri-modal-index.cjs +564 -0
- package/lib/core/eureka/vector-store.cjs +414 -0
- package/lib/core/eureka-critic.cjs +733 -0
- package/lib/core/eureka-deps-resolver.cjs +179 -0
- package/lib/core/expert-genesis.cjs +437 -0
- package/lib/core/expert-library.cjs +303 -0
- package/lib/core/exports-log.cjs +79 -0
- package/lib/core/feynman/ROOM.md +25 -0
- package/lib/core/feynman/dial-memory-renderer.cjs +279 -0
- package/lib/core/feynman/dial-memory-runner.cjs +173 -0
- package/lib/core/feynman/feynman-seed-writer.cjs +187 -0
- package/lib/core/feynman/timeline-renderer.cjs +197 -0
- package/lib/core/feynman/timeline-runner.cjs +281 -0
- package/lib/core/feynman-minto-invariants.cjs +609 -0
- package/lib/core/findings-wirer.cjs +360 -0
- package/lib/core/first-touch-version-stamper.cjs +113 -0
- package/lib/core/folder-memory-async.cjs +424 -0
- package/lib/core/folder-memory-shared.cjs +890 -0
- package/lib/core/folder-memory.cjs +546 -0
- package/lib/core/framework-chain-composer.cjs +583 -0
- package/lib/core/frontmatter-schemas.cjs +468 -0
- package/lib/core/fusion-router.cjs +540 -0
- package/lib/core/futures/causal-cue.cjs +91 -0
- package/lib/core/futures/orchestrator.cjs +1391 -0
- package/lib/core/futures/subsystem-render.cjs +164 -0
- package/lib/core/gate-relevance.cjs +278 -0
- package/lib/core/git-ops.cjs +141 -0
- package/lib/core/graph-backfill.cjs +562 -0
- package/lib/core/graph-candidate-producer.cjs +235 -0
- package/lib/core/graph-derivation.cjs +546 -0
- package/lib/core/graph-derive-classifier.cjs +352 -0
- package/lib/core/graph-ops.cjs +274 -0
- package/lib/core/graph-refine-loop.cjs +194 -0
- package/lib/core/graph-self-heal.cjs +289 -0
- package/lib/core/greeting-intent-detector.cjs +201 -0
- package/lib/core/grill-engine.cjs +459 -0
- package/lib/core/hat-persistence.cjs +274 -0
- package/lib/core/hsi-engine.cjs +439 -0
- package/lib/core/hsi-lsa.cjs +246 -0
- package/lib/core/hsi-spectral.cjs +554 -0
- package/lib/core/hsi-to-graph.test.cjs +168 -0
- package/lib/core/icm-forest.cjs +703 -0
- package/lib/core/ignite-branch-gate.cjs +66 -0
- package/lib/core/index.cjs +60 -0
- package/lib/core/insight-sensors.cjs +1000 -0
- package/lib/core/install-state.cjs +242 -0
- package/lib/core/integration-registry.cjs +232 -0
- package/lib/core/intel-pipeline.cjs +566 -0
- package/lib/core/intelligence-cascade.cjs +852 -0
- package/lib/core/issue-tree.cjs +269 -0
- package/lib/core/larry-thinness-acknowledgment.cjs +64 -0
- package/lib/core/larry-thinness-acknowledgment.test.cjs +97 -0
- package/lib/core/lazygraph-ops.cjs +1453 -0
- package/lib/core/lens-engine.cjs +434 -0
- package/lib/core/leverage-scan.cjs +218 -0
- package/lib/core/llm-name-suggester.cjs +194 -0
- package/lib/core/llm-name-suggester.test.cjs +132 -0
- package/lib/core/lru-cache.cjs +139 -0
- package/lib/core/mcp-dep-heal.cjs +475 -0
- package/lib/core/mcp-dep-heal.test.cjs +253 -0
- package/lib/core/mcp-profiles.cjs +185 -0
- package/lib/core/meeting-ops.cjs +54 -0
- package/lib/core/memory/governance-candidate-raiser.cjs +205 -0
- package/lib/core/memory/governance-candidate.cjs +95 -0
- package/lib/core/memory/reconcile-memory-runner.cjs +653 -0
- package/lib/core/memory-ops.cjs +641 -0
- package/lib/core/meter/gate-density-reader.cjs +112 -0
- package/lib/core/meter/transfer-reader.cjs +276 -0
- package/lib/core/meter/two-gauge.cjs +245 -0
- package/lib/core/methodology-ingest.cjs +346 -0
- package/lib/core/metrics/larryreach-loop-health.cjs +142 -0
- package/lib/core/migration-snapshot.cjs +287 -0
- package/lib/core/migration-snapshot.test.cjs +174 -0
- package/lib/core/migrations/ROOM.md +33 -0
- package/lib/core/migrations/phase-109-nodes-provenance.cjs +400 -0
- package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
- package/lib/core/migrations/phase-160-nodes-bitemporal.cjs +168 -0
- package/lib/core/migrations/phase-160-nodes-bitemporal.test.cjs +140 -0
- package/lib/core/migrations/phase-162-section-nodes.cjs +156 -0
- package/lib/core/migrations/phase-222-ranker-weights.cjs +62 -0
- package/lib/core/migrations/phase-224-edge-review-status.cjs +87 -0
- package/lib/core/mindrian-brain-shim.test.cjs +221 -0
- package/lib/core/mode-select-sidechannel.cjs +259 -0
- package/lib/core/model-profiles.cjs +246 -0
- package/lib/core/mullins-scaffold.cjs +258 -0
- package/lib/core/mullins-scaffold.test.cjs +128 -0
- package/lib/core/mva-agent-contract.cjs +170 -0
- package/lib/core/mva-agent-contract.test.cjs +169 -0
- package/lib/core/mva-budget.cjs +75 -0
- package/lib/core/mva-budget.test.cjs +68 -0
- package/lib/core/mva-classifier.cjs +392 -0
- package/lib/core/mva-classifier.test.cjs +248 -0
- package/lib/core/mva-deck-builder.cjs +452 -0
- package/lib/core/mva-deck-builder.test.cjs +287 -0
- package/lib/core/mva-detect.smoke.test.cjs +209 -0
- package/lib/core/mva-dispatcher.cjs +110 -0
- package/lib/core/mva-dispatcher.test.cjs +216 -0
- package/lib/core/mva-option-router.cjs +414 -0
- package/lib/core/mva-option-router.test.cjs +483 -0
- package/lib/core/mva-orchestrator.cjs +365 -0
- package/lib/core/mva-orchestrator.test.cjs +916 -0
- package/lib/core/mva-progressive-renderer.cjs +194 -0
- package/lib/core/mva-progressive-renderer.test.cjs +157 -0
- package/lib/core/mva-rule-linter.cjs +458 -0
- package/lib/core/mva-rule-linter.test.cjs +484 -0
- package/lib/core/mva-state.cjs +159 -0
- package/lib/core/mva-telemetry.cjs +58 -0
- package/lib/core/mva-telemetry.test.cjs +196 -0
- package/lib/core/mva-vercel-deploy.cjs +168 -0
- package/lib/core/mva-vercel-deploy.test.cjs +239 -0
- package/lib/core/nav-dial.cjs +440 -0
- package/lib/core/navigation/ROOM.md +15 -0
- package/lib/core/navigation/abstraction-claim.cjs +185 -0
- package/lib/core/navigation/calibration-gate.cjs +284 -0
- package/lib/core/navigation/calibration-log.cjs +141 -0
- package/lib/core/navigation/confirm-node.cjs +73 -0
- package/lib/core/navigation/dashboard-helpers.cjs +145 -0
- package/lib/core/navigation/edges.cjs +1150 -0
- package/lib/core/navigation/evidence-claim.cjs +186 -0
- package/lib/core/navigation/explanation.cjs +48 -0
- package/lib/core/navigation/file-evidence-readback.cjs +242 -0
- package/lib/core/navigation/focus.cjs +155 -0
- package/lib/core/navigation/get-domains-for-trends.cjs +277 -0
- package/lib/core/navigation/governance.cjs +101 -0
- package/lib/core/navigation/grant-rubric.cjs +218 -0
- package/lib/core/navigation/graph-export.cjs +325 -0
- package/lib/core/navigation/ingestion.cjs +109 -0
- package/lib/core/navigation/insights-stale.test.cjs +127 -0
- package/lib/core/navigation/insights.cjs +574 -0
- package/lib/core/navigation/lens-nodes.cjs +315 -0
- package/lib/core/navigation/memory-artifacts.cjs +437 -0
- package/lib/core/navigation/memory-cortex-packet.cjs +274 -0
- package/lib/core/navigation/memory-events.cjs +811 -0
- package/lib/core/navigation/neighborhood.cjs +79 -0
- package/lib/core/navigation/packet.cjs +420 -0
- package/lib/core/navigation/planning-artifacts.cjs +219 -0
- package/lib/core/navigation/projections.cjs +295 -0
- package/lib/core/navigation/ranker-weights.cjs +133 -0
- package/lib/core/navigation/reasoning-write.cjs +211 -0
- package/lib/core/navigation/reconcile-guard.cjs +98 -0
- package/lib/core/navigation/reified-claim.cjs +287 -0
- package/lib/core/navigation/research-preflight.cjs +156 -0
- package/lib/core/navigation/room-birth.cjs +1213 -0
- package/lib/core/navigation/room-context.cjs +380 -0
- package/lib/core/navigation/room-home.cjs +142 -0
- package/lib/core/navigation/spine-events.cjs +548 -0
- package/lib/core/navigation/synthetic-expert.cjs +177 -0
- package/lib/core/navigation/transitions.cjs +253 -0
- package/lib/core/navigation/typed-claim.cjs +208 -0
- package/lib/core/navigation/typed-domain.cjs +249 -0
- package/lib/core/navigation/typed-entity.cjs +236 -0
- package/lib/core/navigation/typed-frame.cjs +257 -0
- package/lib/core/navigation/typed-open-question.cjs +130 -0
- package/lib/core/navigation/typed-opportunity.cjs +418 -0
- package/lib/core/navigation-engine-offer.cjs +776 -0
- package/lib/core/navigation-engine-shared.cjs +256 -0
- package/lib/core/navigation-engine.cjs +1696 -0
- package/lib/core/navigation.cjs +686 -0
- package/lib/core/nl-graph-queries.cjs +164 -0
- package/lib/core/node-insert-epistemic.test.cjs +212 -0
- package/lib/core/node-insert-overrides.test.cjs +273 -0
- package/lib/core/node-insert.cjs +274 -0
- package/lib/core/npm-cli-resolve.cjs +151 -0
- package/lib/core/npm-cli-resolve.test.cjs +153 -0
- package/lib/core/npm-install-lock.cjs +326 -0
- package/lib/core/npm-install-lock.test.cjs +379 -0
- package/lib/core/numeric/sklearn-stopwords-v1.json +325 -0
- package/lib/core/numeric/svd.cjs +377 -0
- package/lib/core/numeric/tfidf.cjs +241 -0
- package/lib/core/offer-presenter.cjs +406 -0
- package/lib/core/opportunity-extractor.cjs +183 -0
- package/lib/core/opportunity-ops.cjs +1423 -0
- package/lib/core/orchestration-candidate-lift.cjs +284 -0
- package/lib/core/part8-egress-guard.cjs +563 -0
- package/lib/core/part8-egress-guard.test.cjs +194 -0
- package/lib/core/part8-egress-ontology.cjs +174 -0
- package/lib/core/part8-egress-ontology.test.cjs +133 -0
- package/lib/core/persona-ops.cjs +692 -0
- package/lib/core/persona-override.cjs +327 -0
- package/lib/core/persona-taxonomy.cjs +328 -0
- package/lib/core/pinecone-inference.cjs +176 -0
- package/lib/core/pitch-feedback-schemas.cjs +303 -0
- package/lib/core/planning/artifact-brain-packet.cjs +212 -0
- package/lib/core/planning/reconcile-runner.cjs +347 -0
- package/lib/core/platform-gates.cjs +120 -0
- package/lib/core/platform.cjs +257 -0
- package/lib/core/proactive-intelligence.cjs +528 -0
- package/lib/core/problem-type-router.cjs +315 -0
- package/lib/core/publish-needs-default-lane.cjs +110 -0
- package/lib/core/ralph-loop-gate.cjs +48 -0
- package/lib/core/reader/ab-harness.cjs +177 -0
- package/lib/core/reader/decide-projection-reader.cjs +358 -0
- package/lib/core/reasoning-ops.cjs +639 -0
- package/lib/core/recipe-maps.cjs +442 -0
- package/lib/core/recovery/case-file.cjs +358 -0
- package/lib/core/recovery/controller.cjs +1008 -0
- package/lib/core/recovery/dispatcher.cjs +533 -0
- package/lib/core/recovery/result-semantics.cjs +488 -0
- package/lib/core/recovery/stage-envelope.cjs +338 -0
- package/lib/core/refusal-messaging.cjs +569 -0
- package/lib/core/refusal-messaging.test.cjs +220 -0
- package/lib/core/repo-version.cjs +134 -0
- package/lib/core/research-cache.cjs +165 -0
- package/lib/core/research-cache.test.cjs +137 -0
- package/lib/core/research-context-extractor.cjs +283 -0
- package/lib/core/research-corpus.cjs +814 -0
- package/lib/core/research-corpus.test.cjs +280 -0
- package/lib/core/research-filing-selector.cjs +189 -0
- package/lib/core/resolve-active-room.cjs +602 -0
- package/lib/core/resolve-brain-key.cjs +273 -0
- package/lib/core/resolve-umbilical-target.cjs +288 -0
- package/lib/core/resolve-vercel-key.cjs +107 -0
- package/lib/core/resolve-vercel-key.test.cjs +137 -0
- package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
- package/lib/core/room-auto-create.cjs +318 -0
- package/lib/core/room-auto-create.test.cjs +198 -0
- package/lib/core/room-chooser.cjs +244 -0
- package/lib/core/room-classifier-strict-mode.cjs +235 -0
- package/lib/core/room-db.cjs +348 -0
- package/lib/core/room-discard-cascade.cjs +238 -0
- package/lib/core/room-discard-cascade.test.cjs +135 -0
- package/lib/core/room-name-validator.cjs +132 -0
- package/lib/core/room-name-validator.test.cjs +156 -0
- package/lib/core/room-naming-selector.cjs +357 -0
- package/lib/core/room-naming-selector.test.cjs +277 -0
- package/lib/core/room-open.cjs +259 -0
- package/lib/core/room-ops-async.cjs +92 -0
- package/lib/core/room-ops-shared.cjs +64 -0
- package/lib/core/room-ops-sync.cjs +70 -0
- package/lib/core/room-ops.cjs +32 -0
- package/lib/core/room-receipt-emit.cjs +63 -0
- package/lib/core/room-root.cjs +93 -0
- package/lib/core/room-skeleton-scaffold.cjs +669 -0
- package/lib/core/room-skeleton-scaffold.test.cjs +296 -0
- package/lib/core/room-type-detector.cjs +386 -0
- package/lib/core/rs-backend-dispatch.cjs +64 -0
- package/lib/core/rs-brain-substrate-prompts.cjs +129 -0
- package/lib/core/rs-brain-substrate.cjs +570 -0
- package/lib/core/rs-breakthrough-scorer.cjs +255 -0
- package/lib/core/rs-canon-violations.cjs +82 -0
- package/lib/core/rs-chain-feeder.cjs +381 -0
- package/lib/core/rs-commercial-assessor.cjs +280 -0
- package/lib/core/rs-corpus-quality-gate.cjs +62 -0
- package/lib/core/rs-differential-scorer.cjs +629 -0
- package/lib/core/rs-domain-analyzer.cjs +385 -0
- package/lib/core/rs-egress-prompts.cjs +113 -0
- package/lib/core/rs-egress-telemetry.cjs +225 -0
- package/lib/core/rs-egress-violations.cjs +53 -0
- package/lib/core/rs-engine.cjs +597 -0
- package/lib/core/rs-expert-brain-projection.cjs +280 -0
- package/lib/core/rs-expert-mapper.cjs +467 -0
- package/lib/core/rs-fetcher-academic.cjs +697 -0
- package/lib/core/rs-fetcher-experts.cjs +314 -0
- package/lib/core/rs-fetcher-industry.cjs +731 -0
- package/lib/core/rs-fetcher-patents.cjs +564 -0
- package/lib/core/rs-innovation-classifier.cjs +194 -0
- package/lib/core/rs-math.cjs +458 -0
- package/lib/core/rs-mind-map.cjs +656 -0
- package/lib/core/rs-neo4j-writer.cjs +388 -0
- package/lib/core/rs-nl-to-query.cjs +435 -0
- package/lib/core/rs-pinecone-bridge.cjs +344 -0
- package/lib/core/rs-preprocessor.cjs +350 -0
- package/lib/core/rs-query-matrix.cjs +316 -0
- package/lib/core/rs-query-to-text.cjs +438 -0
- package/lib/core/rs-sqlite-mirror.cjs +495 -0
- package/lib/core/rs-thesis-generator.cjs +188 -0
- package/lib/core/rs_cache.py +635 -0
- package/lib/core/rs_corpus.py +562 -0
- package/lib/core/rs_corpus_exclude.py +62 -0
- package/lib/core/rs_hybrid.py +589 -0
- package/lib/core/rs_math.py +287 -0
- package/lib/core/rs_rooms.py +196 -0
- package/lib/core/salient-governance.cjs +315 -0
- package/lib/core/scheduled-scanner.cjs +658 -0
- package/lib/core/scratchpad-ops.cjs +316 -0
- package/lib/core/seam-liveness.cjs +191 -0
- package/lib/core/seam-liveness.test.cjs +177 -0
- package/lib/core/section-8-trace-schema.cjs +138 -0
- package/lib/core/section-registry.cjs +167 -0
- package/lib/core/security/agentshield-adapters.test.cjs +104 -0
- package/lib/core/security/agentshield-run.cjs +343 -0
- package/lib/core/security/agentshield-scanner.cjs +314 -0
- package/lib/core/security/agentshield-scanner.test.cjs +259 -0
- package/lib/core/sensors/hat-scoping-table.cjs +103 -0
- package/lib/core/sensors/sensor-circularity.cjs +278 -0
- package/lib/core/sensors/sensor-content-relevance.cjs +407 -0
- package/lib/core/sensors/sensor-diffusion-adoption.cjs +230 -0
- package/lib/core/sensors/sensor-eureka.cjs +208 -0
- package/lib/core/sensors/sensor-expert-skill.cjs +293 -0
- package/lib/core/sensors/sensor-external-fact.cjs +184 -0
- package/lib/core/sensors/sensor-gate-approach.cjs +104 -0
- package/lib/core/sensors/sensor-jtbd-reweight.cjs +141 -0
- package/lib/core/sensors/sensor-lagging-component.cjs +115 -0
- package/lib/core/sensors/sensor-memory-cortex.cjs +111 -0
- package/lib/core/sensors/sensor-methodology-decision.cjs +131 -0
- package/lib/core/sensors/sensor-opportunity-harvest.cjs +195 -0
- package/lib/core/sensors/sensor-perspective-lock.cjs +174 -0
- package/lib/core/sensors/sensor-priority.cjs +183 -0
- package/lib/core/sensors/sensor-recency.cjs +151 -0
- package/lib/core/sensors/sensor-roadmap-type.cjs +421 -0
- package/lib/core/sensors/sensor-room-pick.cjs +238 -0
- package/lib/core/sensors/sensor-show-share.cjs +215 -0
- package/lib/core/sensors/sensor-temporal-blindness.cjs +123 -0
- package/lib/core/sensors/sensor-types.cjs +294 -0
- package/lib/core/sensors/sensor-url-ingest.cjs +234 -0
- package/lib/core/session-binding.cjs +208 -0
- package/lib/core/session-presence.cjs +404 -0
- package/lib/core/session-register.cjs +138 -0
- package/lib/core/session-state.cjs +144 -0
- package/lib/core/shallow-doc-parser.cjs +353 -0
- package/lib/core/shallow-doc-parser.test.cjs +226 -0
- package/lib/core/skill-activation-router.cjs +284 -0
- package/lib/core/skillopt-schemas.cjs +509 -0
- package/lib/core/stale-copy-scanner.cjs +190 -0
- package/lib/core/stance-state.cjs +153 -0
- package/lib/core/state-aware-router.cjs +78 -0
- package/lib/core/state-ops.cjs +80 -0
- package/lib/core/state-version.cjs +350 -0
- package/lib/core/statusline-cache.cjs +266 -0
- package/lib/core/statusline-liveness-gate.cjs +105 -0
- package/lib/core/surface-fence.cjs +127 -0
- package/lib/core/synthesizers/comparison-matrix.cjs +82 -0
- package/lib/core/synthesizers/convergence-map.cjs +107 -0
- package/lib/core/synthesizers/domain-hierarchy.cjs +138 -0
- package/lib/core/synthesizers/source-comparison.cjs +56 -0
- package/lib/core/synthesizers/tension-map.cjs +119 -0
- package/lib/core/synthetic-expert-behavior-gate.cjs +99 -0
- package/lib/core/synthetic-expert-construction-gate.cjs +170 -0
- package/lib/core/telemetry/schema.cjs +168 -0
- package/lib/core/telemetry/schema.test.cjs +124 -0
- package/lib/core/telemetry/validator.cjs +200 -0
- package/lib/core/telemetry/validator.test.cjs +188 -0
- package/lib/core/telemetry/writer.cjs +141 -0
- package/lib/core/telemetry/writer.test.cjs +331 -0
- package/lib/core/temporal/date-sync-gate.cjs +256 -0
- package/lib/core/temporal/date-sync-gate.test.cjs +191 -0
- package/lib/core/temporal/dual-stamp.cjs +172 -0
- package/lib/core/temporal/dual-stamp.test.cjs +172 -0
- package/lib/core/temporal/point-in-time.cjs +76 -0
- package/lib/core/temporal/point-in-time.test.cjs +169 -0
- package/lib/core/temporal/recency-decay.cjs +119 -0
- package/lib/core/temporal/recency-decay.test.cjs +140 -0
- package/lib/core/temporal/reference-now.cjs +281 -0
- package/lib/core/temporal/reference-now.test.cjs +225 -0
- package/lib/core/temporal/resolve-relative-time.cjs +116 -0
- package/lib/core/temporal/resolve-relative-time.test.cjs +138 -0
- package/lib/core/temporal/supersession.cjs +250 -0
- package/lib/core/temporal/supersession.test.cjs +103 -0
- package/lib/core/terminal-capability.cjs +88 -0
- package/lib/core/token-estimator.cjs +348 -0
- package/lib/core/tone-filter.cjs +147 -0
- package/lib/core/trending-to-absurd/orchestrator.cjs +341 -0
- package/lib/core/trending-to-absurd/stage7-roadmap.cjs +317 -0
- package/lib/core/trending-to-absurd/variance.cjs +169 -0
- package/lib/core/unknowns/bandit.cjs +332 -0
- package/lib/core/unknowns/corpus-adapter.cjs +327 -0
- package/lib/core/unknowns/dsp.cjs +356 -0
- package/lib/core/unknowns/edge-writer.cjs +211 -0
- package/lib/core/unknowns/iface.cjs +212 -0
- package/lib/core/unknowns/orchestrator.cjs +375 -0
- package/lib/core/unknowns/pattern-miner.cjs +214 -0
- package/lib/core/unknowns/rumsfeld-matrix.cjs +155 -0
- package/lib/core/unknowns/verdict.cjs +254 -0
- package/lib/core/update-path.cjs +57 -0
- package/lib/core/url-ingest.cjs +568 -0
- package/lib/core/user-archetype.cjs +284 -0
- package/lib/core/user-md-ops.cjs +578 -0
- package/lib/core/venture-shape-nudge.cjs +178 -0
- package/lib/core/venture-shape-nudge.test.cjs +266 -0
- package/lib/core/verb-reach-affinity.cjs +299 -0
- package/lib/core/visual-ops.cjs +692 -0
- package/lib/core/voice-transition-detector.cjs +125 -0
- package/lib/core/watched-sources.cjs +237 -0
- package/lib/core/write-lock.cjs +149 -0
- package/lib/graph/canvas-graph.js +467 -0
- package/lib/graph/constellation-config.cjs +299 -0
- package/lib/graph/graph-detail-panel.js +165 -0
- package/lib/hmi/ROOM.md +47 -0
- package/lib/hmi/across-session-memory.cjs +669 -0
- package/lib/hmi/agentshield-drift-gate.cjs +142 -0
- package/lib/hmi/brain-review-packet.cjs +221 -0
- package/lib/hmi/cortex-reach-adapter.cjs +271 -0
- package/lib/hmi/cross-room-memory.cjs +618 -0
- package/lib/hmi/decoy-tier.cjs +395 -0
- package/lib/hmi/depth-state.cjs +164 -0
- package/lib/hmi/dial-label-composer.cjs +410 -0
- package/lib/hmi/dial-presenter.cjs +508 -0
- package/lib/hmi/dial-reach-orchestrator.cjs +377 -0
- package/lib/hmi/dial-selector.cjs +239 -0
- package/lib/hmi/f1-pick-capture-cli.cjs +131 -0
- package/lib/hmi/f3-depth-capture-cli.cjs +77 -0
- package/lib/hmi/f4-scope-capture-cli.cjs +86 -0
- package/lib/hmi/f8-action-capture-cli.cjs +145 -0
- package/lib/hmi/f8-capture.test.cjs +77 -0
- package/lib/hmi/f9-ordered-capture-cli.cjs +138 -0
- package/lib/hmi/harvest-scope-state.cjs +202 -0
- package/lib/hmi/hats-persona-cache.cjs +142 -0
- package/lib/hmi/jtbd-classifier.cjs +219 -0
- package/lib/hmi/jtbd-state.cjs +263 -0
- package/lib/hmi/jtbd-taxonomy.json +402 -0
- package/lib/hmi/mindrian-ascii-logo.cjs +96 -0
- package/lib/hmi/part8-egress-gate.cjs +149 -0
- package/lib/hmi/reach-component-map.json +47 -0
- package/lib/hmi/reach-relevance-gate.cjs +147 -0
- package/lib/hmi/selector-dispatcher.cjs +1201 -0
- package/lib/hmi/selector-dispatcher.test.cjs +141 -0
- package/lib/hmi/selector-telemetry.cjs +269 -0
- package/lib/hmi/shape-f0-renderer.cjs +145 -0
- package/lib/hmi/shape-f1-fallback.cjs +80 -0
- package/lib/hmi/shape-f1-renderer.cjs +219 -0
- package/lib/hmi/shape-f2-renderer.cjs +132 -0
- package/lib/hmi/shape-f3-parity.test.cjs +64 -0
- package/lib/hmi/shape-f3-renderer.cjs +66 -0
- package/lib/hmi/shape-f4-parity.test.cjs +72 -0
- package/lib/hmi/shape-f4-renderer.cjs +72 -0
- package/lib/hmi/shape-f5-renderer.cjs +155 -0
- package/lib/hmi/shape-f6-plan-review-renderer.cjs +324 -0
- package/lib/hmi/shape-f6-renderer.cjs +144 -0
- package/lib/hmi/shape-f7-breakthrough-renderer.cjs +234 -0
- package/lib/hmi/shape-f7-breakthrough-renderer.test.cjs +233 -0
- package/lib/hmi/shape-f8-renderer.cjs +150 -0
- package/lib/hmi/shape-f8-renderer.test.cjs +70 -0
- package/lib/hmi/shape-f9-renderer.cjs +187 -0
- package/lib/hmi/shape-f9-renderer.test.cjs +80 -0
- package/lib/hmi/shape-g-renderer.cjs +219 -0
- package/lib/hmi/shape-h-renderer.cjs +222 -0
- package/lib/hmi/tier-check.cjs +63 -0
- package/lib/hmi/turn-text.cjs +268 -0
- package/lib/hmi/voice-color-mark.cjs +318 -0
- package/lib/hmi/voice-style-log.cjs +276 -0
- package/lib/import/PRECONDITIONS.md +41 -0
- package/lib/import/branding.cjs +210 -0
- package/lib/import/branding.test.cjs +235 -0
- package/lib/import/classifications-sync.cjs +104 -0
- package/lib/import/classifications-sync.test.cjs +129 -0
- package/lib/import/enricher.cjs +296 -0
- package/lib/import/enricher.test.cjs +273 -0
- package/lib/import/integration.test.cjs +376 -0
- package/lib/import/manifest.cjs +129 -0
- package/lib/import/manifest.schema.json +185 -0
- package/lib/import/manifest.test.cjs +123 -0
- package/lib/import/meeting-detector.cjs +92 -0
- package/lib/import/meeting-detector.test.cjs +100 -0
- package/lib/import/person-detector.cjs +229 -0
- package/lib/import/person-detector.test.cjs +149 -0
- package/lib/import/report.cjs +186 -0
- package/lib/import/report.test.cjs +186 -0
- package/lib/import/room-md-scaffolder.cjs +49 -0
- package/lib/import/router.cjs +224 -0
- package/lib/import/router.test.cjs +356 -0
- package/lib/import/run-all-tests.cjs +36 -0
- package/lib/import/smoke-test.cjs +213 -0
- package/lib/import/smoke-test.test.cjs +148 -0
- package/lib/import/undo.test.cjs +199 -0
- package/lib/import/vault-scanner.cjs +105 -0
- package/lib/import/vault-scanner.test.cjs +67 -0
- package/lib/lens-engine/correlation-resolver.cjs +174 -0
- package/lib/lens-engine/source-lens-driver.cjs +736 -0
- package/lib/mcp/adapter-client.cjs +103 -0
- package/lib/mcp/app-html/dashboard.html +316 -0
- package/lib/mcp/app-html/graph.html +428 -0
- package/lib/mcp/app-html/mindrian-platform.html +1841 -0
- package/lib/mcp/app-html/wiki.html +383 -0
- package/lib/mcp/app-views.cjs +322 -0
- package/lib/mcp/brain-composition-census.cjs +184 -0
- package/lib/mcp/brain-router.cjs +551 -0
- package/lib/mcp/capability-registry.cjs +62 -0
- package/lib/mcp/contract-version.cjs +59 -0
- package/lib/mcp/daemon-lifecycle.cjs +324 -0
- package/lib/mcp/gate-dedup.cjs +120 -0
- package/lib/mcp/gate-ledger.cjs +145 -0
- package/lib/mcp/gate-render.cjs +483 -0
- package/lib/mcp/hook-adapter-audit.cjs +199 -0
- package/lib/mcp/larry-context.cjs +42 -0
- package/lib/mcp/mcp-first-flag.cjs +147 -0
- package/lib/mcp/no-instructions.test.cjs +270 -0
- package/lib/mcp/pipeline-state.cjs +424 -0
- package/lib/mcp/prompts.cjs +421 -0
- package/lib/mcp/register-core-tools.cjs +78 -0
- package/lib/mcp/resources.cjs +359 -0
- package/lib/mcp/runtime-instructions.cjs +38 -0
- package/lib/mcp/session-catchup.cjs +349 -0
- package/lib/mcp/session-registry.cjs +113 -0
- package/lib/mcp/session-room.cjs +124 -0
- package/lib/mcp/sse-event-bus.cjs +98 -0
- package/lib/mcp/stop-gate-handler.cjs +589 -0
- package/lib/mcp/surface-detect.cjs +186 -0
- package/lib/mcp/tool-router.cjs +2115 -0
- package/lib/mcp/tools/chain.cjs +674 -0
- package/lib/mcp/tools/claim.cjs +180 -0
- package/lib/mcp/tools/context.cjs +92 -0
- package/lib/mcp/tools/dual-path.cjs +79 -0
- package/lib/mcp/tools/gate.cjs +392 -0
- package/lib/mcp/tools/graph-reason.cjs +130 -0
- package/lib/mcp/tools/graph.cjs +321 -0
- package/lib/mcp/tools/identity.cjs +174 -0
- package/lib/mcp/tools/room.cjs +449 -0
- package/lib/mcp/tools/sensors.cjs +450 -0
- package/lib/mcp/tools/status.cjs +183 -0
- package/lib/mcp/tools/stop-gate.cjs +103 -0
- package/lib/mcp/tools/views.cjs +382 -0
- package/lib/mcp/tree-watcher.cjs +199 -0
- package/lib/memory/.mindrian/auto-explore-mat-test-001.json +11 -0
- package/lib/memory/aaak-compress.cjs +403 -0
- package/lib/memory/aaak-compress.test.cjs +288 -0
- package/lib/memory/async-artifact-auto-commit.test.cjs +223 -0
- package/lib/memory/bearer-token.test.cjs +315 -0
- package/lib/memory/body-shape-coverage.test.cjs +268 -0
- package/lib/memory/brain-cache-lru.test.cjs +259 -0
- package/lib/memory/brain-client-query-shape.test.cjs +160 -0
- package/lib/memory/brain-cypher-chain-slice.test.cjs +368 -0
- package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
- package/lib/memory/brain-derivation-queue.test.cjs +553 -0
- package/lib/memory/brain-derivation.test.cjs +639 -0
- package/lib/memory/brain-derive-command.test.cjs +534 -0
- package/lib/memory/brain-derive-curation.test.cjs +243 -0
- package/lib/memory/brain-md-invariants-validator.test.cjs +704 -0
- package/lib/memory/brain-md-schema.test.cjs +467 -0
- package/lib/memory/brain-md-staleness.test.cjs +525 -0
- package/lib/memory/brain-server-resolution.test.cjs +314 -0
- package/lib/memory/brain-suggestion-template.test.cjs +200 -0
- package/lib/memory/chain-recommender-canonical.test.cjs +208 -0
- package/lib/memory/chain-recommender.test.cjs +233 -0
- package/lib/memory/chat-context.test.cjs +128 -0
- package/lib/memory/command-registry.test.cjs +220 -0
- package/lib/memory/connector-registry.test.cjs +94 -0
- package/lib/memory/correlation-label-index.test.cjs +119 -0
- package/lib/memory/correlation.test.cjs +253 -0
- package/lib/memory/cross-room-aggregator.test.cjs +909 -0
- package/lib/memory/curation-132-03-dedup-held-rename.test.cjs +251 -0
- package/lib/memory/curation-132-05-pseudonymize.test.cjs +205 -0
- package/lib/memory/curation-batch.test.cjs +213 -0
- package/lib/memory/dashboard-server.test.cjs +256 -0
- package/lib/memory/debouncer-drain-at-prompt.test.cjs +389 -0
- package/lib/memory/decision-capture.test.cjs +632 -0
- package/lib/memory/decision-capture.worker.cjs +70 -0
- package/lib/memory/doctor-deprecation-surface.test.cjs +188 -0
- package/lib/memory/dual-graph-health.test.cjs +485 -0
- package/lib/memory/explain-decision-command.test.cjs +521 -0
- package/lib/memory/explain-decision-footer.test.cjs +316 -0
- package/lib/memory/explored-materials-store.cjs +392 -0
- package/lib/memory/f-selector-ranker.test.cjs +593 -0
- package/lib/memory/feynman-minto-guardian.test.cjs +863 -0
- package/lib/memory/feynman-minto-invariants.test.cjs +554 -0
- package/lib/memory/feynman-prompts-drift.test.cjs +144 -0
- package/lib/memory/feynman-prompts.cjs +151 -0
- package/lib/memory/feynman-prompts.test.cjs +96 -0
- package/lib/memory/first-touch-version.test.cjs +198 -0
- package/lib/memory/folder-memory-quadruple.test.cjs +548 -0
- package/lib/memory/folder-memory.test.cjs +503 -0
- package/lib/memory/framework-chain-composer.test.cjs +549 -0
- package/lib/memory/frontmatter-schema-validator.test.cjs +344 -0
- package/lib/memory/guardian-onstop-reaches-user.test.cjs +396 -0
- package/lib/memory/heal-command.test.cjs +604 -0
- package/lib/memory/help-coverage.test.cjs +108 -0
- package/lib/memory/help-renderer.test.cjs +145 -0
- package/lib/memory/huji-run-one-async-parity.test.cjs +242 -0
- package/lib/memory/hypergraph-event-schema.test.cjs +116 -0
- package/lib/memory/index-artifact-transaction.test.cjs +333 -0
- package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +122 -0
- package/lib/memory/local-chain-recommender.test.cjs +172 -0
- package/lib/memory/mcp-input-validation.test.cjs +240 -0
- package/lib/memory/mcp-server-brain-deps.test.cjs +270 -0
- package/lib/memory/mcp-stack-fallback.test.cjs +433 -0
- package/lib/memory/minto-debounce-consumer-census.test.cjs +567 -0
- package/lib/memory/minto-debouncer.test.cjs +407 -0
- package/lib/memory/minto-debouncer.worker.cjs +46 -0
- package/lib/memory/minto-migration-v88.test.cjs +265 -0
- package/lib/memory/minto-schema-v88.test.cjs +390 -0
- package/lib/memory/mos-status-renderer.test.cjs +631 -0
- package/lib/memory/narrative-schema.cjs +376 -0
- package/lib/memory/narrative-schema.test.cjs +209 -0
- package/lib/memory/nav-dial.test.cjs +414 -0
- package/lib/memory/navigation-engine-core.test.cjs +712 -0
- package/lib/memory/navigation-engine-offer.test.cjs +404 -0
- package/lib/memory/navigation-hook-resolver.test.cjs +177 -0
- package/lib/memory/navigation-invariants.test.cjs +483 -0
- package/lib/memory/navigation-projections.test.cjs +241 -0
- package/lib/memory/navigation-write-edge.test.cjs +206 -0
- package/lib/memory/offer-closer.test.cjs +258 -0
- package/lib/memory/offer-presenter.test.cjs +554 -0
- package/lib/memory/on-stop-snapshot.test.cjs +404 -0
- package/lib/memory/orchestration-projection.test.cjs +706 -0
- package/lib/memory/packet-chain-hint.test.cjs +407 -0
- package/lib/memory/packet-schema-validation.test.cjs +317 -0
- package/lib/memory/palette-consistency.test.cjs +127 -0
- package/lib/memory/pending-tension-store.cjs +453 -0
- package/lib/memory/per-command-jtbd-derivation.test.cjs +130 -0
- package/lib/memory/per-command-teaching.test.cjs +110 -0
- package/lib/memory/post-compact-reinjection.test.cjs +854 -0
- package/lib/memory/post-write-triple.test.cjs +317 -0
- package/lib/memory/pre-compact-snapshot.test.cjs +495 -0
- package/lib/memory/precommit-real-commit.test.cjs +301 -0
- package/lib/memory/problem-type-router.test.cjs +656 -0
- package/lib/memory/query-efficiency-telemetry.test.cjs +612 -0
- package/lib/memory/recompile-room-references.test.cjs +392 -0
- package/lib/memory/recompile-room-references.worker.cjs +42 -0
- package/lib/memory/record-decision-dual-write.test.cjs +454 -0
- package/lib/memory/render-v2-disposition.test.cjs +199 -0
- package/lib/memory/room-classifier-strict-mode.test.cjs +430 -0
- package/lib/memory/room-minto-hook.test.cjs +398 -0
- package/lib/memory/rs-discovery-engine.test.cjs +323 -0
- package/lib/memory/run-feynman-tests.cjs +2101 -0
- package/lib/memory/security-trifecta.test.cjs +329 -0
- package/lib/memory/selector-alias-map.test.cjs +172 -0
- package/lib/memory/selector-decisions.test.cjs +417 -0
- package/lib/memory/selector-miss.test.cjs +290 -0
- package/lib/memory/session-start-brain-staleness.test.cjs +363 -0
- package/lib/memory/session-start-triple-injection.test.cjs +514 -0
- package/lib/memory/sessionstart-banner-formatter.cjs +318 -0
- package/lib/memory/sessionstart-coordinator.test.cjs +446 -0
- package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
- package/lib/memory/skill-activation-router.test.cjs +465 -0
- package/lib/memory/skill-vs-code-drift.test.cjs +257 -0
- package/lib/memory/soft-alias.test.cjs +144 -0
- package/lib/memory/spine-events-correlation.test.cjs +198 -0
- package/lib/memory/stale-copy-scanner.test.cjs +294 -0
- package/lib/memory/stamp-artifact-write.test.cjs +304 -0
- package/lib/memory/state-aware-router.test.cjs +90 -0
- package/lib/memory/statusline-active-room-write.test.cjs +245 -0
- package/lib/memory/statusline-active-room.test.cjs +315 -0
- package/lib/memory/statusline-minto-segment.test.cjs +292 -0
- package/lib/memory/statusline-two-row.test.cjs +338 -0
- package/lib/memory/suggest-next-workflow.test.cjs +176 -0
- package/lib/memory/sync-async-entry-points.test.cjs +204 -0
- package/lib/memory/terminal-capability.test.cjs +155 -0
- package/lib/memory/test-bridge-writer-enhanced.cjs +452 -0
- package/lib/memory/test-rs-brain-substrate-shape.cjs +529 -0
- package/lib/memory/test-rs-brain-substrate.cjs +636 -0
- package/lib/memory/test-rs-breakthrough-scorer.cjs +375 -0
- package/lib/memory/test-rs-canon-violations.cjs +218 -0
- package/lib/memory/test-rs-chain-feeder-core.cjs +344 -0
- package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +297 -0
- package/lib/memory/test-rs-commercial-assessor.cjs +385 -0
- package/lib/memory/test-rs-differential-scorer.cjs +480 -0
- package/lib/memory/test-rs-discovery-engine.cjs +648 -0
- package/lib/memory/test-rs-domain-analyzer.cjs +492 -0
- package/lib/memory/test-rs-egress-primitives.cjs +420 -0
- package/lib/memory/test-rs-expert-mapper.cjs +547 -0
- package/lib/memory/test-rs-explain-command.cjs +443 -0
- package/lib/memory/test-rs-fetcher-academic.cjs +848 -0
- package/lib/memory/test-rs-fetcher-experts.cjs +496 -0
- package/lib/memory/test-rs-fetcher-industry.cjs +702 -0
- package/lib/memory/test-rs-fetcher-patents.cjs +674 -0
- package/lib/memory/test-rs-innovation-classifier.cjs +301 -0
- package/lib/memory/test-rs-mind-map.cjs +646 -0
- package/lib/memory/test-rs-neo4j-writer.cjs +518 -0
- package/lib/memory/test-rs-nl-to-query.cjs +449 -0
- package/lib/memory/test-rs-pinecone-bridge.cjs +282 -0
- package/lib/memory/test-rs-preprocessor.cjs +433 -0
- package/lib/memory/test-rs-query-matrix.cjs +391 -0
- package/lib/memory/test-rs-query-to-text.cjs +551 -0
- package/lib/memory/test-rs-sqlite-mirror.cjs +649 -0
- package/lib/memory/test-rs-thesis-generator.cjs +360 -0
- package/lib/memory/triple-context-formatter.cjs +473 -0
- package/lib/memory/triple-context-formatter.test.cjs +442 -0
- package/lib/memory/user-md-persona.test.cjs +565 -0
- package/lib/memory/userpromptsubmit-integration.test.cjs +787 -0
- package/lib/memory/validators/README.md +157 -0
- package/lib/memory/validators/brain-md-invariants.cjs +475 -0
- package/lib/memory/validators/brain-substrate-invariants.cjs +285 -0
- package/lib/memory/validators/external-academic-invariants.cjs +249 -0
- package/lib/memory/validators/external-industry-invariants.cjs +271 -0
- package/lib/memory/validators/external-patents-invariants.cjs +266 -0
- package/lib/memory/validators/minto-invariants.cjs +62 -0
- package/lib/memory/validators/navigation-invariants.cjs +340 -0
- package/lib/memory/validators/queue-health.cjs +95 -0
- package/lib/memory/validators/snapshot-integrity.cjs +129 -0
- package/lib/memory/validators/stale-lifecycle.cjs +116 -0
- package/lib/memory/vault-section-minto-generator-atomic.test.cjs +556 -0
- package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +73 -0
- package/lib/memory/workflow-layer-e2e.test.cjs +262 -0
- package/lib/memory/write-lock-atomic.test.cjs +137 -0
- package/lib/memory/write-lock-atomic.worker.cjs +55 -0
- package/lib/parity/check-parity.cjs +83 -0
- package/lib/presentation/presentation-server.cjs +101 -0
- package/lib/presentation/presentation-watcher.cjs +123 -0
- package/lib/quickview/hub-server.cjs +719 -0
- package/lib/quickview/server.cjs +533 -0
- package/lib/render/JTBD-PALETTES.md +145 -0
- package/lib/render/ROOM.md +111 -0
- package/lib/render/render-v2.cjs +532 -0
- package/lib/render/render-v2.test.cjs +267 -0
- package/lib/render/render.cjs +65 -0
- package/lib/sessionstart/budget-compressor.cjs +130 -0
- package/lib/sessionstart/contributor-interface.cjs +134 -0
- package/lib/sessionstart/contributor-isolator.cjs +128 -0
- package/lib/sessionstart/precedence-ladder.cjs +47 -0
- package/lib/state/ROOM.md +46 -0
- package/lib/state/state-md-parser.cjs +215 -0
- package/lib/statusline/ROOM.md +38 -0
- package/lib/statusline/banner-suppression.cjs +50 -0
- package/lib/statusline/cockpit-renderer.cjs +443 -0
- package/lib/statusline/cockpit-signals.cjs +312 -0
- package/lib/statusline/cockpit-telemetry.cjs +152 -0
- package/lib/statusline/ctx-window.cjs +135 -0
- package/lib/statusline/governing-thought-truncator.cjs +45 -0
- package/lib/statusline/next-move-cache.cjs +235 -0
- package/lib/statusline/ratification-next.cjs +164 -0
- package/lib/statusline/room-health-cache.cjs +200 -0
- package/lib/statusline/surface-detect.cjs +85 -0
- package/lib/statusline/two-row-renderer.cjs +207 -0
- package/lib/statusline/version-resolver.cjs +81 -0
- package/lib/ui/design-system.cjs +19 -0
- package/lib/update-bootstrap.sh.template +145 -0
- package/lib/vault/frontmatter-schema.cjs +297 -0
- package/lib/vault/room-scanner.cjs +365 -0
- package/lib/vault/wikilink-builder.cjs +231 -0
- package/lib/vault/wikilink-builder.test.cjs +182 -0
- package/lib/wiki/briefing.cjs +193 -0
- package/lib/wiki/editor-dist/wiki-editor.css +1 -0
- package/lib/wiki/editor-dist/wiki-editor.js +1327 -0
- package/lib/wiki/graph-links.cjs +281 -0
- package/lib/wiki/page-renderer.cjs +229 -0
- package/lib/wiki/room-home.cjs +353 -0
- package/lib/wiki/wiki-chat.cjs +81 -0
- package/lib/wiki/wiki-export.cjs +364 -0
- package/lib/wiki/wiki-layout.cjs +1143 -0
- package/lib/wiki/wiki-search.cjs +142 -0
- package/lib/wiki/wiki-server.cjs +748 -0
- package/lib/wiki/wiki-watcher.cjs +105 -0
- package/lib/workflow/ROOM.md +47 -0
- package/lib/workflow/chain-source.cjs +179 -0
- package/lib/workflow/command-resolver.cjs +155 -0
- package/lib/workflow/command-resolver.test.cjs +235 -0
- package/lib/workflow/cross-room-umbilical-closer.cjs +364 -0
- package/lib/workflow/dial-close-reach.cjs +405 -0
- package/lib/workflow/f-selector-ranker.cjs +1148 -0
- package/lib/workflow/f1-pick-consumer.cjs +232 -0
- package/lib/workflow/f3-depth-consumer.cjs +98 -0
- package/lib/workflow/f4-scope-consumer.cjs +112 -0
- package/lib/workflow/f8-consumer.test.cjs +82 -0
- package/lib/workflow/f8-fanout-consumer.cjs +208 -0
- package/lib/workflow/f9-consumer.test.cjs +71 -0
- package/lib/workflow/f9-ordered-consumer.cjs +199 -0
- package/lib/workflow/local-chain-recommender.cjs +330 -0
- package/lib/workflow/memory-cascade-f9-adapter.cjs +273 -0
- package/lib/workflow/memory-governance-closer.cjs +384 -0
- package/lib/workflow/offer-closer.cjs +407 -0
- package/lib/workflow/reach-hedge-ranker.cjs +809 -0
- package/lib/workflow/reach-reject-reader.cjs +372 -0
- package/lib/workflow/reconcile-f9-adapter.cjs +299 -0
- package/lib/workflow/selector-decisions.cjs +478 -0
- package/lib/workflow/session-binding-consumer.cjs +249 -0
- package/npm-shrinkwrap.json +1544 -0
- package/output-styles/destijl.md +67 -0
- package/package.json +22 -4
- package/pipelines/PWS_grading/01-deep-grade.md +48 -0
- package/pipelines/PWS_grading/02-mullins.md +50 -0
- package/pipelines/PWS_grading/03-build-thesis.md +60 -0
- package/pipelines/PWS_grading/04-structure-argument.md +77 -0
- package/pipelines/PWS_grading/CHAIN.md +79 -0
- package/pipelines/analogy/01-decompose.md +80 -0
- package/pipelines/analogy/02-abstract.md +87 -0
- package/pipelines/analogy/03-search.md +135 -0
- package/pipelines/analogy/04-transfer.md +101 -0
- package/pipelines/analogy/05-validate.md +106 -0
- package/pipelines/analogy/CHAIN.md +73 -0
- package/pipelines/discovery/01-explore-domains.md +44 -0
- package/pipelines/discovery/02-think-hats.md +50 -0
- package/pipelines/discovery/03-analyze-needs.md +54 -0
- package/pipelines/discovery/CHAIN.md +48 -0
- package/pipelines/thesis/01-structure-argument.md +45 -0
- package/pipelines/thesis/02-challenge-assumptions.md +48 -0
- package/pipelines/thesis/03-build-thesis.md +54 -0
- package/pipelines/thesis/CHAIN.md +48 -0
- package/references/brain/causal-directives.md +91 -0
- package/references/brain/causal-enrichment.cypher +165 -0
- package/references/brain/command-triggers-schema.md +15 -0
- package/references/brain/graph-architecture.md +317 -0
- package/references/brain/query-patterns.md +504 -0
- package/references/brain/room-hierarchy-schema.md +224 -0
- package/references/brain/schema.md +86 -0
- package/references/capability-radar/capabilities-index.md +269 -0
- package/references/capability-radar/changelog-cache.md +95 -0
- package/references/causal/causal-schema.md +103 -0
- package/references/design/email-template-standard.md +169 -0
- package/references/design/graph-visualization-standard.md +178 -0
- package/references/design/newsletter-email-template.html +307 -0
- package/references/document-generation.md +179 -0
- package/references/hsi/HSI-TOOLS-REFERENCE.md +222 -0
- package/references/import-config.md +141 -0
- package/references/integrations/detection-patterns.md +101 -0
- package/references/meeting/artifact-template.md +377 -0
- package/references/meeting/cross-meeting-intelligence.md +216 -0
- package/references/meeting/cross-relationship-patterns.md +202 -0
- package/references/meeting/extraction-perspectives.md +225 -0
- package/references/meeting/filing-protocol.md +222 -0
- package/references/meeting/knowledge-typing.md +242 -0
- package/references/meeting/live-join-interface.md +244 -0
- package/references/meeting/section-mapping.md +192 -0
- package/references/meeting/segment-classification.md +258 -0
- package/references/meeting/speaker-profile-template.md +219 -0
- package/references/meeting/summary-template.md +348 -0
- package/references/meeting/transcript-patterns.md +226 -0
- package/references/methodology/analyze-needs.md +135 -0
- package/references/methodology/analyze-systems.md +121 -0
- package/references/methodology/analyze-timing.md +149 -0
- package/references/methodology/beautiful-question.md +109 -0
- package/references/methodology/build-knowledge.md +161 -0
- package/references/methodology/build-thesis-scored.md +60 -0
- package/references/methodology/build-thesis.md +237 -0
- package/references/methodology/causal-loop-diagrams.md +65 -0
- package/references/methodology/challenge-assumptions.md +127 -0
- package/references/methodology/diagnose.md +169 -0
- package/references/methodology/dominant-designs.md +212 -0
- package/references/methodology/explore-domains.md +147 -0
- package/references/methodology/explore-futures.md +163 -0
- package/references/methodology/explore-trends.md +129 -0
- package/references/methodology/find-bottlenecks.md +131 -0
- package/references/methodology/grade.md +211 -0
- package/references/methodology/huji-stage-a-intake.md +246 -0
- package/references/methodology/index.md +34 -0
- package/references/methodology/leadership.md +200 -0
- package/references/methodology/lean-canvas.md +116 -0
- package/references/methodology/leverage-scan-signatures.md +83 -0
- package/references/methodology/macro-trends.md +192 -0
- package/references/methodology/map-unknowns.md +137 -0
- package/references/methodology/mullins-7-domains.md +104 -0
- package/references/methodology/problem-types.md +65 -0
- package/references/methodology/root-cause.md +178 -0
- package/references/methodology/rubric-huji.md +160 -0
- package/references/methodology/sapphire-encoding.md +355 -0
- package/references/methodology/scenario-plan.md +190 -0
- package/references/methodology/score-innovation.md +154 -0
- package/references/methodology/skillopt-judge-rubric.md +48 -0
- package/references/methodology/skillopt-queries-rubric.md +60 -0
- package/references/methodology/skillopt-refute-rubric.md +59 -0
- package/references/methodology/skillopt-review-rubric.md +72 -0
- package/references/methodology/skillopt-revise-rubric.md +48 -0
- package/references/methodology/structure-argument.md +158 -0
- package/references/methodology/systems-thinking.md +231 -0
- package/references/methodology/think-hats.md +147 -0
- package/references/methodology/triz-matrix.json +751 -0
- package/references/methodology/triz-principles.md +501 -0
- package/references/methodology/user-needs.md +199 -0
- package/references/methodology/validate.md +163 -0
- package/references/methodology/value-proposition.md +244 -0
- package/references/opportunities/funding-lifecycle.md +103 -0
- package/references/opportunities/grant-api-patterns.md +99 -0
- package/references/opportunities/opportunity-template.md +84 -0
- package/references/opportunities/tnufa-rubric.md +81 -0
- package/references/personality/assessment-philosophy.md +72 -0
- package/references/personality/lexicon.md +100 -0
- package/references/personality/persona-chains.md +56 -0
- package/references/personality/pws-lexicon-full.md +499 -0
- package/references/personality/voice-dna.md +156 -0
- package/references/personas/hat-perspectives.md +76 -0
- package/references/personas/persona-template.md +63 -0
- package/references/pipeline/act-output-contract.md +88 -0
- package/references/pipeline/chains-index.md +39 -0
- package/references/pws-profile-generation.md +79 -0
- package/references/reasoning/reasoning-schema.md +143 -0
- package/references/reasoning/reasoning-template.md +68 -0
- package/references/reasoning/run-template.md +38 -0
- package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +209 -0
- package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +375 -0
- package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +575 -0
- package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +272 -0
- package/references/security/agentshield-baseline.json +8 -0
- package/references/security/cve-db.json +220 -0
- package/references/taxonomy/TAXONOMY.md +192 -0
- package/references/templates/MINTO.md +36 -0
- package/references/user-research/2026-04-05-leah-lawrence-session.md +202 -0
- package/references/vault-kit/README.md +35 -0
- package/references/vault-kit/app.json +12 -0
- package/references/vault-kit/appearance.json +12 -0
- package/references/vault-kit/graph.json +35 -0
- package/references/vault-kit/snippets/mindrian-destijl.css +297 -0
- package/references/vault-kit/templates/new-artifact.md +37 -0
- package/references/vault-kit/templates/new-meeting-note.md +35 -0
- package/references/vault-kit/templates/new-team-profile.md +29 -0
- package/references/vault-kit/templates/new-xref.md +35 -0
- package/references/visual/ROOM.md +55 -0
- package/references/visual/palette.json +54 -0
- package/references/visual/symbol-system.md +151 -0
- package/scripts/189-plurai-gate-check.cjs +88 -0
- package/scripts/198-plurai-gate-check.cjs +118 -0
- package/scripts/198-rollback-rehearsal.cjs +233 -0
- package/scripts/83-scope-injection.test.cjs +648 -0
- package/scripts/PYTHON_GATES.md +78 -0
- package/scripts/__pycache__/compute-hsi.cpython-312.pyc +0 -0
- package/scripts/__pycache__/detect-reverse-salients.cpython-312.pyc +0 -0
- package/scripts/__pycache__/rs-engine.cpython-312.pyc +0 -0
- package/scripts/act-command.cjs +518 -0
- package/scripts/admin-brain-write.cjs +442 -0
- package/scripts/admin-command-gate.cjs +178 -0
- package/scripts/agentshield-scan-cli.cjs +226 -0
- package/scripts/agentshield-sessionstart-scan.cjs +282 -0
- package/scripts/analogy-fitness-report.cjs +266 -0
- package/scripts/analyze-room +1079 -0
- package/scripts/apply-teaching-content.cjs +298 -0
- package/scripts/async-artifact-auto-commit.cjs +485 -0
- package/scripts/audit-active-phase-resolver.cjs +160 -0
- package/scripts/audit-body-shape-coverage.cjs +213 -0
- package/scripts/auto-explore-drain.cjs +274 -0
- package/scripts/auto-explore-fingerprint.cjs +354 -0
- package/scripts/auto-explore-fire.cjs +359 -0
- package/scripts/backfill-correlation-id.cjs +425 -0
- package/scripts/backfill-hitl-shape.cjs +276 -0
- package/scripts/backfill-hitl-shape.test.cjs +307 -0
- package/scripts/backup-modifications +68 -0
- package/scripts/banner +182 -0
- package/scripts/brain-derivation-drain.cjs +291 -0
- package/scripts/brain-derive-command.cjs +846 -0
- package/scripts/brain-normalize-books.cypher +505 -0
- package/scripts/brain-normalize-final.cypher +1355 -0
- package/scripts/brain-normalize-problemtype.cypher +475 -0
- package/scripts/brain-normalize-supplement.cypher +449 -0
- package/scripts/brain-normalize-targeted.cypher +344 -0
- package/scripts/brain-normalize-v194.cypher +61 -0
- package/scripts/brain-normalize.cypher +530 -0
- package/scripts/brain-response-sanitize-hook.cjs +165 -0
- package/scripts/build-brain-census.cjs +957 -0
- package/scripts/build-brain-packet-schema.cjs +225 -0
- package/scripts/build-command-registry.cjs +587 -0
- package/scripts/build-connector-registry.cjs +1331 -0
- package/scripts/build-corpus-stats.cjs +408 -0
- package/scripts/build-dist-bundles.cjs +495 -0
- package/scripts/build-ecosystem-graph.cjs +490 -0
- package/scripts/build-graph +1462 -0
- package/scripts/build-graph-from-sqlite.cjs +97 -0
- package/scripts/build-harness-manifest.cjs +1090 -0
- package/scripts/build-jtbd-nudges +205 -0
- package/scripts/build-new-surface.cjs +805 -0
- package/scripts/build-orchestration-projection.cjs +1221 -0
- package/scripts/build-render-coverage.cjs +637 -0
- package/scripts/build-skill-mirrors.cjs +681 -0
- package/scripts/cache-hitrate-report.cjs +216 -0
- package/scripts/causal-to-graph.cjs +163 -0
- package/scripts/check-abstraction-fixture-neutral.cjs +160 -0
- package/scripts/check-admin-identity.cjs +212 -0
- package/scripts/check-brain-tool-liveness.cjs +502 -0
- package/scripts/check-card-fire.cjs +1809 -0
- package/scripts/check-cirs-declaration.cjs +279 -0
- package/scripts/check-deck-design.cjs +104 -0
- package/scripts/check-dual-graph-health.cjs +645 -0
- package/scripts/check-first-touch-drift.cjs +220 -0
- package/scripts/check-flagship-floor.cjs +391 -0
- package/scripts/check-framework-vocabulary-drift.cjs +563 -0
- package/scripts/check-gate-seam.cjs +178 -0
- package/scripts/check-graph-derive-health.cjs +208 -0
- package/scripts/check-graph-export-typemap.cjs +118 -0
- package/scripts/check-help-coverage.cjs +290 -0
- package/scripts/check-hitl-stages.cjs +219 -0
- package/scripts/check-hook-schema-compatibility.cjs +231 -0
- package/scripts/check-hsi-deps +42 -0
- package/scripts/check-kuzu-reintroduction.cjs +251 -0
- package/scripts/check-onboard +43 -0
- package/scripts/check-onboard-statusline.cjs +363 -0
- package/scripts/check-palette-consistency.cjs +106 -0
- package/scripts/check-pending-ambiguous.cjs +244 -0
- package/scripts/check-pending-breakthrough.cjs +189 -0
- package/scripts/check-pending-breakthrough.test.cjs +166 -0
- package/scripts/check-pending-naming-decision.cjs +97 -0
- package/scripts/check-plugin-path-anchoring.cjs +830 -0
- package/scripts/check-publish-needs.cjs +126 -0
- package/scripts/check-registry-drift.cjs +206 -0
- package/scripts/check-release-payload-ceiling.cjs +269 -0
- package/scripts/check-render-coverage.cjs +558 -0
- package/scripts/check-research-isomorphism.cjs +446 -0
- package/scripts/check-reward-before-investment.cjs +261 -0
- package/scripts/check-room-blueprints.cjs +213 -0
- package/scripts/check-schema-aliases.cjs +532 -0
- package/scripts/check-shape-declaration.cjs +958 -0
- package/scripts/check-shape-declaration.test.cjs +185 -0
- package/scripts/check-skill-spec.cjs +312 -0
- package/scripts/check-skill-vs-code-drift.cjs +178 -0
- package/scripts/check-substrate.cjs +513 -0
- package/scripts/check-tool-honesty.cjs +1601 -0
- package/scripts/check-update +60 -0
- package/scripts/check-version-and-sha.cjs +366 -0
- package/scripts/check-voice-style.cjs +184 -0
- package/scripts/check-worktree-hygiene.cjs +530 -0
- package/scripts/classify-insight +59 -0
- package/scripts/coherence-smoke-test.cjs +489 -0
- package/scripts/collect-cold-install-evidence.cjs +411 -0
- package/scripts/compute-bayesian-surprise.py +175 -0
- package/scripts/compute-blindspot-mass.py +209 -0
- package/scripts/compute-disruption-index.py +211 -0
- package/scripts/compute-element-novelty.py +254 -0
- package/scripts/compute-external-whitespace.py +563 -0
- package/scripts/compute-hsi.py +947 -0
- package/scripts/compute-meetings-intelligence +716 -0
- package/scripts/compute-opportunity-state +17 -0
- package/scripts/compute-state +393 -0
- package/scripts/compute-team +1112 -0
- package/scripts/compute-whitespace-embeddings.py +464 -0
- package/scripts/compute-whitespace-gaps.py +562 -0
- package/scripts/compute_topic_forest.py +684 -0
- package/scripts/consolidate-pinecone.py +265 -0
- package/scripts/context-monitor +943 -0
- package/scripts/create-speaker-profile +311 -0
- package/scripts/cross-room-detect.cjs +195 -0
- package/scripts/csv-to-idea-graph.cjs +755 -0
- package/scripts/ctxl-eval.cjs +846 -0
- package/scripts/curation-132-03-dedup-held-rename.cjs +395 -0
- package/scripts/curation-132-05-pseudonymize.cjs +189 -0
- package/scripts/derive-verb-reach-affinity.cjs +507 -0
- package/scripts/detect-reverse-salients.py +242 -0
- package/scripts/diagnostics-command.cjs +345 -0
- package/scripts/dial-memory-refresh-command.cjs +147 -0
- package/scripts/discover-analogy-whitespace.py +433 -0
- package/scripts/discover-hsi-whitespace.py +352 -0
- package/scripts/discover-rs-whitespace.py +327 -0
- package/scripts/discovery-cycle.cjs +625 -0
- package/scripts/disposition-render-v2.cjs +229 -0
- package/scripts/doctor-preflight-format.cjs +101 -0
- package/scripts/doctor.cjs +4327 -0
- package/scripts/dogfood-bridge/append-to-queue.sh +59 -0
- package/scripts/dogfood-bridge/path-filter.cjs +86 -0
- package/scripts/dogfood-derive.cjs +158 -0
- package/scripts/dogfood-emit.cjs +126 -0
- package/scripts/empathy-observation-emit.cjs +108 -0
- package/scripts/enrichment-queue-append.cjs +157 -0
- package/scripts/ensure-brain-baseline.cjs +117 -0
- package/scripts/entity-extract.cjs +1135 -0
- package/scripts/eureka-command.cjs +687 -0
- package/scripts/eureka-critic-run.cjs +662 -0
- package/scripts/eureka-portfolio-report.cjs +2038 -0
- package/scripts/eureka-room-report.cjs +419 -0
- package/scripts/explain-decision-command.cjs +499 -0
- package/scripts/export-pinecone-embeddings.cjs +516 -0
- package/scripts/extract-room-intelligence.cjs +714 -0
- package/scripts/fetch-brain-baseline.cjs +190 -0
- package/scripts/fetch-brain-baseline.py +360 -0
- package/scripts/feynman-minto-guardian.cjs +672 -0
- package/scripts/feynman-timeline-refresh-command.cjs +270 -0
- package/scripts/file-asset +253 -0
- package/scripts/fire-sensor-event.cjs +83 -0
- package/scripts/first-install-router.cjs +968 -0
- package/scripts/frontmatter-schema-validator.cjs +339 -0
- package/scripts/fts-index-drain.cjs +221 -0
- package/scripts/generate-chat-embed.cjs +179 -0
- package/scripts/generate-deck.cjs +322 -0
- package/scripts/generate-export.cjs +474 -0
- package/scripts/generate-hub.cjs +2553 -0
- package/scripts/generate-lobby.cjs +718 -0
- package/scripts/generate-presentation.cjs +988 -0
- package/scripts/generate-presentation.test.cjs +405 -0
- package/scripts/generate-section-intelligence.cjs +330 -0
- package/scripts/generate-snapshot.cjs +1410 -0
- package/scripts/generate-standalone +159 -0
- package/scripts/git-ops +211 -0
- package/scripts/graph-heal-pipeline.cjs +321 -0
- package/scripts/gsd-artifact-graph-hook.cjs +219 -0
- package/scripts/gsd-graph-derive-drain.cjs +571 -0
- package/scripts/gsd-graph-derive-sweep.cjs +195 -0
- package/scripts/heal-command.cjs +1365 -0
- package/scripts/hedge-refit-pipeline.cjs +207 -0
- package/scripts/help-renderer.cjs +303 -0
- package/scripts/hmi-compliance-poll.cjs +451 -0
- package/scripts/hmi-status-command.cjs +510 -0
- package/scripts/hooked-rescore-117.cjs +224 -0
- package/scripts/hooks/pre-commit +533 -0
- package/scripts/hooks/pre-commit-room-minto-guard.cmd +43 -0
- package/scripts/hooks/pre-commit-room-minto-guard.sh +533 -0
- package/scripts/hsi-to-graph.cjs +194 -0
- package/scripts/huji-batch.cjs +821 -0
- package/scripts/huji-eval.cjs +1158 -0
- package/scripts/huji-intake.cjs +563 -0
- package/scripts/huji-pin-smoketest.cjs +454 -0
- package/scripts/huji-run-one-async.cjs +305 -0
- package/scripts/huji-run-one.cjs +671 -0
- package/scripts/install-pre-commit.sh +113 -0
- package/scripts/intent-classifier +106 -0
- package/scripts/intent-classifier.cjs +3620 -0
- package/scripts/interpret-whitespace.cjs +691 -0
- package/scripts/jtbd-command.cjs +810 -0
- package/scripts/jtbd-update.cjs +299 -0
- package/scripts/label-topic-forest.cjs +667 -0
- package/scripts/learn-from-usage +168 -0
- package/scripts/lib/__pycache__/ensure_ml_deps.cpython-312.pyc +0 -0
- package/scripts/lib/ensure_ml_deps.py +97 -0
- package/scripts/load-embeddings-into-neo4j.cjs +569 -0
- package/scripts/memory-artifact-graph-hook.cjs +191 -0
- package/scripts/memory-command.cjs +687 -0
- package/scripts/memory-completion-detector.cjs +217 -0
- package/scripts/memory-lifecycle.cjs +620 -0
- package/scripts/memory-resume-nudge.cjs +233 -0
- package/scripts/methodology-ingest-local.sh +36 -0
- package/scripts/migrate-brain-mcp-from-http-to-stdio.cjs +190 -0
- package/scripts/migrate-brain-mcp-from-http-to-stdio.test.cjs +242 -0
- package/scripts/migrate-hats-to-roomdb.cjs +217 -0
- package/scripts/migrate-lazygraph.cjs +250 -0
- package/scripts/migrate-minto-schema-v88.cjs +296 -0
- package/scripts/migrate-plugin-root-refs.cjs +168 -0
- package/scripts/migrate-room-sections-v275.cjs +556 -0
- package/scripts/migrate-rooms +417 -0
- package/scripts/migrate-skill-frontmatter.cjs +472 -0
- package/scripts/migrate-stale-user-settings.cjs +296 -0
- package/scripts/migrate-telemetry-v1.cjs +384 -0
- package/scripts/migrate-telemetry-v1.test.cjs +356 -0
- package/scripts/minto-debouncer.cjs +428 -0
- package/scripts/mos-status.cjs +622 -0
- package/scripts/mva-detect.cjs +229 -0
- package/scripts/mva-run.cjs +36 -0
- package/scripts/on-agent-complete +163 -0
- package/scripts/on-cwd-changed +149 -0
- package/scripts/on-file-changed +68 -0
- package/scripts/on-stop +617 -0
- package/scripts/on-task-complete +194 -0
- package/scripts/operator-command.cjs +858 -0
- package/scripts/operator-update.cjs +308 -0
- package/scripts/part8-egress-guard-hook.cjs +229 -0
- package/scripts/pipeline-command.cjs +271 -0
- package/scripts/post-compact +383 -0
- package/scripts/post-update-activation.cjs +339 -0
- package/scripts/post-write +283 -0
- package/scripts/power-demo-prompt.md +621 -0
- package/scripts/pre-compact +273 -0
- package/scripts/preflight-auto-explore.cjs +314 -0
- package/scripts/preflight-doctor.cjs +225 -0
- package/scripts/preflight-release-drift.cjs +168 -0
- package/scripts/preflight-tension-surface.cjs +414 -0
- package/scripts/probe-brain-contract.cjs +502 -0
- package/scripts/publish-ops +346 -0
- package/scripts/query-efficiency-telemetry.cjs +364 -0
- package/scripts/query-semantic-scholar.cjs +545 -0
- package/scripts/reapply-modifications +49 -0
- package/scripts/reassign-primary.cjs +125 -0
- package/scripts/recompile-room-references.cjs +601 -0
- package/scripts/release-beta-preflight.sh +69 -0
- package/scripts/render-pdf +588 -0
- package/scripts/render-viz +190 -0
- package/scripts/research-speaker +239 -0
- package/scripts/resolve-room +204 -0
- package/scripts/restore-post-compact-context.cjs +320 -0
- package/scripts/room-auto-create-nudge.cjs +136 -0
- package/scripts/room-naming-selector.cjs +201 -0
- package/scripts/room-registry +767 -0
- package/scripts/rs-discovery-engine.cjs +725 -0
- package/scripts/rs-engine.py +2073 -0
- package/scripts/rs-experts-command.cjs +300 -0
- package/scripts/rs-explain-command.cjs +323 -0
- package/scripts/rs-fetch-command.cjs +170 -0
- package/scripts/rs-thesis-command.cjs +203 -0
- package/scripts/rs-vector-bridge.cjs +410 -0
- package/scripts/run-harness.cjs +890 -0
- package/scripts/scout-cadence-guard.cjs +323 -0
- package/scripts/scout-cadence-runner.cjs +509 -0
- package/scripts/scout-telemetry-aggregator.cjs +268 -0
- package/scripts/sealed-walker.py +96 -0
- package/scripts/seed-brain-commands.cjs +324 -0
- package/scripts/self-update +105 -0
- package/scripts/sentinel-deadline-monitor +241 -0
- package/scripts/sentinel-health-check +198 -0
- package/scripts/sentinel-snapshot +42 -0
- package/scripts/serve-dashboard +103 -0
- package/scripts/serve-dashboard-live +932 -0
- package/scripts/serve-presentation +97 -0
- package/scripts/serve-wiki +90 -0
- package/scripts/session-end-presence.cjs +79 -0
- package/scripts/session-start +1943 -0
- package/scripts/sessionstart-coordinator.cjs +249 -0
- package/scripts/sessionstart-npm-reconcile.cjs +111 -0
- package/scripts/sessionstart-post-update-preflight.cjs +303 -0
- package/scripts/sessionstart-reference-now-seed.cjs +137 -0
- package/scripts/setup-hooks.sh +112 -0
- package/scripts/skillopt-codereview.cjs +830 -0
- package/scripts/skillopt-eval.cjs +519 -0
- package/scripts/skillopt-funnel.cjs +1076 -0
- package/scripts/skillopt-genqueries.cjs +571 -0
- package/scripts/skillopt-inventory.cjs +319 -0
- package/scripts/skillopt-merge.cjs +656 -0
- package/scripts/skillopt-triggerloop.cjs +1126 -0
- package/scripts/soft-alias-runner.cjs +116 -0
- package/scripts/stamp-artifact-write.cjs +276 -0
- package/scripts/stamp-firing-block.cjs +325 -0
- package/scripts/state-write.cjs +97 -0
- package/scripts/statusline-fallback-echo.cjs +297 -0
- package/scripts/statusline-mos +116 -0
- package/scripts/statusline-mos-dispatch +127 -0
- package/scripts/suggest-next-command.cjs +416 -0
- package/scripts/sweep-skill-descriptions.cjs +263 -0
- package/scripts/sync-rooms-graph +264 -0
- package/scripts/telemetry-command-invocation.cjs +120 -0
- package/scripts/test-doctor-recovery.cjs +242 -0
- package/scripts/test-fresh-install.md +140 -0
- package/scripts/track-analytics +156 -0
- package/scripts/transcribe-audio +148 -0
- package/scripts/transcript-ingest.cjs +225 -0
- package/scripts/update-icm-index +153 -0
- package/scripts/v182-brain-optimize.cypher +1191 -0
- package/scripts/validate-model-profiles +93 -0
- package/scripts/vault-content-reformatter.cjs +581 -0
- package/scripts/vault-export-orchestrator.cjs +400 -0
- package/scripts/vault-footer-injector.cjs +315 -0
- package/scripts/vault-import.cjs +839 -0
- package/scripts/vault-integration-test.cjs +318 -0
- package/scripts/vault-regenerate-all.cjs +216 -0
- package/scripts/vault-regenerate-all.test.cjs +138 -0
- package/scripts/vault-rules-generator.cjs +220 -0
- package/scripts/vault-section-minto-generator.cjs +1642 -0
- package/scripts/vault-section-minto-generator.integration.test.cjs +576 -0
- package/scripts/vault-section-minto-generator.test.cjs +291 -0
- package/scripts/vault-section-state-generator.cjs +385 -0
- package/scripts/vault-welcome-generator.cjs +403 -0
- package/scripts/vault-wikilink-injector.cjs +449 -0
- package/scripts/verify-phase-132.cjs +338 -0
- package/scripts/verify-release +744 -0
- package/scripts/whitespace-command.cjs +831 -0
- package/scripts/whitespace-to-brain.cjs +384 -0
- package/scripts/whitespace-to-graph.cjs +220 -0
- package/scripts/wikilink-batch.cjs +102 -0
- package/scripts/wikilink-file.cjs +139 -0
- package/scripts/write-bridge-artifacts.cjs +140 -0
- package/scripts/write-scope-check +12 -0
- package/scripts/write-scope-check.cjs +461 -0
- package/scripts/write-whitespace-sections.cjs +483 -0
- package/settings.json +7 -0
- package/skills/act/SKILL.md +523 -0
- package/skills/admin/SKILL.md +437 -0
- package/skills/agentshield/SKILL.md +50 -0
- package/skills/analyze-needs/SKILL.md +74 -0
- package/skills/analyze-systems/SKILL.md +69 -0
- package/skills/analyze-timing/SKILL.md +94 -0
- package/skills/auto-explore/SKILL.md +84 -0
- package/skills/beautiful-question/SKILL.md +72 -0
- package/skills/bono/SKILL.md +146 -0
- package/skills/brain-connector/SKILL.md +206 -0
- package/skills/brain-derive/SKILL.md +140 -0
- package/skills/build-knowledge/SKILL.md +118 -0
- package/skills/build-thesis/SKILL.md +90 -0
- package/skills/causal/SKILL.md +265 -0
- package/skills/challenge-assumptions/SKILL.md +74 -0
- package/skills/client-discovery-interview/SKILL.md +94 -0
- package/skills/client-discovery-interview/discovery-scaffold.json +41 -0
- package/skills/client-discovery-interview/question-bank.md +149 -0
- package/skills/compare-ventures/SKILL.md +113 -0
- package/skills/context-engine/SKILL.md +169 -0
- package/skills/conversation-mode/SKILL.md +189 -0
- package/skills/correct-reference-now/SKILL.md +86 -0
- package/skills/dashboard/SKILL.md +142 -0
- package/skills/deck/SKILL.md +113 -0
- package/skills/deep-grade/SKILL.md +210 -0
- package/skills/diagnose/SKILL.md +128 -0
- package/skills/diagnostics/SKILL.md +193 -0
- package/skills/dial-memory-refresh/SKILL.md +116 -0
- package/skills/diffusion/SKILL.md +125 -0
- package/skills/discover/SKILL.md +216 -0
- package/skills/doctor/SKILL.md +269 -0
- package/skills/dogfood-flush/SKILL.md +133 -0
- package/skills/dominant-designs/SKILL.md +72 -0
- package/skills/eureka/SKILL.md +313 -0
- package/skills/explain-decision/SKILL.md +138 -0
- package/skills/explore-domains/SKILL.md +74 -0
- package/skills/explore-futures/SKILL.md +64 -0
- package/skills/explore-opportunity/SKILL.md +168 -0
- package/skills/explore-trends/SKILL.md +74 -0
- package/skills/export/SKILL.md +126 -0
- package/skills/feynman-timeline-refresh/SKILL.md +105 -0
- package/skills/file-meeting/SKILL.md +1190 -0
- package/skills/find-analogies/SKILL.md +360 -0
- package/skills/find-bottlenecks/SKILL.md +104 -0
- package/skills/find-connections/SKILL.md +108 -0
- package/skills/funding/SKILL.md +110 -0
- package/skills/futures/SKILL.md +124 -0
- package/skills/grade/SKILL.md +252 -0
- package/skills/grade-grant/SKILL.md +293 -0
- package/skills/graph/SKILL.md +216 -0
- package/skills/hat-briefing/SKILL.md +160 -0
- package/skills/heal/SKILL.md +69 -0
- package/skills/help/SKILL.md +172 -0
- package/skills/hmi-status/SKILL.md +73 -0
- package/skills/ignite/SKILL.md +225 -0
- package/skills/ingest-methodology/SKILL.md +125 -0
- package/skills/intel-pipeline/SKILL.md +128 -0
- package/skills/intelligence-orchestrator/SKILL.md +262 -0
- package/skills/jtbd/SKILL.md +261 -0
- package/skills/larry-personality/SKILL.md +571 -0
- package/skills/larry-personality/framework-chains.md +92 -0
- package/skills/larry-personality/mode-engine.md +185 -0
- package/skills/leadership/SKILL.md +109 -0
- package/skills/lean-canvas/SKILL.md +70 -0
- package/skills/macro-trends/SKILL.md +84 -0
- package/skills/map-unknowns/SKILL.md +72 -0
- package/skills/memory/SKILL.md +212 -0
- package/skills/memory-cortex-reach/SKILL.md +80 -0
- package/skills/models/SKILL.md +197 -0
- package/skills/mos/SKILL.md +160 -0
- package/skills/mos-deck-engine/SKILL.md +329 -0
- package/skills/mos-reason/SKILL.md +484 -0
- package/skills/mullins/SKILL.md +151 -0
- package/skills/mullins-scaffold/SKILL.md +132 -0
- package/skills/mullins-scaffold/scaffold.json +223 -0
- package/skills/mva-brief/SKILL.md +87 -0
- package/skills/mva-option/SKILL.md +120 -0
- package/skills/mva-pipeline/SKILL.md +158 -0
- package/skills/mva-report/SKILL.md +79 -0
- package/skills/new-project/SKILL.md +629 -0
- package/skills/new-surface/SKILL.md +112 -0
- package/skills/onboard/SKILL.md +485 -0
- package/skills/operator/SKILL.md +167 -0
- package/skills/opportunities/SKILL.md +171 -0
- package/skills/organize/SKILL.md +69 -0
- package/skills/persona/SKILL.md +272 -0
- package/skills/pipeline/SKILL.md +164 -0
- package/skills/present/SKILL.md +123 -0
- package/skills/publish/SKILL.md +224 -0
- package/skills/pws-brain/SKILL.md +152 -0
- package/skills/pws-methodology/SKILL.md +92 -0
- package/skills/qualify-opportunity/SKILL.md +111 -0
- package/skills/query/SKILL.md +68 -0
- package/skills/radar/SKILL.md +106 -0
- package/skills/reanalyze/SKILL.md +122 -0
- package/skills/research/SKILL.md +462 -0
- package/skills/room/SKILL.md +381 -0
- package/skills/room-passive/SKILL.md +174 -0
- package/skills/room-proactive/SKILL.md +344 -0
- package/skills/rooms/SKILL.md +678 -0
- package/skills/root-cause/SKILL.md +73 -0
- package/skills/rs-experts/SKILL.md +151 -0
- package/skills/rs-explain/SKILL.md +130 -0
- package/skills/rs-fetch/SKILL.md +115 -0
- package/skills/rs-thesis/SKILL.md +129 -0
- package/skills/scenario-plan/SKILL.md +76 -0
- package/skills/scheduled-tasks/SKILL.md +301 -0
- package/skills/score-innovation/SKILL.md +74 -0
- package/skills/scout/SKILL.md +370 -0
- package/skills/setup/SKILL.md +654 -0
- package/skills/show/SKILL.md +68 -0
- package/skills/skill/SKILL.md +104 -0
- package/skills/snapshot/SKILL.md +178 -0
- package/skills/speakers/SKILL.md +116 -0
- package/skills/splash/SKILL.md +54 -0
- package/skills/stance/SKILL.md +89 -0
- package/skills/status/SKILL.md +107 -0
- package/skills/structure-argument/SKILL.md +78 -0
- package/skills/suggest-next/SKILL.md +137 -0
- package/skills/systems-thinking/SKILL.md +220 -0
- package/skills/think-hats/SKILL.md +82 -0
- package/skills/trending-to-absurd/SKILL.md +100 -0
- package/skills/ui-system/SKILL.md +474 -0
- package/skills/ui-system/design-system/M-OS-DESIGN-SYSTEM.md +273 -0
- package/skills/ui-system/design-system/SPEC.md +72 -0
- package/skills/ui-system/design-system/image-prompt-style.md +29 -0
- package/skills/ui-system/design-system/mos-design-system.css +240 -0
- package/skills/ui-system/rules/design-system.md +60 -0
- package/skills/ui-system/rules/dual-palette.md +156 -0
- package/skills/ui-system/rules/glyph-disambiguation.md +171 -0
- package/skills/ui-system/rules/shape-f-zero-and-six.md +169 -0
- package/skills/update/SKILL.md +254 -0
- package/skills/user-needs/SKILL.md +73 -0
- package/skills/validate/SKILL.md +73 -0
- package/skills/value-proposition/SKILL.md +141 -0
- package/skills/vault/SKILL.md +326 -0
- package/skills/visualize/SKILL.md +69 -0
- package/skills/whitespace/SKILL.md +539 -0
- package/skills/wiki/SKILL.md +94 -0
- package/templates/_base.html +20 -0
- package/templates/chat-panel.html +205 -0
- package/templates/constellation-chat-hooks.js +89 -0
- package/templates/constellation.html +1272 -0
- package/templates/destijl-base.css +268 -0
- package/templates/discovery/discovery-brief-template.md +97 -0
- package/templates/due-diligence.html +49 -0
- package/templates/executive-summary.html +40 -0
- package/templates/icm/CLAUDE.md +31 -0
- package/templates/icm/GROUP-CLAUDE.md +33 -0
- package/templates/icm/INDEX.md +26 -0
- package/templates/import/stage-contracts/01-ingest.md +34 -0
- package/templates/import/stage-contracts/02-classify.md +48 -0
- package/templates/import/stage-contracts/03-route.md +42 -0
- package/templates/import/stage-contracts/04-enrich.md +40 -0
- package/templates/investment-thesis.html +25 -0
- package/templates/meeting-report.html +361 -0
- package/templates/presentation/dashboard.html +1150 -0
- package/templates/presentation/deck.html +540 -0
- package/templates/presentation/diagrams.html +437 -0
- package/templates/presentation/graph.html +391 -0
- package/templates/presentation/insights.html +548 -0
- package/templates/presentation/wiki.html +533 -0
- package/templates/profile.html +136 -0
- package/templates/room-context/last-session.md +56 -0
- package/templates/room-context/methodology-history.md +28 -0
- package/templates/room-context/rejection-log.md +25 -0
- package/templates/room-context/weekly-digest.md +54 -0
- package/templates/room-skeleton/MINTO.md.tmpl +19 -0
- package/templates/room-skeleton/ROOM.md.identity.tmpl +13 -0
- package/templates/room-skeleton/ROOM.md.section.tmpl +33 -0
- package/templates/room-skeleton/STATE.md.tmpl +33 -0
- package/templates/room-skeleton/USER.md.tmpl +23 -0
- package/templates/room-skeleton/references/.gitkeep +0 -0
- package/templates/room-skeleton/references/SECTION-SCHEMA.md +213 -0
- package/templates/room-skeleton/references/SUB-SCHEMAS.md +91 -0
- package/templates/room-skeleton/section-contracts/.gitkeep +0 -0
- package/templates/room-skeleton/section-contracts/business-model.md +32 -0
- package/templates/room-skeleton/section-contracts/competitive-analysis.md +33 -0
- package/templates/room-skeleton/section-contracts/financial-model.md +30 -0
- package/templates/room-skeleton/section-contracts/funding.md +41 -0
- package/templates/room-skeleton/section-contracts/legal-ip.md +30 -0
- package/templates/room-skeleton/section-contracts/market-analysis.md +32 -0
- package/templates/room-skeleton/section-contracts/opportunity-bank.md +39 -0
- package/templates/room-skeleton/section-contracts/problem-definition.md +32 -0
- package/templates/room-skeleton/section-contracts/solution-design.md +36 -0
- package/templates/room-skeleton/section-contracts/strategy.md +35 -0
- package/templates/room-skeleton/section-contracts/team-execution.md +36 -0
- package/templates/shared.css +427 -0
- package/templates/showcase/blueprint.html +432 -0
- package/templates/showcase/library.html +571 -0
- package/templates/showcase/narrative.html +361 -0
- package/templates/showcase/overview.html +468 -0
- package/templates/showcase/synthesis.html +473 -0
- package/templates/signature-footer.html +34 -0
|
@@ -0,0 +1,809 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2026 Mindrian. BSL 1.1.
|
|
4
|
+
*
|
|
5
|
+
* Phase 222-02 -- the ONE shared scored-selection layer (D-01, D-03, Req 3/7).
|
|
6
|
+
* ============================================================================
|
|
7
|
+
* This module is the single selection brain both call sites adopt in Plan 03:
|
|
8
|
+
* rankFiredCandidates(sensorReaches, roomState) re-orders dispatchSensors'
|
|
9
|
+
* already-fired subset (the SAME objects, resorted) so every downstream [0] read
|
|
10
|
+
* transparently sees the scored winner. It layers a hand-rolled two-expert
|
|
11
|
+
* Hedge/MWU adjustment (Arora-Hazan-Kale 2012) learned from the Phase 159 outcome
|
|
12
|
+
* log, debounced per D-03 (env-tunable N, default 50), and degrades visibly per
|
|
13
|
+
* Req 7 (a failed weight-state read falls back to the D4-alone blend AND emits
|
|
14
|
+
* reach_weight_state_unavailable, while a cold zero-row state stays silent).
|
|
15
|
+
*
|
|
16
|
+
* THREE non-negotiable invariants (mirror reach-reject-reader.cjs):
|
|
17
|
+
* 1. Chokepoint-only db access. The sole SQL surface is the navigation.cjs
|
|
18
|
+
* chokepoint (readHedgeWeightState / upsertHedgeWeightState /
|
|
19
|
+
* findRecentChanges / logMemoryEvent). This module never opens a db, never
|
|
20
|
+
* requires a raw sqlite driver, never reads room files (Canon Part 9).
|
|
21
|
+
* 2. Enum/scalar-only reads and writes. Outcome rows contribute only their
|
|
22
|
+
* decision + reach_id enums; the degrade event payload is enum tokens only
|
|
23
|
+
* (fault_kind, source), never prose, never a field named reason (Part 8).
|
|
24
|
+
* 3. Injection seam for db-free tests. roomState.hedgeWeights (and the Phase 158
|
|
25
|
+
* reject-history seam reach-reject-reader honors) let the ranker run without
|
|
26
|
+
* a db handle, mirroring the _injected discipline of the Phase 158 reader.
|
|
27
|
+
*
|
|
28
|
+
* NO Brain call. Room-local only. NO em-dashes anywhere (CLAUDE.md HARD RULE). CJS.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
const navigation = require('../core/navigation.cjs');
|
|
32
|
+
const cortexReachAdapter = require('../hmi/cortex-reach-adapter.cjs');
|
|
33
|
+
const reachRejectReader = require('./reach-reject-reader.cjs');
|
|
34
|
+
// Phase 245-07 (D-20, Requirement 4): the doctrine tie-break key. Invariant 1
|
|
35
|
+
// above (chokepoint-only db access) is respected by construction -- this module
|
|
36
|
+
// is a frozen in-repo literal plus an array index lookup, with zero I/O, zero
|
|
37
|
+
// network and zero user bytes. See its file header for the three placement
|
|
38
|
+
// rules that decide the ordering.
|
|
39
|
+
const sensorPriority = require('../core/sensors/sensor-priority.cjs');
|
|
40
|
+
|
|
41
|
+
// ===========================================================================
|
|
42
|
+
// Constants (each ALL-CAPS tunable carries the low-data TUNABLE-LATER rationale
|
|
43
|
+
// discipline of reach-reject-reader.cjs:93-98).
|
|
44
|
+
// ===========================================================================
|
|
45
|
+
|
|
46
|
+
// The two experts this phase's Hedge blend weighs: the D4 blend score and the
|
|
47
|
+
// raw registry-order signal. Kept GENERAL over an expert-id-keyed object (never
|
|
48
|
+
// hardcoded two fields) so a future fourth expert class (SEED-057) needs a KEY,
|
|
49
|
+
// not a re-architecture.
|
|
50
|
+
const EXPERT_IDS = Object.freeze(['d4_blend', 'registry_order']);
|
|
51
|
+
|
|
52
|
+
// The six frozen machine reaches (mirror reach-reject-reader.cjs:41-48 and the
|
|
53
|
+
// cortex-reach-adapter REACH_DEFS). A flat local const so this module never
|
|
54
|
+
// imports the orchestrator and the two stay decoupled.
|
|
55
|
+
const REACH_IDS = Object.freeze([
|
|
56
|
+
'context_block',
|
|
57
|
+
'contradiction',
|
|
58
|
+
'cross_room',
|
|
59
|
+
'brain_consult',
|
|
60
|
+
'deep_research',
|
|
61
|
+
'hats',
|
|
62
|
+
]);
|
|
63
|
+
|
|
64
|
+
// N (HEDGE_UPDATE_N_DEFAULT = 50) -- the D-03 debounce bound: the Hedge weights
|
|
65
|
+
// refit at most once per N qualifying outcome rows, never per-event, to avoid a
|
|
66
|
+
// single noisy outcome thrashing the weights. 50 is SEED-009's own precedent
|
|
67
|
+
// number (not a freshly-invented one), matching Phase 158's debounce discipline.
|
|
68
|
+
// Env override MINDRIAN_HEDGE_UPDATE_N, read defensively with a numeric fallback.
|
|
69
|
+
// TUNABLE-LATER from telemetry once the outcome-edge corpus grows.
|
|
70
|
+
const HEDGE_UPDATE_N_DEFAULT = 50;
|
|
71
|
+
|
|
72
|
+
// eta (HEDGE_ETA_DEFAULT = 0.3) -- the Hedge learning rate. It bounds a single
|
|
73
|
+
// fold's multiplicative swing to exp(0.3) ~ 1.35, conservative for a 2-expert
|
|
74
|
+
// Hedge (Arora-Hazan-Kale 2012). The horizon-optimal eta is T-dependent and is
|
|
75
|
+
// deliberately NOT computed at this data scale (an overfit at < 100 edges).
|
|
76
|
+
// Env override MINDRIAN_HEDGE_ETA. TUNABLE-LATER.
|
|
77
|
+
const HEDGE_ETA_DEFAULT = 0.3;
|
|
78
|
+
|
|
79
|
+
// ===========================================================================
|
|
80
|
+
// Phase 245-07 Task 2 -- the buildSignalNudges fusion constants (Requirement 1,
|
|
81
|
+
// D-01 as corrected by F-1, D-05, D-24, D-25, and the navigator-resolved Open
|
|
82
|
+
// Question A3). Each carries the same TUNABLE-LATER rationale discipline as the
|
|
83
|
+
// Hedge tunables above.
|
|
84
|
+
// ===========================================================================
|
|
85
|
+
|
|
86
|
+
// FUSION_CEILING (0.69) -- the asymptote every fused score approaches and never
|
|
87
|
+
// reaches. This constant IS D-05's demanded explicit bound, and it is the
|
|
88
|
+
// navigator-resolved Open Question A3 made STRUCTURAL rather than advisory:
|
|
89
|
+
// A3 was resolved in favor of bounding the nudge below the frozen RECOMMENDED
|
|
90
|
+
// floor rather than accepting a crossing, so the fusion changes WHICH reach
|
|
91
|
+
// ranks first and never promotes a reach to RECOMMENDED on its own. 0.69 is
|
|
92
|
+
// deliberately STRICTLY below dial-reach-orchestrator.cjs's frozen
|
|
93
|
+
// RECOMMEND_FLOOR of 0.70 (that module is NOT imported here; this module's
|
|
94
|
+
// decoupling from the orchestrator, file header line 47, holds). Because the
|
|
95
|
+
// fusion is an interpolation TOWARD this ceiling rather than an addition, the
|
|
96
|
+
// cortex-reach-adapter CONTRIBUTIONS table's house invariant -- "a single signal
|
|
97
|
+
// escalates the one-move but never solo-crosses the marker floor" -- survives
|
|
98
|
+
// unchanged. Exported so tests and 245-08 can assert against it rather than
|
|
99
|
+
// against a hand-typed 0.69. TUNABLE-LATER only in lockstep with the frozen
|
|
100
|
+
// gate: raising it to or above RECOMMEND_FLOOR is a Canon Part 3 change, not a
|
|
101
|
+
// tuning decision.
|
|
102
|
+
const FUSION_CEILING = 0.69;
|
|
103
|
+
|
|
104
|
+
// DEFAULT_FUSION_BASE (0.5) -- the base used for a reach_id ABSENT from the
|
|
105
|
+
// supplied score map. It is the SAME flat 0.5 registry floor d4For already uses
|
|
106
|
+
// in this module, so no orchestrator import is needed.
|
|
107
|
+
// WHY THIS MATTERS, concretely: dial-reach-orchestrator's _resolveReachScore
|
|
108
|
+
// gives an ABSENT non-registry-only reach a base of 0 and gives the
|
|
109
|
+
// registry_only cross_room reach 0.5. Nudging up from 0 could not out-rank
|
|
110
|
+
// cross_room's 0.5 default (0 + 0.60 * 0.69 = 0.414 < 0.5), so the dial would
|
|
111
|
+
// never reorder and Requirement 1 would ship a fusion that moves nothing.
|
|
112
|
+
// Starting from the same 0.5 floor puts an absent-but-fired reach at 0.614,
|
|
113
|
+
// which does out-rank it.
|
|
114
|
+
const DEFAULT_FUSION_BASE = 0.5;
|
|
115
|
+
|
|
116
|
+
// SENSOR_TOP_FRACTION (0.60) -- the HEADROOM fraction granted to the reach_id of
|
|
117
|
+
// the TOP-ranked fired reach, i.e. index 0 of the array rankFiredCandidates
|
|
118
|
+
// returned, so Task 1's SENS_PRIORITY tie-break feeds this term directly. It is
|
|
119
|
+
// a fraction of the remaining distance to FUSION_CEILING, never an additive
|
|
120
|
+
// score, which is what makes the bound structural. Env override
|
|
121
|
+
// MINDRIAN_SENSOR_TOP_FRACTION. TUNABLE-LATER from dial-outcome telemetry.
|
|
122
|
+
const SENSOR_TOP_FRACTION = 0.60;
|
|
123
|
+
|
|
124
|
+
// SENSOR_OTHER_FRACTION (0.25) -- the headroom fraction granted to every OTHER
|
|
125
|
+
// DISTINCT fired reach_id. Under half the top fraction on purpose: a co-fired
|
|
126
|
+
// reach is evidence, but the ranked winner is the one the shared selection layer
|
|
127
|
+
// actually chose. Deliberately NOT env-overridable: the two tunables the plan
|
|
128
|
+
// exposes are the ones that set the CLASS of the sensor and Brain terms, and a
|
|
129
|
+
// third knob whose only job is to sit between them invites an inverted
|
|
130
|
+
// configuration (other > top) with no legitimate use.
|
|
131
|
+
const SENSOR_OTHER_FRACTION = 0.25;
|
|
132
|
+
|
|
133
|
+
// BRAIN_VERB_FRACTION (0.35) -- the headroom fraction granted to the reach_ids
|
|
134
|
+
// that verbReachAffinity(brainVerb) names, MULTIPLIED by that entry's per-reach
|
|
135
|
+
// weight. The multiply is load-bearing, not decoration: 'Run Methodology' (the
|
|
136
|
+
// most common verb in the vocabulary) returns a TWO-entry 0.5/0.5 split across
|
|
137
|
+
// context_block and brain_consult, so an ambiguous verb splits its fraction
|
|
138
|
+
// instead of double-counting it onto both reaches at full strength (245-04
|
|
139
|
+
// carry-forward 2). Sits below SENSOR_TOP_FRACTION because a fired sensor is a
|
|
140
|
+
// this-turn observation while the Brain verb is a session-derived suggestion.
|
|
141
|
+
// Env override MINDRIAN_BRAIN_VERB_FRACTION. TUNABLE-LATER.
|
|
142
|
+
const BRAIN_VERB_FRACTION = 0.35;
|
|
143
|
+
|
|
144
|
+
// NUDGE_FRACTION_CAP (0.95) -- the cap on the SUMMED fraction for any single
|
|
145
|
+
// reach, so the maximum-stacked case (top sensor 0.60 plus a full-weight Brain
|
|
146
|
+
// verb 0.35 on the same reach = 0.95) still leaves headroom below the ceiling.
|
|
147
|
+
// Because the cap is strictly < 1, base + fraction * (CEILING - base) is
|
|
148
|
+
// STRICTLY below CEILING for every finite base, which is what makes the A3 bound
|
|
149
|
+
// a structural property of the formula rather than a clamp that would let a
|
|
150
|
+
// large enough input land exactly ON the ceiling and tie there.
|
|
151
|
+
const NUDGE_FRACTION_CAP = 0.95;
|
|
152
|
+
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
// Small pure helpers.
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
|
|
157
|
+
function clamp01(x) {
|
|
158
|
+
if (x < 0) return 0;
|
|
159
|
+
if (x > 1) return 1;
|
|
160
|
+
return x;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function equalWeights(keys) {
|
|
164
|
+
const list = (Array.isArray(keys) && keys.length > 0) ? keys : EXPERT_IDS;
|
|
165
|
+
const share = 1 / list.length;
|
|
166
|
+
const out = {};
|
|
167
|
+
for (const k of list) out[k] = share;
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// canonicalRegistryRank(reachId) -- WR-01: the ONE definition of "registry
|
|
172
|
+
// order" both deriveExpertLosses (training, below) and rankFiredCandidates
|
|
173
|
+
// (the live blend) use, so the Hedge layer never learns a weight for a feature
|
|
174
|
+
// it is not actually applying. Returns the reach's FIXED position in the
|
|
175
|
+
// canonical REACH_IDS list (0-indexed) -- NOT its turn-relative position among
|
|
176
|
+
// whatever else happened to co-fire this turn. The turn-relative definition
|
|
177
|
+
// cannot be reconstructed at training time: historical f_selector_decision
|
|
178
|
+
// rows persist only reach_id + decision, never the full fired-subset context
|
|
179
|
+
// a past turn saw (a real, documented gap), so unifying on the canonical,
|
|
180
|
+
// always-computable definition is the fix that requires no new persisted data.
|
|
181
|
+
// An off-registry reach_id (should never happen for a live fired candidate;
|
|
182
|
+
// the training side already skips such rows via its own rank === -1 check
|
|
183
|
+
// below) falls to REACH_IDS.length, the worst possible rank, rather than
|
|
184
|
+
// Infinity/NaN.
|
|
185
|
+
function canonicalRegistryRank(reachId) {
|
|
186
|
+
const idx = REACH_IDS.indexOf(reachId);
|
|
187
|
+
return idx === -1 ? REACH_IDS.length : idx;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// d4For(reachId, reachScores) -- the reach's D4 score: the supplied finite prior
|
|
191
|
+
// clamped to 0..1, else the 0.5 registry floor (mirrors _resolveReachScore /
|
|
192
|
+
// Pattern 2; the flat floor is exactly the MCP-call condition where no cortex
|
|
193
|
+
// node was threaded in, so the outcome-learned layer is the sole differentiator).
|
|
194
|
+
function d4For(reachId, reachScores) {
|
|
195
|
+
const supplied = (reachScores && typeof reachScores === 'object') ? reachScores[reachId] : undefined;
|
|
196
|
+
if (typeof supplied === 'number' && Number.isFinite(supplied)) return clamp01(supplied);
|
|
197
|
+
return 0.5;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function updateN(options) {
|
|
201
|
+
const opt = (options && Number.isInteger(options.updateN) && options.updateN > 0) ? options.updateN : null;
|
|
202
|
+
if (opt !== null) return opt;
|
|
203
|
+
const env = Number(process.env.MINDRIAN_HEDGE_UPDATE_N);
|
|
204
|
+
return (Number.isInteger(env) && env > 0) ? env : HEDGE_UPDATE_N_DEFAULT;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function updateEta(options) {
|
|
208
|
+
const opt = (options && typeof options.eta === 'number' && Number.isFinite(options.eta) && options.eta > 0)
|
|
209
|
+
? options.eta : null;
|
|
210
|
+
if (opt !== null) return opt;
|
|
211
|
+
const env = Number(process.env.MINDRIAN_HEDGE_ETA);
|
|
212
|
+
return (Number.isFinite(env) && env > 0) ? env : HEDGE_ETA_DEFAULT;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// fractionFromEnv(name, fallback) -- the Phase 245-07 fusion tunables' reader,
|
|
216
|
+
// the same defensive numeric-fallback shape as updateN / updateEta above, and
|
|
217
|
+
// read at CALL time rather than at module load so an operator setting the var
|
|
218
|
+
// does not have to restart a long-lived process (and so the env-safety arm of
|
|
219
|
+
// tests/test-245-nudge-bound.cjs can actually exercise it). Anything unset,
|
|
220
|
+
// empty, non-numeric, non-finite, non-positive, or greater than 1 silently falls
|
|
221
|
+
// back: a fraction outside (0, 1] is meaningless here, because the fusion
|
|
222
|
+
// interpolates a FRACTION of the headroom to FUSION_CEILING, and a value above 1
|
|
223
|
+
// would overshoot the ceiling the bound exists to protect.
|
|
224
|
+
function fractionFromEnv(name, fallback) {
|
|
225
|
+
const raw = process.env[name];
|
|
226
|
+
if (raw === undefined || raw === null || String(raw).trim() === '') return fallback;
|
|
227
|
+
const n = Number(String(raw).trim());
|
|
228
|
+
if (Number.isFinite(n) && n > 0 && n <= 1) return n;
|
|
229
|
+
return fallback;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
// hedgeUpdate(weights, losses, eta) -> renormalized weights
|
|
234
|
+
//
|
|
235
|
+
// The Arora-Hazan-Kale (2012) MWU step, GENERAL over expert-id-keyed objects
|
|
236
|
+
// (never hardcoded two fields). For each key: w = w * exp(-eta * loss); then
|
|
237
|
+
// renormalize to sum 1. A zero or non-finite sum returns equal weights over the
|
|
238
|
+
// keys (the guard against a degenerate fold). Pure.
|
|
239
|
+
// ---------------------------------------------------------------------------
|
|
240
|
+
function hedgeUpdate(weights, losses, eta) {
|
|
241
|
+
const w = (weights && typeof weights === 'object') ? weights : {};
|
|
242
|
+
const l = (losses && typeof losses === 'object') ? losses : {};
|
|
243
|
+
const keys = Object.keys(w);
|
|
244
|
+
if (keys.length === 0) return equalWeights(EXPERT_IDS);
|
|
245
|
+
const rate = (typeof eta === 'number' && Number.isFinite(eta)) ? eta : HEDGE_ETA_DEFAULT;
|
|
246
|
+
const updated = {};
|
|
247
|
+
let sum = 0;
|
|
248
|
+
for (const k of keys) {
|
|
249
|
+
const prior = Number(w[k]);
|
|
250
|
+
const lossRaw = Number(l[k]);
|
|
251
|
+
const loss = Number.isFinite(lossRaw) ? lossRaw : 0;
|
|
252
|
+
const next = (Number.isFinite(prior) ? prior : 0) * Math.exp(-rate * loss);
|
|
253
|
+
updated[k] = next;
|
|
254
|
+
sum += next;
|
|
255
|
+
}
|
|
256
|
+
if (!(sum > 0) || !Number.isFinite(sum)) return equalWeights(keys);
|
|
257
|
+
const out = {};
|
|
258
|
+
for (const k of keys) out[k] = updated[k] / sum;
|
|
259
|
+
return out;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// ---------------------------------------------------------------------------
|
|
263
|
+
// deriveExpertLosses(row, opts) -> { d4_blend: loss, registry_order: loss } | null
|
|
264
|
+
//
|
|
265
|
+
// Maps one f_selector_decision row to a per-expert loss vector per SPEC Req 3's
|
|
266
|
+
// convention (accept = low loss, reject = high loss for the ENDORSING expert),
|
|
267
|
+
// made computable from stored row data:
|
|
268
|
+
// endorsement_registry = 1 / (rank + 1) (A2: the registry expert endorses
|
|
269
|
+
// front-of-registry reaches most). rank is canonicalRegistryRank(reachId)
|
|
270
|
+
// (WR-01: the IDENTICAL registry-order definition rankFiredCandidates'
|
|
271
|
+
// live blend uses below -- both read the reach's fixed canonical REACH_IDS
|
|
272
|
+
// position, never a turn-relative index over some other fired subset).
|
|
273
|
+
// endorsement_d4 = d4For(reach_id, opts.reachScores) when supplied, else
|
|
274
|
+
// 0.5 (historical reachScores are not persisted -- documented limitation,
|
|
275
|
+
// TUNABLE-LATER).
|
|
276
|
+
// loss = (decision === 'reject') ? endorsement : (1 - endorsement).
|
|
277
|
+
// Rows with decision 'defer', a missing/off-set reach_id, or no decision are
|
|
278
|
+
// SKIPPED (return null) so the caller drops them. Reads the row's enums whether
|
|
279
|
+
// they sit at the top level (unit fixtures) or under .properties (real
|
|
280
|
+
// findRecentChanges rows).
|
|
281
|
+
// ---------------------------------------------------------------------------
|
|
282
|
+
function deriveExpertLosses(row, opts) {
|
|
283
|
+
if (!row || typeof row !== 'object') return null;
|
|
284
|
+
const props = (row.properties && typeof row.properties === 'object') ? row.properties : row;
|
|
285
|
+
const decision = props.decision;
|
|
286
|
+
if (decision !== 'accept' && decision !== 'reject') return null; // defer / none -> skip
|
|
287
|
+
const reachId = props.reach_id;
|
|
288
|
+
if (typeof reachId !== 'string' || reachId.length === 0) return null; // missing -> skip
|
|
289
|
+
const rank = REACH_IDS.indexOf(reachId);
|
|
290
|
+
if (rank === -1) return null; // off-set reach_id -> skip
|
|
291
|
+
const options = (opts && typeof opts === 'object') ? opts : {};
|
|
292
|
+
const reachScores = (options.reachScores && typeof options.reachScores === 'object')
|
|
293
|
+
? options.reachScores : null;
|
|
294
|
+
const endorsementRegistry = 1 / (rank + 1);
|
|
295
|
+
const endorsementD4 = reachScores ? d4For(reachId, reachScores) : 0.5;
|
|
296
|
+
const isReject = decision === 'reject';
|
|
297
|
+
return {
|
|
298
|
+
d4_blend: isReject ? endorsementD4 : (1 - endorsementD4),
|
|
299
|
+
registry_order: isReject ? endorsementRegistry : (1 - endorsementRegistry),
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// ---------------------------------------------------------------------------
|
|
304
|
+
// emitUnavailable(db, faultKind, roomState) -- the Req 7 disclosed-degrade signal.
|
|
305
|
+
//
|
|
306
|
+
// TWO destinations, one signal. The Req 7 contract is that a degraded weight-state
|
|
307
|
+
// read is DISCLOSED, never swallowed; it does not require that the disclosure be a
|
|
308
|
+
// room.db write. Under the opt-in read-only mode (quick 260728-7kc) the SAME closed
|
|
309
|
+
// enum token is handed to the caller through roomState.degradeSink instead, so a
|
|
310
|
+
// declared-read caller still learns it degraded without the ranker writing into the
|
|
311
|
+
// room it was only supposed to read.
|
|
312
|
+
//
|
|
313
|
+
// Both paths are wrapped so the degrade path itself can never throw. Payload is
|
|
314
|
+
// enum tokens ONLY (fault_kind, source); never prose, never a field named reason
|
|
315
|
+
// (Part 8 + the run-all-158 reason-sweep convention). A missing or non-array sink
|
|
316
|
+
// under readOnly is safe: the token is simply dropped, never written.
|
|
317
|
+
// ---------------------------------------------------------------------------
|
|
318
|
+
function emitUnavailable(db, faultKind, roomState) {
|
|
319
|
+
const rs = (roomState && typeof roomState === 'object') ? roomState : {};
|
|
320
|
+
if (rs.readOnly === true) {
|
|
321
|
+
try {
|
|
322
|
+
if (Array.isArray(rs.degradeSink)) rs.degradeSink.push(faultKind);
|
|
323
|
+
} catch (_e) {
|
|
324
|
+
// The degrade path itself must never throw.
|
|
325
|
+
}
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
try {
|
|
329
|
+
navigation.logMemoryEvent(db, 'reach_weight_state_unavailable', {
|
|
330
|
+
fault_kind: faultKind,
|
|
331
|
+
source: 'reach-hedge-ranker',
|
|
332
|
+
});
|
|
333
|
+
} catch (_e) {
|
|
334
|
+
// The degrade path itself must never throw.
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// ---------------------------------------------------------------------------
|
|
339
|
+
// readHedgeWeights(db, roomState) -> { d4_blend, registry_order } (sum 1)
|
|
340
|
+
//
|
|
341
|
+
// Non-throwing degrade, never silent (PATTERNS.md worked example):
|
|
342
|
+
// (a) injection seam first: roomState.hedgeWeights wins (db-free unit tests).
|
|
343
|
+
// (b) no db -> equal weights over EXPERT_IDS, NO event (the MCP/no-room path).
|
|
344
|
+
// (c) readHedgeWeightState inside try: a THROW is a real fault -> emit the
|
|
345
|
+
// degrade event (read_fault) and return equal weights.
|
|
346
|
+
// (d) null result = cold start: equal weights, NO event (Pitfall 5).
|
|
347
|
+
// (e) validate every stored weight is finite, non-negative, positive-sum:
|
|
348
|
+
// a corrupt scalar emits the degrade event (corrupt_scalar) + equal weights.
|
|
349
|
+
// (f) healthy values renormalize to sum 1.
|
|
350
|
+
//
|
|
351
|
+
// roomState is threaded into every emitUnavailable call so the read-only mode can
|
|
352
|
+
// route the token to the caller's sink instead of a room.db write. The READ itself
|
|
353
|
+
// is identical in both modes: the mode removes writes only, never the read.
|
|
354
|
+
// ---------------------------------------------------------------------------
|
|
355
|
+
function readHedgeWeights(db, roomState) {
|
|
356
|
+
const rs = (roomState && typeof roomState === 'object') ? roomState : {};
|
|
357
|
+
if (rs.hedgeWeights && typeof rs.hedgeWeights === 'object') {
|
|
358
|
+
return rs.hedgeWeights; // (a) injection seam
|
|
359
|
+
}
|
|
360
|
+
if (!db) return equalWeights(EXPERT_IDS); // (b) cold / no-room path, no event
|
|
361
|
+
let state;
|
|
362
|
+
try {
|
|
363
|
+
state = navigation.readHedgeWeightState(db);
|
|
364
|
+
} catch (_e) {
|
|
365
|
+
emitUnavailable(db, 'read_fault', rs); // (c) real fault -> disclosed degrade
|
|
366
|
+
return equalWeights(EXPERT_IDS);
|
|
367
|
+
}
|
|
368
|
+
if (!state || !state.weights || typeof state.weights !== 'object') {
|
|
369
|
+
return equalWeights(EXPERT_IDS); // (d) cold start, NO event
|
|
370
|
+
}
|
|
371
|
+
const raw = {};
|
|
372
|
+
let sum = 0;
|
|
373
|
+
for (const id of EXPERT_IDS) {
|
|
374
|
+
const v = Number(state.weights[id]);
|
|
375
|
+
if (!Number.isFinite(v) || v < 0) {
|
|
376
|
+
emitUnavailable(db, 'corrupt_scalar', rs); // (e) corrupt scalar -> disclosed degrade
|
|
377
|
+
return equalWeights(EXPERT_IDS);
|
|
378
|
+
}
|
|
379
|
+
raw[id] = v;
|
|
380
|
+
sum += v;
|
|
381
|
+
}
|
|
382
|
+
if (!(sum > 0)) {
|
|
383
|
+
emitUnavailable(db, 'corrupt_scalar', rs);
|
|
384
|
+
return equalWeights(EXPERT_IDS);
|
|
385
|
+
}
|
|
386
|
+
const out = {}; // (f) renormalize
|
|
387
|
+
for (const id of EXPERT_IDS) out[id] = raw[id] / sum;
|
|
388
|
+
return out;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
// startWeights(state) -- the fold's seed: the current normalized weights when
|
|
392
|
+
// healthy, else equal weights. Never emits (that is readHedgeWeights' job).
|
|
393
|
+
function startWeights(state) {
|
|
394
|
+
if (state && state.weights && typeof state.weights === 'object') {
|
|
395
|
+
const raw = {};
|
|
396
|
+
let sum = 0;
|
|
397
|
+
let ok = true;
|
|
398
|
+
for (const id of EXPERT_IDS) {
|
|
399
|
+
const v = Number(state.weights[id]);
|
|
400
|
+
if (!Number.isFinite(v) || v < 0) { ok = false; break; }
|
|
401
|
+
raw[id] = v;
|
|
402
|
+
sum += v;
|
|
403
|
+
}
|
|
404
|
+
if (ok && sum > 0) {
|
|
405
|
+
const out = {};
|
|
406
|
+
for (const id of EXPERT_IDS) out[id] = raw[id] / sum;
|
|
407
|
+
return out;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return equalWeights(EXPERT_IDS);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// ---------------------------------------------------------------------------
|
|
414
|
+
// maybeUpdateHedgeWeights(db, opts) -> { updated: boolean, weights? }
|
|
415
|
+
//
|
|
416
|
+
// The D-03 debounced fold. No db -> { updated: false }. Reads the current state
|
|
417
|
+
// (tolerating null), reads f_selector_decision rows newer than its updatedAt,
|
|
418
|
+
// keeps rows deriveExpertLosses accepts, and only when >= N does it fold them
|
|
419
|
+
// chronologically (oldest first) through hedgeUpdate and upsert the result with an
|
|
420
|
+
// advanced updateCount + the newest row timestamp. The entire body soft-fails to
|
|
421
|
+
// { updated: false } so the update trigger can never break a turn.
|
|
422
|
+
//
|
|
423
|
+
// Called by scripts/hedge-refit-pipeline.cjs::runHedgeRefit, the explicit
|
|
424
|
+
// navigator-triggered entry point (quick task 260728-8av). Never called from
|
|
425
|
+
// rankFiredCandidates below: that fire-and-forget trigger was removed as a
|
|
426
|
+
// proven no-op on every shipped surface (RCA hedge-fold-has-no-production-
|
|
427
|
+
// trigger). This function's own behavior is unchanged.
|
|
428
|
+
// ---------------------------------------------------------------------------
|
|
429
|
+
function maybeUpdateHedgeWeights(db, opts) {
|
|
430
|
+
if (!db) return { updated: false };
|
|
431
|
+
const options = (opts && typeof opts === 'object') ? opts : {};
|
|
432
|
+
try {
|
|
433
|
+
let state = null;
|
|
434
|
+
try {
|
|
435
|
+
state = navigation.readHedgeWeightState(db);
|
|
436
|
+
} catch (_e) {
|
|
437
|
+
state = null; // a fault here is disclosed by readHedgeWeights; the fold tolerates it
|
|
438
|
+
}
|
|
439
|
+
const since = (state && typeof state.updatedAt === 'number') ? state.updatedAt : 0;
|
|
440
|
+
let rows;
|
|
441
|
+
try {
|
|
442
|
+
// WR-03 (documented accepted bound, not a fix): this call used to be
|
|
443
|
+
// invoked on essentially every multi-candidate turn/pull where db was
|
|
444
|
+
// present, back when rankFiredCandidates fire-and-forgot this function.
|
|
445
|
+
// Quick task 260728-8av removed that call site: this function is now
|
|
446
|
+
// invoked only by scripts/hedge-refit-pipeline.cjs, a deliberate
|
|
447
|
+
// navigator-triggered action, never per-turn and never per-poll. The
|
|
448
|
+
// "invoked on essentially every turn" premise below no longer holds,
|
|
449
|
+
// which makes the 500-row cap even less reachable than the review
|
|
450
|
+
// already found it to be, not more (the debounce below gates only the
|
|
451
|
+
// WRITE, never this query -- `since` only
|
|
452
|
+
// ever advances on a successful fold, so an under-N invocation re-queries
|
|
453
|
+
// the SAME floor next time, losing nothing). The 500-row cap can only
|
|
454
|
+
// strand rows if MORE than 500 new qualifying f_selector_decision rows
|
|
455
|
+
// accumulate strictly BETWEEN two consecutive invocations of this
|
|
456
|
+
// function. The debounce threshold N defaults to 50 (HEDGE_UPDATE_N_DEFAULT,
|
|
457
|
+
// env-tunable) -- 500 is a full 10x that, and each qualifying row requires
|
|
458
|
+
// a genuine user accept/reject/defer decision (selector-decisions.cjs),
|
|
459
|
+
// not a per-turn firehose. Under normal operation this function is called
|
|
460
|
+
// far more often than a user can produce 500 decisions, so the cap is not
|
|
461
|
+
// reachable in practice. It IS reachable only in an already-degraded
|
|
462
|
+
// scenario the review named explicitly (db persistently null across many
|
|
463
|
+
// intervening qualifying-decision turns on a caller that threads
|
|
464
|
+
// ctx.roomDb, or a bug elsewhere suppressing invocation for a long
|
|
465
|
+
// stretch) -- at that point the fold is already unhealthy for reasons
|
|
466
|
+
// beyond this cap, and pagination would only mask, not fix, the deeper
|
|
467
|
+
// fault. If the corpus ever grows enough that this margin narrows
|
|
468
|
+
// (TUNABLE-LATER, mirrors the reachScores limitation below), revisit with
|
|
469
|
+
// pagination or a persisted high-water-mark cursor.
|
|
470
|
+
rows = navigation.findRecentChanges(db, since, { eventType: 'f_selector_decision', limit: 500 });
|
|
471
|
+
} catch (_e) {
|
|
472
|
+
return { updated: false };
|
|
473
|
+
}
|
|
474
|
+
if (!Array.isArray(rows)) return { updated: false };
|
|
475
|
+
const kept = [];
|
|
476
|
+
for (const row of rows) {
|
|
477
|
+
const losses = deriveExpertLosses(row, options);
|
|
478
|
+
if (losses) kept.push({ row: row, losses: losses });
|
|
479
|
+
}
|
|
480
|
+
const N = updateN(options);
|
|
481
|
+
if (kept.length < N) return { updated: false };
|
|
482
|
+
kept.reverse(); // findRecentChanges returns DESC; fold oldest-first
|
|
483
|
+
const eta = updateEta(options);
|
|
484
|
+
let weights = startWeights(state);
|
|
485
|
+
let newestTs = since;
|
|
486
|
+
for (const item of kept) {
|
|
487
|
+
weights = hedgeUpdate(weights, item.losses, eta);
|
|
488
|
+
const ts = item.row && item.row.createdAt;
|
|
489
|
+
if (typeof ts === 'number' && ts > newestTs) newestTs = ts;
|
|
490
|
+
}
|
|
491
|
+
navigation.upsertHedgeWeightState(db, weights, {
|
|
492
|
+
updateCount: ((state && typeof state.updateCount === 'number') ? state.updateCount : 0) + 1,
|
|
493
|
+
updatedAt: newestTs,
|
|
494
|
+
});
|
|
495
|
+
return { updated: true, weights: weights };
|
|
496
|
+
} catch (_e) {
|
|
497
|
+
return { updated: false }; // the update trigger may never break a turn
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// ---------------------------------------------------------------------------
|
|
502
|
+
// rankFiredCandidates(sensorReaches, roomState) -> re-ordered fired subset
|
|
503
|
+
//
|
|
504
|
+
// The D-01 shared selection. Returns the SAME reach objects, re-sorted by the
|
|
505
|
+
// combined score descending, so every downstream [0] read sees the scored winner:
|
|
506
|
+
// (a) 0/1 candidates -> the INPUT untouched (same reference, zero reads/writes).
|
|
507
|
+
// (b) reachScores = roomState.reachScores when an object, else
|
|
508
|
+
// buildReachScoresFromCortex(cortexNodes || []) (the SAME reusable call the
|
|
509
|
+
// CLI path makes; the adapter already returns {} on empty input).
|
|
510
|
+
// (c) d4For(reach_id) -> supplied finite score clamped, else the 0.5 floor.
|
|
511
|
+
// (d) compose Phase 158: d4Adjusted = d4For * (1 - countPenalty) so the shipped
|
|
512
|
+
// reject discount is ONE coordinated adjustment folded INTO the D4 expert
|
|
513
|
+
// BEFORE the blend (OQ-2), not a second uncoordinated pass.
|
|
514
|
+
// (e) registrySignal = 1 / (canonicalRegistryRank(reach_id) + 1) -- the reach's
|
|
515
|
+
// FIXED canonical REACH_IDS position (WR-01: the IDENTICAL definition
|
|
516
|
+
// deriveExpertLosses uses at training time), NOT the fired array's own
|
|
517
|
+
// turn-relative index. The two were previously different features
|
|
518
|
+
// sharing one name: the live blend rewarded "first among whatever fired
|
|
519
|
+
// this turn" while the training fold rewarded "front of the fixed
|
|
520
|
+
// 6-reach registry," so the Hedge layer was learning a weight for a
|
|
521
|
+
// signal it never actually applied. `index` is still threaded through
|
|
522
|
+
// for (h)'s stable tie-break, just no longer for the registry signal.
|
|
523
|
+
// (f) weights = readHedgeWeights(db, roomState).
|
|
524
|
+
// (g) combined = w.d4_blend * d4Adjusted + w.registry_order * registrySignal.
|
|
525
|
+
// (h) THREE-LEVEL sort (Phase 245-07, D-20, Requirement 4):
|
|
526
|
+
// primary -- combined descending (unchanged),
|
|
527
|
+
// secondary -- sensorPriorityRank(evidence.sensor_id) ascending,
|
|
528
|
+
// tertiary -- a.index - b.index, the original stable-order fallback.
|
|
529
|
+
// (h2) SENS_PRIORITY is the DOCTRINE tie-break (lib/core/sensors/
|
|
530
|
+
// sensor-priority.cjs; its header carries the three placement rules that
|
|
531
|
+
// decide the ordering: Canon Part 11 R3 tier precedence, then evidence
|
|
532
|
+
// durability within a tier, then canonical registry order). It REPLACES
|
|
533
|
+
// file-registration order as the deciding rule on a same-reach_id
|
|
534
|
+
// collision, which is Requirement 4's whole substance. Every scoring
|
|
535
|
+
// term this function has (d4For, canonicalRegistryRank, countPenalty) is
|
|
536
|
+
// keyed on reach_id, never on the individual sensor, so two sensors that
|
|
537
|
+
// fire the SAME reach_id produce the IDENTICAL combined score and the
|
|
538
|
+
// comparator used to fall all the way through to `a.index - b.index`,
|
|
539
|
+
// i.e. SENSOR_REGISTRY file order. "Which sensor's payload wins" was
|
|
540
|
+
// therefore decided by whoever edited the registry array last.
|
|
541
|
+
// sensorPriorityRank returns the WORST FINITE rank for a null or unknown
|
|
542
|
+
// id, so an unstamped reach sorts last among its tied set rather than
|
|
543
|
+
// throwing or poisoning the comparator with NaN. The tertiary fallback is
|
|
544
|
+
// deliberately RETAINED, not deleted: two reaches carrying the SAME
|
|
545
|
+
// priority rank (the same sensor firing twice, or two unstamped reaches)
|
|
546
|
+
// still resolve deterministically.
|
|
547
|
+
// (j) any unexpected throw returns the ORIGINAL input array (hot-path soft-fail).
|
|
548
|
+
//
|
|
549
|
+
// Former step (i), REMOVED (quick task 260728-8av, RCA hedge-fold-has-no-
|
|
550
|
+
// production-trigger). This function used to fire-and-forget
|
|
551
|
+
// maybeUpdateHedgeWeights here whenever db was present and the caller had not
|
|
552
|
+
// opted into read-only mode. That trigger never once fired in production:
|
|
553
|
+
// ctx.roomDb is threaded into decide() from exactly one place repo-wide (a
|
|
554
|
+
// test), so db was always null on every shipped surface. Deleting it is a
|
|
555
|
+
// proven no-op on every shipped surface (see the RCA's Evidence section), not
|
|
556
|
+
// a behavior change. The fold itself, maybeUpdateHedgeWeights, is unchanged and
|
|
557
|
+
// still exported; its only caller now is the explicit navigator-triggered
|
|
558
|
+
// scripts/hedge-refit-pipeline.cjs.
|
|
559
|
+
//
|
|
560
|
+
// OPT-IN READ-ONLY MODE (roomState.readOnly, quick 260728-7kc). Default OFF, so
|
|
561
|
+
// every existing caller is byte-unchanged; same shape as Phase 233-03's skipRebuild
|
|
562
|
+
// precedent on runDeriveBackfill. It exists because a caller that declares itself a
|
|
563
|
+
// pure read (the suggest_next / reach_candidates MCP pull tools) must not inherit a
|
|
564
|
+
// write through a shared dependency: handing out a write-capable db handle is the
|
|
565
|
+
// same act as writing. Since quick task 260728-8av removed step (i) entirely, the
|
|
566
|
+
// ranking call no longer folds in ANY mode, readOnly no longer suppresses a fold
|
|
567
|
+
// because there is no fold left here to suppress. readOnly now governs exactly one
|
|
568
|
+
// thing: it routes the Req 7 degrade token to roomState.degradeSink instead of a
|
|
569
|
+
// memory_event write (see emitUnavailable above). Steps (b) through (h) are
|
|
570
|
+
// IDENTICAL in both modes, so the pick never changes: the mode removes writes
|
|
571
|
+
// only. The caller is expected to supply a ?mode=ro handle as well, which makes
|
|
572
|
+
// the guarantee mechanical rather than a promise.
|
|
573
|
+
// ---------------------------------------------------------------------------
|
|
574
|
+
function rankFiredCandidates(sensorReaches, roomState) {
|
|
575
|
+
if (!Array.isArray(sensorReaches) || sensorReaches.length <= 1) {
|
|
576
|
+
return sensorReaches; // (a) byte-identical 0/1 passthrough
|
|
577
|
+
}
|
|
578
|
+
try {
|
|
579
|
+
const rs = roomState || {};
|
|
580
|
+
const reachScores = (rs.reachScores && typeof rs.reachScores === 'object')
|
|
581
|
+
? rs.reachScores
|
|
582
|
+
: cortexReachAdapter.buildReachScoresFromCortex(rs.cortexNodes || []); // (b)
|
|
583
|
+
const db = rs.db || null;
|
|
584
|
+
const weights = readHedgeWeights(db, rs); // (f)
|
|
585
|
+
const wD4 = Number.isFinite(Number(weights.d4_blend)) ? Number(weights.d4_blend) : 0;
|
|
586
|
+
const wReg = Number.isFinite(Number(weights.registry_order)) ? Number(weights.registry_order) : 0;
|
|
587
|
+
|
|
588
|
+
const decorated = sensorReaches.map(function (reach, index) {
|
|
589
|
+
const reachId = reach && reach.reach_id;
|
|
590
|
+
let cp = 0;
|
|
591
|
+
try {
|
|
592
|
+
cp = reachRejectReader.countPenalty(db, reachId, rs); // (d) composed 158 discount
|
|
593
|
+
} catch (_e) {
|
|
594
|
+
cp = 0;
|
|
595
|
+
}
|
|
596
|
+
if (!Number.isFinite(cp)) cp = 0;
|
|
597
|
+
const d4Adjusted = d4For(reachId, reachScores) * (1 - cp);
|
|
598
|
+
const registrySignal = 1 / (canonicalRegistryRank(reachId) + 1); // (e) WR-01
|
|
599
|
+
const combined = wD4 * d4Adjusted + wReg * registrySignal; // (g)
|
|
600
|
+
// (h2) the doctrine tie-break key. dispatchSensors stamps evidence.sensor_id
|
|
601
|
+
// centrally from the frozen SENSOR_REGISTRY_IDS array (245-01), so a sensor
|
|
602
|
+
// can never write its own priority key (threat T-245-30). An absent or
|
|
603
|
+
// non-string stamp becomes null and sensorPriorityRank hands back the worst
|
|
604
|
+
// finite rank.
|
|
605
|
+
const sensorId = (reach && reach.evidence && typeof reach.evidence.sensor_id === 'string')
|
|
606
|
+
? reach.evidence.sensor_id
|
|
607
|
+
: null;
|
|
608
|
+
return {
|
|
609
|
+
reach: reach,
|
|
610
|
+
index: index,
|
|
611
|
+
combined: combined,
|
|
612
|
+
priorityRank: sensorPriority.sensorPriorityRank(sensorId),
|
|
613
|
+
};
|
|
614
|
+
});
|
|
615
|
+
|
|
616
|
+
decorated.sort(function (a, b) {
|
|
617
|
+
if (b.combined !== a.combined) return b.combined - a.combined; // (h) primary
|
|
618
|
+
if (a.priorityRank !== b.priorityRank) return a.priorityRank - b.priorityRank; // (h2) doctrine
|
|
619
|
+
return a.index - b.index; // (h) stable: same-rank ties keep original fired order
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
const ordered = decorated.map(function (d) { return d.reach; });
|
|
623
|
+
|
|
624
|
+
return ordered;
|
|
625
|
+
} catch (_e) {
|
|
626
|
+
return sensorReaches; // (j) hot-path soft-fail to the original input
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
// ---------------------------------------------------------------------------
|
|
631
|
+
// buildSignalNudges({ baseScores, sensorReaches, brainVerb, tierMode })
|
|
632
|
+
// -> { reach_id: fusedAbsoluteScore } (ONLY the reaches that got a nudge)
|
|
633
|
+
//
|
|
634
|
+
// Phase 245-07 Task 2. Requirement 1's fusion math, living in the ONE shared
|
|
635
|
+
// scored-selection layer (D-01's Canon Part 7 intent: one selection brain, no
|
|
636
|
+
// second one minted at the callsite) while being a SEPARATE export from
|
|
637
|
+
// rankFiredCandidates so it has a consumer that can actually reach the dial.
|
|
638
|
+
//
|
|
639
|
+
// WHY IT IS A SEPARATE EXPORT AND NOT FOLDED INTO rankFiredCandidates' local
|
|
640
|
+
// `combined`. 245-RESEARCH.md F-1 enumerated every call site of both functions
|
|
641
|
+
// and found rankFiredCandidates and buildReachList are SIBLING consumers of the
|
|
642
|
+
// same buildReachScoresFromCortex output: the ranker reads reachScores
|
|
643
|
+
// read-only, returns a reordered ARRAY, never writes back to the map, and
|
|
644
|
+
// nothing downstream of it reaches buildReachList. A fusion confined to the
|
|
645
|
+
// ranker's internals passes every unit test and moves the dial by exactly
|
|
646
|
+
// nothing (Pitfall 1, "the single most likely way this phase ships a false
|
|
647
|
+
// success"). So the MATH lives here and 245-08 merges its output at the render
|
|
648
|
+
// callsite. rankFiredCandidates' return contract is UNCHANGED.
|
|
649
|
+
//
|
|
650
|
+
// THE FUSION, per reach_id:
|
|
651
|
+
// 1. fraction = SENSOR_TOP_FRACTION if this is the top fired reach's id,
|
|
652
|
+
// + SENSOR_OTHER_FRACTION if it is any OTHER distinct fired reach's id,
|
|
653
|
+
// + BRAIN_VERB_FRACTION * affinityWeight when the Brain-verb affinity names
|
|
654
|
+
// it. Summed, then clamped to NUDGE_FRACTION_CAP.
|
|
655
|
+
// 2. base = baseScores[reachId] when finite (clamped 0..1), else
|
|
656
|
+
// DEFAULT_FUSION_BASE.
|
|
657
|
+
// 3. base >= FUSION_CEILING -> emit base UNCHANGED. The fusion must never lift
|
|
658
|
+
// a reach already at or above the ceiling, so it can neither create a
|
|
659
|
+
// RECOMMENDED marker nor inflate an existing one.
|
|
660
|
+
// 4. otherwise emit base + fraction * (FUSION_CEILING - base). Since
|
|
661
|
+
// fraction <= 0.95 < 1, the result is STRICTLY below FUSION_CEILING for
|
|
662
|
+
// every finite base (the A3 bound, structural rather than a clamp), and it
|
|
663
|
+
// is strictly monotone in BOTH base and fraction, so two reaches with
|
|
664
|
+
// different bases or different fractions never collide at one fused value.
|
|
665
|
+
//
|
|
666
|
+
// A same-reach_id collision counts ONCE, at the higher of the two sensor
|
|
667
|
+
// fractions. Twelve sensors can fire context_block on one turn (D-19); letting
|
|
668
|
+
// each co-firing sensor stack another SENSOR_OTHER_FRACTION would inflate that
|
|
669
|
+
// one reach purely by how many sensors happen to be registered against it,
|
|
670
|
+
// which is the same "registration order decides" accident Requirement 4 exists
|
|
671
|
+
// to kill, wearing different clothes.
|
|
672
|
+
//
|
|
673
|
+
// TIER POLICY (stated here because it is a Canon Part 3 consequence, not a
|
|
674
|
+
// preference): the Brain-verb term applies ONLY when tierMode === 'mode_a'.
|
|
675
|
+
// mode_b is local-only and tier_0 is the Brain-absent fallback, so a
|
|
676
|
+
// Brain-derived nudge has no standing in either. The SENSOR terms apply in EVERY
|
|
677
|
+
// tier, matching resolveFireSkill step 2's "any tier" behavior.
|
|
678
|
+
//
|
|
679
|
+
// HARD INVARIANTS:
|
|
680
|
+
// - Absent signal is a byte-identical no-op. An empty or non-array
|
|
681
|
+
// sensorReaches AND a null brainVerb returns {}, so an unfused render stays
|
|
682
|
+
// byte-identical (the shipped Phase 158-03 reject-discount precedent, and
|
|
683
|
+
// what keeps tests/test-158-reach-byte-stable.cjs green).
|
|
684
|
+
// - reach_id membership. Only ids in this module's frozen local REACH_IDS list
|
|
685
|
+
// may appear as keys; an off-enum id on a reach or in an affinity entry is
|
|
686
|
+
// IGNORED, never emitted. Same discipline cortex-reach-adapter uses against
|
|
687
|
+
// threat T-150.8-14: key on enum membership, never on prose (T-245-28).
|
|
688
|
+
// - Purity. No db, no fs, no network, no Brain call, no mutation of any
|
|
689
|
+
// argument. Safe to call from a db-free render seam.
|
|
690
|
+
// - Soft-fail. Any unexpected throw returns {}, so an UNFUSED render (today's
|
|
691
|
+
// behavior) is the degraded state (T-245-31).
|
|
692
|
+
//
|
|
693
|
+
// The Brain verb reaches this function ONLY as 245-05's
|
|
694
|
+
// trace.brain_pattern_verb, always a frozen CANONICAL_VERBS member, and it is
|
|
695
|
+
// routed through verbReachAffinity to obtain reach_ids. It is never compared
|
|
696
|
+
// against fire_skill: on the sensor-fired path fire_skill is a SKILL FAMILY slug
|
|
697
|
+
// while brain_pattern_verb is a canonical verb (245-05 carry-forward 3), so an
|
|
698
|
+
// equality test between them is meaningless. A null affinity return means
|
|
699
|
+
// "contribute NO verb term this turn", never "contribute zero to every reach"
|
|
700
|
+
// (245-04 carry-forward 1); 5 of the 10 canonical verbs return null by design.
|
|
701
|
+
// ---------------------------------------------------------------------------
|
|
702
|
+
function buildSignalNudges(input) {
|
|
703
|
+
try {
|
|
704
|
+
const inp = (input && typeof input === 'object') ? input : {};
|
|
705
|
+
const baseScores = (inp.baseScores && typeof inp.baseScores === 'object') ? inp.baseScores : {};
|
|
706
|
+
const sensorReaches = Array.isArray(inp.sensorReaches) ? inp.sensorReaches : [];
|
|
707
|
+
const brainVerb = (typeof inp.brainVerb === 'string' && inp.brainVerb.trim() !== '')
|
|
708
|
+
? inp.brainVerb : null;
|
|
709
|
+
const tierMode = inp.tierMode;
|
|
710
|
+
|
|
711
|
+
const fractions = {};
|
|
712
|
+
function addFraction(reachId, amount) {
|
|
713
|
+
if (typeof reachId !== 'string') return;
|
|
714
|
+
if (REACH_IDS.indexOf(reachId) === -1) return; // enum membership only (T-245-28)
|
|
715
|
+
if (!(typeof amount === 'number' && Number.isFinite(amount) && amount > 0)) return;
|
|
716
|
+
fractions[reachId] = (fractions[reachId] || 0) + amount;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// ---- the SENSOR terms (every tier) ----
|
|
720
|
+
const topFraction = fractionFromEnv('MINDRIAN_SENSOR_TOP_FRACTION', SENSOR_TOP_FRACTION);
|
|
721
|
+
let topReachId = null;
|
|
722
|
+
const countedSensorIds = [];
|
|
723
|
+
for (let i = 0; i < sensorReaches.length; i += 1) {
|
|
724
|
+
const r = sensorReaches[i];
|
|
725
|
+
const reachId = (r && typeof r.reach_id === 'string') ? r.reach_id : null;
|
|
726
|
+
if (reachId === null) continue;
|
|
727
|
+
if (topReachId === null) {
|
|
728
|
+
// Index 0 of the array rankFiredCandidates returned: the scored winner,
|
|
729
|
+
// with Task 1's SENS_PRIORITY tie-break already applied.
|
|
730
|
+
topReachId = reachId;
|
|
731
|
+
addFraction(reachId, topFraction);
|
|
732
|
+
countedSensorIds.push(reachId);
|
|
733
|
+
continue;
|
|
734
|
+
}
|
|
735
|
+
if (reachId === topReachId) continue; // already counted at TOP
|
|
736
|
+
if (countedSensorIds.indexOf(reachId) !== -1) continue; // counted once, not per collider
|
|
737
|
+
addFraction(reachId, SENSOR_OTHER_FRACTION);
|
|
738
|
+
countedSensorIds.push(reachId);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
// ---- the BRAIN-VERB term (mode_a only, Canon Part 3) ----
|
|
742
|
+
if (tierMode === 'mode_a' && brainVerb !== null) {
|
|
743
|
+
let affinity = null;
|
|
744
|
+
try {
|
|
745
|
+
// Lazily required so a missing or broken affinity module degrades the
|
|
746
|
+
// Brain term to nothing instead of breaking the sensor term (and instead
|
|
747
|
+
// of breaking this whole module at load time). node caches the module, so
|
|
748
|
+
// repeat calls cost a cache lookup.
|
|
749
|
+
affinity = require('../core/verb-reach-affinity.cjs').verbReachAffinity(brainVerb);
|
|
750
|
+
} catch (_e) {
|
|
751
|
+
affinity = null;
|
|
752
|
+
}
|
|
753
|
+
if (affinity && typeof affinity === 'object') {
|
|
754
|
+
const verbFraction = fractionFromEnv('MINDRIAN_BRAIN_VERB_FRACTION', BRAIN_VERB_FRACTION);
|
|
755
|
+
for (const reachId of Object.keys(affinity)) {
|
|
756
|
+
const w = Number(affinity[reachId]);
|
|
757
|
+
if (!Number.isFinite(w) || !(w > 0)) continue;
|
|
758
|
+
addFraction(reachId, verbFraction * w);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
// ---- the bounded fusion ----
|
|
764
|
+
const out = {};
|
|
765
|
+
for (const reachId of Object.keys(fractions)) {
|
|
766
|
+
let fraction = fractions[reachId];
|
|
767
|
+
if (!Number.isFinite(fraction) || !(fraction > 0)) continue;
|
|
768
|
+
if (fraction > NUDGE_FRACTION_CAP) fraction = NUDGE_FRACTION_CAP;
|
|
769
|
+
const supplied = baseScores[reachId];
|
|
770
|
+
const base = (typeof supplied === 'number' && Number.isFinite(supplied))
|
|
771
|
+
? clamp01(supplied)
|
|
772
|
+
: DEFAULT_FUSION_BASE;
|
|
773
|
+
if (base >= FUSION_CEILING) {
|
|
774
|
+
out[reachId] = base; // never lift an already-at-or-above-ceiling reach
|
|
775
|
+
continue;
|
|
776
|
+
}
|
|
777
|
+
out[reachId] = base + fraction * (FUSION_CEILING - base);
|
|
778
|
+
}
|
|
779
|
+
return out;
|
|
780
|
+
} catch (_e) {
|
|
781
|
+
return {}; // soft-fail: an UNFUSED render is the degraded state
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
module.exports = {
|
|
786
|
+
rankFiredCandidates: rankFiredCandidates,
|
|
787
|
+
// Phase 245-07 Task 2 (Requirement 1): the bounded three-input fusion and the
|
|
788
|
+
// A3 bound it is built on. Exported for 245-08's render-callsite merge.
|
|
789
|
+
buildSignalNudges: buildSignalNudges,
|
|
790
|
+
FUSION_CEILING: FUSION_CEILING,
|
|
791
|
+
readHedgeWeights: readHedgeWeights,
|
|
792
|
+
maybeUpdateHedgeWeights: maybeUpdateHedgeWeights,
|
|
793
|
+
hedgeUpdate: hedgeUpdate,
|
|
794
|
+
deriveExpertLosses: deriveExpertLosses,
|
|
795
|
+
canonicalRegistryRank: canonicalRegistryRank,
|
|
796
|
+
EXPERT_IDS: EXPERT_IDS,
|
|
797
|
+
REACH_IDS: REACH_IDS,
|
|
798
|
+
HEDGE_UPDATE_N_DEFAULT: HEDGE_UPDATE_N_DEFAULT,
|
|
799
|
+
HEDGE_ETA_DEFAULT: HEDGE_ETA_DEFAULT,
|
|
800
|
+
// The remaining fusion constants, exported so the bound sweep in
|
|
801
|
+
// tests/test-245-nudge-bound.cjs reads the SHIPPED numbers rather than
|
|
802
|
+
// hand-typing a second copy of them (the Phase 185 no-parallel-
|
|
803
|
+
// reimplementation rule).
|
|
804
|
+
DEFAULT_FUSION_BASE: DEFAULT_FUSION_BASE,
|
|
805
|
+
SENSOR_TOP_FRACTION: SENSOR_TOP_FRACTION,
|
|
806
|
+
SENSOR_OTHER_FRACTION: SENSOR_OTHER_FRACTION,
|
|
807
|
+
BRAIN_VERB_FRACTION: BRAIN_VERB_FRACTION,
|
|
808
|
+
NUDGE_FRACTION_CAP: NUDGE_FRACTION_CAP,
|
|
809
|
+
};
|