@mindrian_os/cli 1.13.1-beta.4 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +173 -10
  2. package/README.md +88 -56
  3. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,171 @@
1
+ ## [1.13.1] - 2026-06-17
2
+
3
+ ### Added
4
+ -
5
+
6
+ ## [1.13.1-beta.34] - 2026-06-17
7
+
8
+ ### Added
9
+ - Phase 162 (Graph Spine, SEED-026) W1-W3: every graph the navigator draws is now sourced through a single whole-graph read primitive over room.db in ONE node-identity space, so orphan/dangling edges are structurally impossible. `lib/core/navigation/graph-export.cjs` ships `getGraphExport(roomDir)` (re-exported from `navigation.cjs`): nodes AND edges come from room.db in one id space; an edge ships only when both endpoints are in the included node set; bookkeeping types (memory_event/focus/audit) are excluded-and-counted, never silently dropped; unknown node types render loud (default color + flagged in `unmapped_types`), never thrown; cold-start (no room.db) emits Section anchors so a Tier-0 room never renders blank. The CLI presentation graph (`scripts/generate-presentation.cjs`) and the Desktop/Cowork Cytoscape dashboard (`scripts/build-graph-from-sqlite.cjs` + `dashboard/index.html`) both consume the spine -- single node authority across surfaces, styled by knowledge_type color + degree size + edge-type gloss. Section nodes are now durable room.db rows written at room birth inside the ACID transaction, with an idempotent migration (`lib/core/migrations/phase-162-section-nodes.cjs`) backfilling existing rooms. Requirements R1/R2/R3/R4/R11. Canon parts 4/7/8/9. Local-only: zero Brain egress.
10
+
11
+ ### Security
12
+ - Phase 162 W3: adversarial Canon Part 8 boundary hardening over the graph export. `tests/test-graph-export-part8-leak.cjs` proves no hostile byte (correlation_id / brain_id / source_path / transcript prose / personal identifier / proprietary number / raw secret) reaches the export payload, and asserts every node's data key-set equals exactly the Part 8 whitelist (with a negative control so the scan is not over-broad). A committed golden-room snapshot + a node-type completeness gate (`scripts/check-graph-export-typemap.cjs`) fail loud if any live node type is unclassified; `tests/run-all-162.sh` aggregates the phase gate (6/6 suites green).
13
+
14
+ ## [1.13.1-beta.32] - 2026-06-17
15
+
16
+ ### Added
17
+ -
18
+
19
+ ## [1.13.1-beta.30] - 2026-06-16
20
+
21
+ ### Added
22
+ -
23
+
24
+ ## [1.13.1-beta.28] - 2026-06-16
25
+
26
+ ### Added
27
+ -
28
+
29
+ ## [1.13.1-beta.26] - 2026-06-15
30
+
31
+ ### Added
32
+ - Phase 156 (Futures Wheel MVP): new `/mos:futures [concept]` command - an assemble-not-rebuild foresight context that does what a linear human cannot: builds a bounded multi-ring consequence wheel (1st/2nd/3rd-order, flat artifacts under `opportunity-bank/futures-<seed>/`, NO sub-rooms) and surfaces the invisible cross-domain ripples a linear mind misses. Guided-by-ring generation (depth 3 x fan-out 5) with an advisory causal-cue flagger; consequences carry `horizon` + `confidence` + PESTEL `domain` frontmatter; parent->child cascade as `ROOT_CAUSES` edges via the navigation chokepoint; the shipped HSI engine scans for hidden cross-domain bridges (`HSI_CONNECTION`) with a hard Artifact-registration count-guard before the scan; per-ring HITL Decision Gate (proposed->confirmed via `confirmNode` with navigator `byUser`); PESTEL subsystem-map default render + ring view on demand; opportunity banking with edge provenance; top-3-of-N foresight-web chaining handoffs (RS, systems-thinking, scenario-plan, explore-trends, analyze-timing, dominant-designs, diagnose, mullins, explore-futures) via the Phase 122 command-resolver (no hardcoded command strings); bounded two-fire-point SIGNAL research (seed grounding + per-ring, 30-day cached, generic handles only); adversarial Part 8 egress tripwire + `tests/run-all-156.sh` phase gate (14/14). `futures-wheel` connector registered on the SENS-06 dial (no 7th reach minted; rides `context_block`). Requirements FW-01..FW-13. Canon parts 2/3/4/7/8/9. Local-only: zero Brain egress.
33
+
34
+ ### Fixed
35
+ - Futures Wheel cascade-edge wiring (caught by a live dogfood run): `generateRing` assigned short slug ids while `registerConsequenceArtifacts` registered the Artifact node under a path-derived id, so `writeCascadeEdges` wrote `ROOT_CAUSES` against an id with no node and the cascade silently produced zero edges. `registerConsequenceArtifacts` now stamps the registered id back onto each consequence object; the natural generate->register->cascade flow wires correctly (regression test `tests/test-futures-cascade-integration.cjs`, gate now 14/14). The unit test missed it because it hand-inserted nodes with matching ids; the integration test drives the real flow.
36
+
37
+ ## [1.13.1-beta.24] - 2026-06-14
38
+
39
+ ### Added
40
+ - Phase 150.9 (doctor drift-classes): `/mos:doctor --drift` opt-in flag adds two report-first drift classes on top of the install-cache classes. Class P (prose-vs-code) scans Larry's agent/skill/doc prose for claims that contradict shipped facts; report-only, never auto-edits. Class Q (GSD-record drift) shells out to `gsd-health` to surface ROADMAP gaps + missing SUMMARYs as drift findings. `lib/core/drift-baseline.cjs` writes per-folder + root `DRIFT.md` baselines (idempotent, traversal-guarded) so successive `--drift` runs diff against a stable anchor; `--drift --fix` heals only where safe. First production run caught 96 W007 (ROADMAP gaps) + 9 I001 (missing SUMMARYs) - the Fable FIX-12 drift set. Requirements DDC-01..08; phase gate `tests/run-all-150.9.sh` 6/6 (incl. Canon Part 8 floor + deadlock carve-out proofs). Local-only: zero Brain egress.
41
+ - Phase 150.10 (systems-thinking meta-lens): `/mos:systems-thinking` promoted in place from a flat connector to an F-surface move-selector (M1 name the system -> M2 draw the loop -> M3 find the leverage point -> M4 trace the reverse salient -> M5 validate), GUIDED, with 3-layer local ranking and stage-aware filing. `lib/core/leverage-scan.cjs` is the M4 move: a Meadows 12-level leverage scan over `room.db` (reads via `navigation.cjs` only, ranked highest-leverage-first) wired into the selector as a Decision Gate, with the meta-lens chaining web (M4<->reverse-salient, M3<->find-analogies+research) wired in code. `systems-thinking-loop` registered as a ranked reach component in `lib/hmi/reach-component-map.json` (FROZEN-6 held: REACH_IDS still 6, byte-unchanged). Requirements ST-01..18; phase gate `tests/run-all-150.10.sh` green.
42
+
43
+ ### Changed
44
+ - Brain teaching graph (production Neo4j): +12 generic-methodology nodes for the IRIS 2026 Session 2 lecture (`source_doc='iris-2026-session-2'`, all MERGE-based / idempotent) - the M1-M5 Method nodes + PREREQUISITE chain (M1->M2->M3->M4->M5, M4 FEEDS_INTO M5) + 4 Example nodes + trending-to-absurd Technique + the Leverage Point Local-Graph Excavation Method + cross-domain chaining edges (M4<->Reverse Salient, M3->Four Lenses, Excavation->M4/Leverage Points/Reverse Salient). Generic methodology only, zero user content (Canon Part 8 clean, orphan-scan 0). Re-ingestion is idempotent.
45
+
46
+ ## [1.13.1-beta.22] - 2026-06-13
47
+
48
+ ### Added
49
+ - Conversation intake plumbing (quick 260612-pkb): the Stop and PreCompact hooks now capture Claude Code's `transcript_path`, parse the conversation offline (`scripts/transcript-ingest.cjs` -- user content as string, assistant text blocks only, drops thinking/tool_use/command-chrome, caps 4000 chars/fragment and 1000 fragments), and write real `user`/`assistant` fragments into the active room's `room.db` before summarizing. The dormant downstream readers (voice_log writer, `sessions.summary`, the RECENT SESSIONS resume block) light up unchanged. Fixes the "Brother Test" (reopen a room and Larry references the prior session) and Context Volatility failure modes 2 (session termination) and 3 (unfiled insights). `sessions.summary` is now a 3-5 sentence extractive summary over real turns instead of the `session ended` stub. Local-only (Canon Part 8): zero Brain egress.
50
+ - Proactive Filing Offer doctrine (quick 260612-t29): `skills/room-proactive/SKILL.md` gains a "Proactive Filing Offer (Conversation Artifact Capture)" section -- when a conversation yields a keepable artifact (problem definition, competitive landscape, decision, plan/pilot, synthesis), Larry closes the turn with a Decision Gate F.1 selector mapped onto the existing canonical verbs (Run Methodology / Bank Opportunity / Synthesize / Defer / Free-Text), with precise triggers + anti-triggers (one offer per artifact, escape hatch honored) and decline-as-data capture (Canon Part 4). `skills/larry-personality/SKILL.md` anchors the behavior in conversation flow. No new verb, no new selector (Canon Part 7 reuse).
51
+ - Persona override, identity-only (quick 260612-t2k): new `lib/core/persona-override.cjs` store (`~/.mindrian/persona-override.json`; get/set/clear/status CLI, taxonomy-validated, atomic write, local-only) plus a `readUserMd` seam (`lib/core/user-md-ops.cjs`) that returns a synthetic persona to all ~9 persona callers from one chokepoint while an override is active. The store lives outside the context window, so a navigator-declared persona survives maintenance commands like `/mos:doctor` -- the exact failure that collapsed the persona in QA. `commands/persona.md` documents the set/status/clear surface. The no-override path is byte-identical (proved by the 22/22 user-md-persona regression); `tests/test-persona-override.cjs` adds 5 assertions. Wires the previously-dead `detectPersonaUpdate` `user_override` case.
52
+
53
+ ## [1.13.1-beta.20] - 2026-06-12
54
+
55
+ ### Added
56
+ - Phase 155 Ignite Flow: `/mos:ignite` front-door orchestrator for new-room onboarding. Three entry doors (Just Talk, directive `--express` / `--from-brief <sha8>`, opportunity promotion), F-selector HITL gate chain (B1 starting point, B2 blueprint approval before any mkdir with embedded nugget routing table, B3 first win), and `navigation.birthRoom()` -- the atomic 7-step birth transaction (scaffold-then-register, 6/6 memory complement incl. FEYNMAN seed + BRAIN derivation enqueue, operator + JTBD transitions, scratchpad gate-answer replay as typed edges, batch confirmNode on approve). onboard / rooms-new / discover / new-project all route into the one front door.
57
+ - `data/room-blueprints.json`: 8 persona blueprint families (exploration / solution-first / problem-first / business-first / portfolio / venture / program / case-study) consumed by the scaffold -- the one-size-fits-all 8-section room is gone; arrival-asset routing picks the family and seeds ROOM.md default_methodologies from the chosen chain.
58
+ - Domain insight sweep (Hooked reward leg): CV/paste -> domains extracted locally -> SIGNAL research on generic domain handles only (research-corpus + 30-day cache reuse) -> cross-domain and sub-domain adjacencies filed as proposed claims + opportunity candidates, surfaced at B3 or right after upload extraction. Adversarial Part 8 egress tripwire test guards the path: CV text never leaves the machine.
59
+ - USER.md convergence: one machine schema across all onboarding surfaces; role_blend populated at room birth for the first time.
60
+
61
+ ### Fixed
62
+ - shallow-doc-parser dead focus write: the upload path called setFocus with wrong arity and invalid setBy, so Phase 115 CV pastes never landed a focus node. Fixed; upload extraction now seeds the local graph as designed.
63
+ - MVA option 2 ("Build a room around this") unstubbed: STUB_MESSAGE_119 replaced by `ignite_from_brief`; the venture_classified receipt nudge points at `/mos:ignite`. The reward-to-room conversion path is whole end to end.
64
+ - CONNECTOR-CONTRACT.md frozen-5 doc drift corrected to the enforced frozen-6 reach bank.
65
+
66
+ ## [1.13.1-beta.18] - 2026-06-12
67
+
68
+ ### Fixed
69
+ - Doctor marketplace-cache drift deadlock (quick-260612-cl7, install-cache family case 8): `checkInstallVersion` is now topology-aware regardless of legacy-dir presence -- on a box with a vestigial `~/.claude/plugins/mindrian-os/` dir plus a live marketplace cache, doctor reports the active root's version and the false CRITICAL drift never forms. When recovery is skipped by design under marketplace-cache topology, doctor records `recoverySkipped`, renders the reason (no more `recovery failed: unknown`), and exits 0 under `--fix`; read-only drift keeps exiting 1 so monitoring signal is preserved.
70
+ - Update checker resolves LATEST from the mindrian-marketplace catalog pin (branch-agnostic `HEAD` ref) instead of main's never-released next-version placeholder -- `/mos:update` and `check-version-and-sha.cjs` stop advertising a beta that does not exist; degraded fallback to main plugin.json is disclosed in REASON when the catalog is unreachable.
71
+ - `/mos:update` changelog fetch anchors on numbered release headings -- users never see the `[Unreleased]` in-progress placeholder during an update (live tester confusion: beta.17-in-progress shown during a beta.16 install).
72
+
73
+ ## [1.13.1-beta.16] - 2026-06-12
74
+
75
+ ### Added
76
+ - Phase 150.8 (meeting micro-knowledge DIKW filing v1): every filed transcript now climbs Ackoff's ladder -- Data (segments) -> Information (typed atomic claims) -> Knowledge (confirmable claims + causal edges) -> Wisdom (`/mos:build-knowledge` renders the typed graph by DIKW rung). `writeClaimNode` truth-claim writer (`lib/core/navigation/typed-claim.cjs`): frozen 6-enum `knowledge_type` (fact / causal / heuristic / anomaly_cue / mental_model / assumption) + `conditions` / `counter_conditions` boundary fields + `valid_from` / `valid_until` temporal validity, all additive JSON properties, minted `proposed` per Canon Part 9.
77
+ - Claimify 4-pass extraction in `/mos:file-meeting` Step 3 (selection -> disambiguation -> decomposition -> typing) with `references/meeting/knowledge-typing.md`; unresolvable referents queue as `ambiguous` claims (never silently dropped) and resurface at SessionStart via `scripts/check-pending-ambiguous.cjs` (mandatory Dismiss, 3-strikes throttle, counts-and-ids-only payload per Part 8).
78
+ - Edge taxonomy amendment (navigator-LOCKED 2026-06-12, canon v1.6 -> v1.7, Appendix D entry 18): `REFINES`, `ROOT_CAUSES`, `INSTANTIATES` join `ALLOWED_EDGE_TYPES` in one atomic lockstep wave (edges.cjs block + floor test + claim-harness C3 arm + canon docs). Meeting claims can now express causal structure as first-class graph edges.
79
+ - Post-filing F.1 selector: three ladder verbs (Review ambiguous / Confirm proposed claims / Build knowledge); the Confirm verb routes through the Phase 129.5 `confirmNode` chokepoint with human `byUser` attribution -- the Knowledge rung is actually confirmable. The cortex-reach-adapter gains an additive `claim` branch so fresh typed claims lift dial reach scores (filing is felt, not just stored).
80
+ - `doctor` class N (silent-disable watchdog): detects the plugin installed-but-disabled state from OUTSIDE the plugin's hook surface -- `npx @mindrian_os/cli doctor` flags it CRITICAL with the exact `claude plugin enable` recovery command (install-cache family case 7; RCA plugin-silent-disable-after-cc-self-upgrade).
81
+
82
+ ### Fixed
83
+ - Phase 150.6 (drift-fix sweep, from the 2026-06-11 Fable 5 full drift audit): Larry's agent/skill prose corrected to shipped facts (6 reach-ids, SENS-01..08, Phase 144 engine flip SHIPPED -- Larry stops under-claiming his own engine every session); npm description + docs point at the live `@mindrian_os/cli` (dead `@mindrian_os/install` deprecated ON the registry); `docs/THE-BRAIN.md` fictional 7-tool table replaced with the real 6 (incl. `brain_ask`); ONE Brain number set across all four surfaces (27,804 nodes incl. 12,401 MethodologyChunk substrate / 19,987 rels / 12,413 Pinecone vectors, live read 2026-06-11, Appendix D entry 16); `/mos:help` drops deprecated `visualize`, surfaces shipped `discover` + `memory-cortex-reach`; `venture_classified` scalar emission un-deadens the Phase 119 receipt nudge (Part 8: boolean + enum only); workspace-guard paths repointed to `~/dev/MindrianOS-Plugin`; F.7 dial renders the declared tri-context Decision Gate header (navigator-LOCKED, SKILL.md:257 glyph collision resolved); Action Footers added to `doctor`/`memory`; pre-commit installer dead-guard bug fixed (guards spliced before the terminal exit 0).
84
+
85
+ ### Changed
86
+ - GATE-0 verdict (consumed by 150.8): the intelligence cascade fires FILE-LEVEL ONLY on meeting artifacts; extraction is the segmentation authority (`SEGMENT_AUTHORITY` contract in intelligence-cascade.cjs). Frozen contracts byte-unchanged throughout both phases: MAX_K=3, DIAL_REACH_K=6, 0.70/0.15, the 6-reach bank. Canon now at v1.7.
87
+
88
+ ## [1.13.1-beta.14] - 2026-06-10
89
+
90
+ ### Fixed
91
+ - Phase 150.5 (sensor turn-contract repair + atomic dial render coupling, SEED-021): the 5 structurally dead production sensors fire again -- `lib/core/insight-sensors.cjs` gains `normalizeTurn` + `deriveTurnSignals` + `SIGNAL_FRESHNESS_MS`; `dispatchSensors` normalizes ONCE at entry (text aliased from userText; signals derived freshness-gated from the two shipped LOCAL side-channels: `last-cascade.json` newFindings -> `artifact_filed`, auto-explore markers -> `first_material`); the caller turn is never mutated. Root cause found by the 2026-06-09 8-agent prior-art fan-out: the hook builds `{userText, sectionPath, sessionId}` while five sensors read `turn.text`/`turn.signals` -- fire_skill stayed null, routing_source never flipped, the dial never rendered for any real navigator.
92
+ - Atomic dial emission (DIAL-ATOM-01): `renderEngineDecisionWithDial` threads the AskUserQuestion contract through the SEED-020 single construction door (`selector-dispatcher.appendAskUserQuestionTrailer`, now a top-level export) so dial text + card contract emit together on the engine arm -- never text-only; a render fault writes a `dial_render_note` into the persisted decision trace instead of vanishing (closes the Phase 140 D-03 silent-failure class at this seam); claim-c2 C2-seen now asserts contract presence, not just the text substring.
93
+ - WR-01 (code review): `isFreshFile` requires non-negative age, so a future-dated side-channel (WSL2/Windows-mount clock skew, archive extraction, backup restore) can never read as fresh indefinitely.
94
+
95
+ ### Added
96
+ - ACPT-06: `doctor --dogfood-acceptance` is now a SIX-leg gate -- the new leg proves a real sensor fires from the production-shaped turn and that dial text + card contract emit atomically (honest-negative: the legacy arm emits neither). `tests/run-all-150.5.sh` is the one-command phase gate (both new suites + ACPT-06 + the D-03a fence + the carried run-all-144/146/150 aggregators).
97
+ - D-01 (navigator-LOCKED 2026-06-09): the HYBRID sensor-fired cold card -- tier-0/cold turns render the dial WITH the live card when a sensor fired; a genuinely cold room stays silent (no dead chrome). The always-interactive surface stays Phase 154's cockpit. larry-personality gains the anti-mimicry doctrine line (no card, no picture).
98
+
99
+ ### Changed
100
+ - Frozen contracts byte-unchanged and fence-proven: MAX_K=3, DIAL_REACH_K=6, the 0.70/0.15 recommend gate, the 6-reach bank, the 3 postures. Zero Brain egress delta (derived signals are closed-enum kind strings from LOCAL fs only).
101
+
102
+ ## [1.13.1-beta.12] - 2026-06-09
103
+
104
+ ### Added
105
+ -
106
+
107
+ ## [1.13.1-beta.10] - 2026-06-08
108
+
109
+ The LARRYREACH connector-spine milestone closes: the Phase-143 sensor spine went from zero consumers to fully wired across all 114 surfaces, the navigation engine flips routing_source legacy->engine on a fired reach, and the loop-fires acceptance gate is GREEN.
110
+
111
+ ### Added
112
+ - Connector Spine + Intelligence Orchestrator (Phase 143.3): the self-extending connector contract -- a `connector:` frontmatter schema (docs/CONNECTOR-CONTRACT.md), a generated `data/connector-registry.json` + generator (scripts/build-connector-registry.cjs) + a `--check` CI tripwire, and `skills/intelligence-orchestrator/SKILL.md`, the first consumer of dispatchSensors that reads the registry (never a hardcoded table). Any skill/command/agent joins the wiring by declaring its connector. Generalizes Phase 122 from the command edge to the whole reach spine.
113
+ - /mos:discover (Phase 143.4): a Larry-led six-movement client + product + JTBD discovery command -- the first product command authored to ride the connector spine -- producing a Discovery Brief + scaffolded room and bridging to plain-language messaging via MOSDeckEngine. Ports the client-discovery-interview skill into the repo.
114
+ - Larry operates + pushes (Phase 143.2): larry-personality gains the Operating-the-Dial + Reading-routing_source doctrine, six proactive PUSH push-lines (each under an existing reach + sensor, each ending at a Decision Gate), conversation-mode as the Shape F.1 lane-picker mapped to Ackoff DIKW, mullins-scaffold Brain-driven cross-framework folders + Ackoff traversal, and ui-system Shape F.7.
115
+ - Scheduled Sensor Activation (Phase 145): the scout suite + whitespace/reverse-salient/opportunity/competitor sensors fire on a session-start-throttled cadence (cron + Cowork scheduled-tasks paths), gated behind the Phase-140 safe-auto-fire guard. Zero Brain egress.
116
+ - Connector retrofit sweep (Phase 144.1): the generator now walks agents/ as well as commands/ + skills/; all spine-eligible commands, skills, and the 9 agents declare connectors; an exhaustive 114-surface coverage gate proves every surface is wired-or-explicitly-allow-listed (53 wired + 61 allow-listed, zero unclassified).
117
+ - Loop-fires acceptance gate (Phase 146): `doctor --dogfood-acceptance` + `tests/run-all-146.sh` prove the wired loop FIRES end-to-end (ACPT-01..05) across the full connector surface, not a sample. Exit 0 means the milestone ships as "Larry Reaches".
118
+
119
+ ### Changed
120
+ - Navigation engine (Phase 144, NAV-01): decide() (lib/core/navigation-engine.cjs) consumes the dispatchSensors spine; a fired reach flips routing_source from legacy to engine. The prompt-side orchestrator (143.3) and the engine-side decide() (144) coexist one-reach-per-beat.
121
+
122
+ ### Fixed
123
+ - commands/jtbd.md now declares its `frameworks:` so it resolves via the command resolver; RETRO-05 connector prereqs (leadership frontmatter, value-proposition drift, structure-argument + challenge-assumptions framework keys, deep-grade Write gap).
124
+
125
+ ## [1.13.1-beta.8] - 2026-06-05
126
+
127
+ First PUBLISHED release of the v1.13.1 "Larry Reaches" work -- consolidates the unreleased beta.5 through beta.7 entries below into one shipped beta (beta.4 was the last version users could install).
128
+
129
+ ### Added
130
+ - Local retrieval spine: getRoomContext() fuses room-home summary + windowed session fragments + graph-ranked neighborhood, seeded by the last ~2 turns; re-exported via the navigation chokepoint; per-turn assembly benchmarked ~1ms against the 1200ms budget. Closes the conversation-to-retrieval loop -- the per-turn hot path no longer forwards userText:null, and the seed stays on the LOCAL lane (Canon Part 8).
131
+ - Capability dial committed to HEAD + the LARRY-04 Hierarchical Navigator doctrine: 5 stable reach ids + 3 stable posture ids (push_forward, hold, pull_back), grounded in the Usher division (the tool reaches; the navigator decides). Framework-led deep research ships as committed doctrine only.
132
+ - FILEVAL read-back filing: typed research/decision evidence files to the local graph and is read-back-validated -- a filing that did not land is surfaced, not swallowed.
133
+ - Sentinel and scout hardening (Phase 140).
134
+
135
+ ### Fixed
136
+ - BUG-01: build-graph-from-sqlite line-53 ReferenceError (lazygraphPath -> roomDbPath); the graph export no longer crashes.
137
+
138
+ ## [1.13.1-beta.7] - 2026-06-05
139
+
140
+ Phase 141 "Larry Reaches" execution step 1: commit the Capability Dial doctrine and the LARRY-04 Hierarchical Navigator to HEAD. This lifts the previously uncommitted dial out of working-tree limbo (D-06 hard ordering) and lays the prompt-layer contract -- 5 reach ids + 3 posture ids -- that Phase 143 keys off. The deep-research reach ships as committed doctrine only (DRSCH-01..04 satisfied at the doctrine level; no executable plumbing). Later Phase 141 plans (getRoomContext, FILEVAL, BUG-01) append to this same entry. Ships as a beta first per release-process.md.
141
+
142
+ ### Added
143
+ - **The Capability Dial is committed to HEAD with `canon_parts: [Part 2, Part 3, Part 8, Part 9]` frontmatter (LARRY-01).** The dial's 5-reach GUIDED-default trigger map (Context Block, contradiction surface, cross-room reach, Brain consult, framework-led deep research) plus Reach rules 1-6 were prose-only in the working tree; they are now tracked doctrine. The deep-research 5th reach row and Reach rule 6 ship as DRSCH doctrine only -- no executable deep-research plumbing in this phase (D-01).
144
+ - **5 stable machine-readable reach ids (LARRY-03, D-05):** `context_block`, `contradiction`, `cross_room`, `brain_consult`, `deep_research`. A drift test (`tests/test-reach-ids-drift.cjs`) asserts the reach bank is EXACTLY these five so the Phase 143 dial-TUI label composer and orchestrator key off a frozen set.
145
+ - **The LARRY-04 Hierarchical Navigator doctrine (D-11/12/13).** A net-new prompt-layer section that grounds both dials in the Usher division -- the tool owns Usher steps 1-2 (perceive + set the stage = the reach = the Capability dial); the human owns steps 3-4 (the act of insight + critical revision). The posture is the bidirectional Usher traversal, encoded as 3 stable posture ids `push_forward` / `hold` / `pull_back` (drift test `tests/test-posture-ids-drift.cjs` asserts exactly three plus the Aronhime quotes). Quotes Prof. Aronhime verbatim ("the insight belongs to you; the reach belongs to the tool"; "reach matters more than raw intelligence"; "restraint is the product working correctly"). Doctrine only in 141; executable sensors (Phase 143) and the navigation engine (Phase 144) defer.
146
+ - **Reach rule 7 (dial arbitration, D-13).** The two dials are two dimensions of ONE decision cycle (CoALA), not two captains: the Capability dial evaluates first, the reach result sets the posture, the Ask-Tell dial sets intensity within it. The user is the only helm (Human-in-Command + AI-in-the-loop). Names the "Reasoning-Action Disconnect" anti-pattern alongside "two captains, one ship"; posture and filing never change silently.
147
+
148
+ ### Changed
149
+ - **Version bumped to 1.13.1-beta.7** in `.claude-plugin/plugin.json` and `package.json` in lockstep with this CHANGELOG entry. The git tag and marketplace publish remain human-gated per release-process.md and are NOT performed by this commit.
150
+
151
+ ## [1.13.1-beta.6] - 2026-06-05
152
+
153
+ Phase 140 sentinel + instrumentation hardening. The five Phase 140 fixes (HARD-01..05) repair the scheduled-scout safety path and the instrumentation surfaces that fed it: the sentinel no longer aborts on a zero-edge snapshot, HSI-to-graph edges now land in a Phase-109-migrated room.db, backup directories stop polluting HSI / reverse-salient results, query-efficiency telemetry records instead of logging 0, and phase deadlines surface as DUE instead of CLEAR. These are user-visible sentinel behavior changes, so they ship in lockstep per release-process.md. Ships as a beta first (release infrastructure always betas before promotion).
154
+
155
+ ### Fixed
156
+ - **HARD-01: sentinel-health-check no longer aborts under `set -euo pipefail` on a zero-edge snapshot.** A `grep -c` returning a two-line `0\n0` (or empty) numeric capture was fed straight into `$(( ))`, tripping the strict-mode arithmetic abort and killing the scheduled scout before it ran. A `sanitize_int` helper (`head -1` + `tr -dc '0-9'` + default 0) now coerces every numeric capture to a single-line integer before arithmetic, so a zero-edge room can no longer take down the sentinel.
157
+ - **HARD-02: HSI-to-graph node inserts now land in a Phase-109-migrated room.db.** Four bare three-column node-write sites violated the Phase-109 nodes-provenance NOT NULL contract (`source_path` / `created_by` / `created_at` / `last_seen_at`), so edges failed with `NOT NULL constraint failed: nodes.source_path`. All four sites now route through one shared NOT-NULL-safe helper (`lib/core/node-insert.cjs::insertNode`) that detects the live schema via `PRAGMA table_info(nodes)` and is safe on both the migrated and un-migrated schema.
158
+ - **HARD-03: HSI and reverse-salient scanners now exclude `.heal-backup/`.** Both independent walkers (`compute-hsi.py` and `rs-engine.py`) crawled the heal backup directory, so backup-dir duplicates polluted HSI and reverse-salient results. `.heal-backup` is now in both independent `SKIP_DIRS` sets. Per the locked decision D-04, only `.heal-backup` was added; no general dot-dir ignore-list was introduced.
159
+ - **HARD-04: query-efficiency telemetry now records all turns instead of logging 0.** The PostToolUse hook (`scripts/query-efficiency-telemetry.cjs`) early-returned on any turn that did not carry a `/mos:` command context, but nothing in the repo ever set that signal, so the telemetry JSONL logged 0 events. The hook now writes a JSONL line for every Read/Grep/Glob turn in a resolvable room; the tool, room, and tokens-used gates are unchanged. The eight-field event shape is preserved (`command` defaults to `''`), so the Canon Part 8 scalar-only invariant holds with no new field and no network surface.
160
+ - **HARD-05: deadline monitor now reads `.planning/STATE.md` phase deadlines.** The monitor scanned only `funding/` and `opportunity-bank/`, so phase deadlines always read CLEAR. It now also scans `.planning/STATE.md` (resolved via a `PLANNING_STATE_FILE` env seam, else repo root), reusing the existing `portable_date_to_epoch` parser and the `epoch == 0` skip guard, and pushes a distinct `phase`-source alert through the existing report path.
161
+
162
+ ### Changed
163
+ - **The scout HSI-to-graph step no longer swallows write failures** (D-03). The previous `2>/dev/null || true` masked a failed graph write; it is replaced by an `if/fi` that surfaces stderr and prints a degraded-step advisory while staying non-fatal, so a silent edge-write failure can no longer hide.
164
+ - **The scout telemetry aggregator gained a `--mos-only` population filter** (D-01a). The published "up to 57x" efficiency claim is defined against the `/mos:` command population; relaxing the telemetry gate to all turns (HARD-04) changes the denominator, so `scripts/scout-telemetry-aggregator.cjs --mos-only` restricts the median / top-5 / threshold-status to `/mos:` turns while the default reports the honest all-turns view. `RELEASE_GATE_THRESHOLD_X` is unchanged at 40; both views always coexist so the published number is never silently redefined.
165
+
166
+ ### Release-gate note (57x claim)
167
+ - **The release gate MUST run `node scripts/scout-telemetry-aggregator.cjs --mos-only` when consuming the "up to 57x" claim before tagging.** Reading the bare all-turns median (relaxed by HARD-04) as the claim's evidence would understate efficiency and could trigger a spurious RETUNE; the claim's denominator is the `/mos:` command population. The claim language itself ("up to 57x") does not change as a result of the gate relaxation -- it remains `/mos:`-specific and measurable via `--mos-only`. Any README / CHANGELOG copy rewrite is a deferred release-process follow-up (140-57X-CLAIM-RECONCILIATION.md), not performed here.
168
+
1
169
  ## [1.13.1-beta.4] - 2026-06-04
2
170
 
3
171
  Phase 139 doctor hotfix: stop doctor from scaffolding room artifacts in the wrong directory, and convert its frozen Phase-95 check roster into a version-accumulative engine skeleton. Proven end-to-end by shipping Umbilical Cord as the first registered module. Ships as a beta first per release-process.md (release infrastructure always betas before promotion).
@@ -17,11 +185,6 @@ Phase 139 doctor hotfix: stop doctor from scaffolding room artifacts in the wron
17
185
  ### Changed
18
186
  - **`ALLOWED_EDGE_TYPES` gains `AFFILIATED_WITH`** (additive; the floor test asserts all prior members are preserved and the set stays frozen).
19
187
 
20
- ## [Unreleased] -- v1.13.1-beta.5 (in progress)
21
-
22
- ### Added
23
- -
24
-
25
188
  ## [1.13.1-beta.2] - 2026-06-02
26
189
 
27
190
  ### Fixed (release: marketplace catalog advertised the dev next-bump)
@@ -327,7 +490,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
327
490
 
328
491
  - **Cache pruning on update (Phase 123 Plan-05 -- HARNESS-123-13).** `lib/core/cache-prune.cjs` keeps the active version + N=2 most recent `<pluginsDir>/cache/<marketplace>/mos/<version>/` dirs; NEVER deletes the active (belt-and-suspenders -- the active is unconditionally in the keep-set regardless of mtime); skips entirely if `installed_plugins.json` is missing, unparseable, or has no `mos@mindrian-marketplace` entry. Runs in `scripts/session-start` on version change (best-effort, `|| true`) AND in `scripts/doctor.cjs::performClassJFix` unconditionally on `--fix`. Hermetic Wave-0 test `tests/test-cache-prune.cjs` (6/6) green. (`lib/core/cache-prune.cjs` [new], `scripts/session-start`, `scripts/doctor.cjs`, `tests/test-cache-prune.cjs` [new].)
329
492
 
330
- - **Phase 123 Plan-07 -- single Brain-key resolver + positive session-start status (HARNESS-123-15 + HARNESS-123-16).** Three independent Brain-key lookups (`brain-client.cjs::getApiKey`, `scripts/session-start`'s shell test of `MINDRIAN_BRAIN_KEY`, the `brain-connector` skill's detection order) are collapsed into one source of truth, `lib/core/resolve-brain-key.cjs`. The resolver mirrors `lib/core/active-plugin-root.cjs`'s shape (`{ key, source, available, reason }`) and order (env -> `~/.mindrian.env` -> CWD `.env` -> not-found, the D-31 precedence); SEC-02 POSIX `0o077` permission rejection routes through an explicit `reason` string -- never a silent null. `brain-client.cjs::getApiKey()` is now a one-liner delegating to the resolver (the previous inline 3-path lookup is gone; the docstring is fixed; `Authorization: Bearer` at L218 + L279 and the `BRAIN_REQUEST_TIMEOUT_MS` / `AbortSignal.timeout` / memoized `schema()` / `async function ask` precondition are all upstream of this and untouched). `scripts/session-start`'s Brain block (~L1290-1313) replaces the pre-Plan-7 MCP-centric WARN that tested only the shell env var with a positive 3-case status line: `Brain: HTTP client active (mindrian-brain.onrender.com)` when the key resolves; `Brain: NOT loaded -- permissions too open: ... (run: chmod 600 ~/.mindrian.env)` when SEC-02 rejects; `Brain: not configured (Tier 0)` when nothing is found. The `brain-connector/SKILL.md` Detection section gains a new step 0 (HTTP-path detection via the resolver) and a CLI row in the Tool Names table. `commands/setup.md`'s `~/.mindrian.env` write is now followed by `chmod 600` (SEC-02 fix; no-op on Windows). `install.sh` is annotated -- it does NOT write `~/.mindrian.env` today; if a future code path adds a write, it MUST chmod 600 the file. `docs/install/BRAIN-SETUP.md` and `.env.brain.template` state Bearer-only explicitly and surface the `https://mindrianos.vercel.app/brain-access` request URL + `MINDRIAN_BRAIN_URL` override. Wave-0 hermetic test `tests/test-resolve-brain-key.cjs` (9 scenarios -- env wins / mindrian-env wins over CWD / CWD fallback / not-found / SEC-02 reject / Canon Part 8 grep / getApiKey delegation / brain-client preconditions / FLAG-3 home-default structural assertion) all green; registered in `lib/memory/run-feynman-tests.cjs`. (`lib/core/resolve-brain-key.cjs` [new], `lib/core/brain-client.cjs`, `scripts/session-start`, `skills/brain-connector/SKILL.md`, `commands/setup.md`, `install.sh`, `docs/install/BRAIN-SETUP.md`, `.env.brain.template`, `tests/test-resolve-brain-key.cjs` [new], `lib/memory/run-feynman-tests.cjs`, `lib/memory/security-trifecta.test.cjs`.)
493
+ - **Phase 123 Plan-07 -- single Brain-key resolver + positive session-start status (HARNESS-123-15 + HARNESS-123-16).** Three independent Brain-key lookups (`brain-client.cjs::getApiKey`, `scripts/session-start`'s shell test of `MINDRIAN_BRAIN_KEY`, the `brain-connector` skill's detection order) are collapsed into one source of truth, `lib/core/resolve-brain-key.cjs`. The resolver mirrors `lib/core/active-plugin-root.cjs`'s shape (`{ key, source, available, reason }`) and order (env -> `~/.mindrian.env` -> CWD `.env` -> not-found, the D-31 precedence); SEC-02 POSIX `0o077` permission rejection routes through an explicit `reason` string -- never a silent null. `brain-client.cjs::getApiKey()` is now a one-liner delegating to the resolver (the previous inline 3-path lookup is gone; the docstring is fixed; `Authorization: Bearer` at L218 + L279 and the `BRAIN_REQUEST_TIMEOUT_MS` / `AbortSignal.timeout` / memoized `schema()` / `async function ask` precondition are all upstream of this and untouched). `scripts/session-start`'s Brain block (~L1290-1313) replaces the pre-Plan-7 MCP-centric WARN that tested only the shell env var with a positive 3-case status line: `Brain: HTTP client active (mindrian-brain.onrender.com)` when the key resolves; `Brain: NOT loaded -- permissions too open: ... (run: chmod 600 ~/.mindrian.env)` when SEC-02 rejects; `Brain: not configured (Tier 0)` when nothing is found. The `brain-connector/SKILL.md` Detection section gains a new step 0 (HTTP-path detection via the resolver) and a CLI row in the Tool Names table. `commands/setup.md`'s `~/.mindrian.env` write is now followed by `chmod 600` (SEC-02 fix; no-op on Windows). `install.sh` is annotated -- it does NOT write `~/.mindrian.env` today; if a future code path adds a write, it MUST chmod 600 the file. `docs/install/BRAIN-SETUP.md` and `.env.brain.template` state Bearer-only explicitly and surface the `https://mindrian-os.com/brain-access` request URL + `MINDRIAN_BRAIN_URL` override. Wave-0 hermetic test `tests/test-resolve-brain-key.cjs` (9 scenarios -- env wins / mindrian-env wins over CWD / CWD fallback / not-found / SEC-02 reject / Canon Part 8 grep / getApiKey delegation / brain-client preconditions / FLAG-3 home-default structural assertion) all green; registered in `lib/memory/run-feynman-tests.cjs`. (`lib/core/resolve-brain-key.cjs` [new], `lib/core/brain-client.cjs`, `scripts/session-start`, `skills/brain-connector/SKILL.md`, `commands/setup.md`, `install.sh`, `docs/install/BRAIN-SETUP.md`, `.env.brain.template`, `tests/test-resolve-brain-key.cjs` [new], `lib/memory/run-feynman-tests.cjs`, `lib/memory/security-trifecta.test.cjs`.)
331
494
 
332
495
  ### Fixed
333
496
 
@@ -336,7 +499,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
336
499
  - **`scripts/release.sh:40`'s `IFS='.' read -r MAJOR MINOR PATCH`** mangled pre-release versions (`PATCH=0-beta` from `1.13.0-beta.11`), which is why beta.10 / 11 / 12 were hand-rolled and beta.13 is the first `release.sh`-cut pre-release. Replaced with `semver.inc()` (Plan 123-01).
337
500
  - **`scripts/doctor.cjs:40`'s hardcoded `INSTALL_DIR = ~/.claude/plugins/mindrian-os/`** was the `MODULE_NOT_FOUND` source on marketplace-only installs (the disease that surfaced Bug 7). NEW code (class I + class J + new wire-ins) resolves via `resolveActivePluginRoot()`; `INSTALL_DIR` is preserved for existing class A but no longer the source of truth for new code (Plan 123-03).
338
501
  - **`scripts/session-start:419`'s `~/.mindrian-last-version` write inside the cold-start `else` branch** never fired on a session WITH an active room -- which is why room-sessions read stale (Pitfall 7). The new install-state record block writes it unconditionally as the single writer in earliest steps; the line-419 write is removed; the line-101 read of the PREVIOUS value is preserved for the transition banner (Plan 123-02).
339
- - **`commands/setup.md:145`'s stale URL `mindrianos-jsagirs-projects.vercel.app/brain-access`** -> `mindrianos.vercel.app/brain-access` (Plan 123-05; reaffirmed Plan 123-07).
502
+ - **`commands/setup.md:145`'s stale URL `mindrianos-jsagirs-projects.vercel.app/brain-access`** -> `mindrian-os.com/brain-access` (Plan 123-05; reaffirmed Plan 123-07).
340
503
  - **Brain client CHANGELOG prose softened** -- the client currently calls `mindrian-brain.onrender.com`; `brain.mindrian.ai` is the future host; `MINDRIAN_BRAIN_URL` overrides either (Plan 123-07).
341
504
  - **`scripts/release-beta-smoke.sh`** retired -- hard-pinned to a stale Phase-89.6 artifact `EXPECTED_VERSION="1.11.0-beta.1"`; `doctor --acceptance --pre-tag` supersedes it (Plan 123-04).
342
505
  - **`brain-client.cjs::getApiKey()` precedence** -- was env -> CWD `.env` -> `~/.mindrian.env`; now (via the resolver delegation) env -> `~/.mindrian.env` -> CWD `.env` per D-31. Deliberate: on a maintainer's machine the home file is the canonical key, the CWD file is project-local override (Plan 123-07).
@@ -347,7 +510,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
347
510
  ### Changed
348
511
 
349
512
  - **`data/deployment-surfaces.json`** added -- hand-maintained static manifest; 6 surfaces; reuses the `data/` layout convention from Phase 122 but NOT the generator/`--check` pattern (this file isn't derived from anything; nothing to `--check` it against). Schema extension in Plan-03: optional `path_within_file` field on `exact-value` surfaces points at a JSON sub-field (e.g. `statusLine.command` inside `settings.json`); class-J's `exact-value` check extracts via that path before comparing.
350
- - **`docs/install/BRAIN-SETUP.md`** + **`.env.brain.template`**: state explicitly that auth is `Authorization: Bearer <key>` only (NOT `x-api-key`); surface the `https://mindrianos.vercel.app/brain-access` URL in the no-key fallback (Plan 123-07).
513
+ - **`docs/install/BRAIN-SETUP.md`** + **`.env.brain.template`**: state explicitly that auth is `Authorization: Bearer <key>` only (NOT `x-api-key`); surface the `https://mindrian-os.com/brain-access` URL in the no-key fallback (Plan 123-07).
351
514
  - **`docs/CANON-PHASE-MAP.md`**: Phase 123 mapped under **Part 6** (dog-fooding the install lifecycle -- one record + one manifest + one command + one release script; the plugin's own install state honors the plugin's canon) and **Part 7** (reuse justification -- ~90% of Phase 123 extends shipped code; net-new files are `data/deployment-surfaces.json`, `lib/core/resolve-brain-key.cjs`, `lib/core/cache-prune.cjs`, the per-class fixtures) (Plan 123-06 Task 4).
352
515
  - **`@mindrian_os/cli` -> `@mindrian_os/install` doc/test sweep** -- forward-facing references across `docs/install/PACKAGING-PATHS.md`, `tests/manual/95.6-windows-cold-install-acceptance.md`, `tests/test-release-npm-gate.sh`, `docs/INSTALL-LIFECYCLE-HARNESS.md` (lines 91/104/124), plus older `@mindrian/os` mentions in `[private case archive]`, `docs/UI-UX-CONVERGENCE-2026-05-10/04-REVERSE-SALIENT-INSTALL.md`, `[private tester archive]`, `docs/testers/outbox/2026-05-07-gary-laben-welcome.md`. Historical CHANGELOG entries stay as the historical record. After the sweep, `grep -rln "@mindrian_os/cli" docs/install/ commands/ tests/test-*.sh scripts/release.sh` returns nothing (Plan 123-05).
353
516
 
@@ -2792,7 +2955,7 @@ onboard_steps:
2792
2955
 
2793
2956
  ### Fixed
2794
2957
 
2795
- - **Wiki template empty-artifacts bug.** `/mos:snapshot` exports and other presentation generator outputs were producing sections with `sec.artifacts = []`, so clicking any section in the wiki sidebar showed no article content. The template at `templates/presentation/wiki.html` was designed to consume artifact data the generator at `scripts/generate-presentation.cjs` `collectSections` never populated. Reported by Lawrence Aronhime (lawrence@mindrian.ai) on 2026-04-13 23:23 after he built a same-night workaround on his own machine by injecting artifact content directly into `ROOM_DATA`. The bug had been sitting in `collectSections` since v1.9.6 (2026-04-11) and survived eight subsequent releases (v1.9.7, v1.9.8, v1.9.9, v1.10.0, v1.10.2, v1.10.3, v1.10.4) because nothing touched that file across those eight releases.
2958
+ - **Wiki template empty-artifacts bug.** `/mos:snapshot` exports and other presentation generator outputs were producing sections with `sec.artifacts = []`, so clicking any section in the wiki sidebar showed no article content. The template at `templates/presentation/wiki.html` was designed to consume artifact data the generator at `scripts/generate-presentation.cjs` `collectSections` never populated. Reported by Lawrence Aronhime (lawrence@mindrian-os.com) on 2026-04-13 23:23 after he built a same-night workaround on his own machine by injecting artifact content directly into `ROOM_DATA`. The bug had been sitting in `collectSections` since v1.9.6 (2026-04-11) and survived eight subsequent releases (v1.9.7, v1.9.8, v1.9.9, v1.10.0, v1.10.2, v1.10.3, v1.10.4) because nothing touched that file across those eight releases.
2796
2959
 
2797
2960
  ### Added
2798
2961
 
@@ -2826,7 +2989,7 @@ Upgrade path: standard two-command `/plugin marketplace update` followed by `cla
2826
2989
 
2827
2990
  ### Credit
2828
2991
 
2829
- Bug reported by Lawrence Aronhime (lawrence@mindrian.ai) on 2026-04-13 23:23. Lawrence has been running beta builds since v1.9.x and holds the lawrence@mindrian.ai admin Brain API key issued 2026-03-26. He built a same-night workaround on his own machine by injecting artifact data directly into `ROOM_DATA`, then filed the bug for the rest of the beta cohort. Eight releases shipped between his report and this fix. Thank you, Lawrence.
2992
+ Bug reported by Lawrence Aronhime (lawrence@mindrian-os.com) on 2026-04-13 23:23. Lawrence has been running beta builds since v1.9.x and holds the lawrence@mindrian-os.com admin Brain API key issued 2026-03-26. He built a same-night workaround on his own machine by injecting artifact data directly into `ROOM_DATA`, then filed the bug for the rest of the beta cohort. Eight releases shipped between his report and this fix. Thank you, Lawrence.
2830
2993
 
2831
2994
  ## [1.10.4] - 2026-04-14
2832
2995
 
package/README.md CHANGED
@@ -1,99 +1,80 @@
1
1
  <div align="center">
2
- <img src="https://mindrianos-jsagirs-projects.vercel.app/logo_dark.svg" alt="MindrianOS" width="200" />
2
+ <img src="https://mindrian-os.com/logo_dark.svg" alt="MindrianOS" width="200" />
3
3
 
4
4
  # MindrianOS
5
5
 
6
- **When you are walking through a problem worth solving and you cannot yet name what is missing, MindrianOS is the thinking partner that walks beside you.**
6
+ **Talk to Larry. The room writes itself.**
7
+
8
+ A thinking partner that sits above your AI. You talk through a problem worth solving. Larry finds the real problem before you solve the wrong one, brings the right method at the moment you need it, pushes back when your confidence outruns your evidence, and turns the conversation into a structured room that remembers every decision and catches what you missed.
7
9
 
8
10
  Powered by PWS (Problems Worth Solving), an innovation methodology built and tested through 20 years of teaching by Prof. Lawrence Aronhime.
9
11
  Engineered by Jonathan Sagir.
10
12
 
11
- [![Version](https://img.shields.io/badge/v1.13.0-The_Closed_Loop-1E3A6E)](CHANGELOG.md)
13
+ [![Version](https://img.shields.io/badge/version-1.13.1--beta-1E3A6E)](CHANGELOG.md)
12
14
  [![License](https://img.shields.io/badge/license-BSL_1.1-C8A43C)](LICENSE)
13
15
  [![Works on](https://img.shields.io/badge/CLI_+_Desktop_+_Cowork-2D6B4A)](#three-surfaces)
14
16
 
15
- [Website](https://mindrianos-jsagirs-projects.vercel.app) ·
16
- [Marketplace](https://github.com/jsagir/mindrian-marketplace) ·
17
- [Brain Access](https://mindrianos-jsagirs-projects.vercel.app/brain-access)
17
+ [Website](https://mindrian-os.com) &middot;
18
+ [Marketplace](https://github.com/jsagir/mindrian-marketplace) &middot;
19
+ [Brain Access](https://mindrian-os.com/brain-access)
18
20
  </div>
19
21
 
20
22
  ---
21
23
 
22
24
  ## The answer first
23
25
 
24
- > When you talk to Larry about what you are working on, MindrianOS turns the conversation into a structured room, remembers your decisions across sessions, and surfaces the contradictions you would otherwise miss.
26
+ > You do not operate MindrianOS. You talk to Larry. Larry is the thinking partner; the room is the receipt. Every conversation reframes the problem before you solve it, sequences the right framework for where you are, pushes back when your confidence outruns your evidence, and leaves behind a structured room that remembers every decision so nothing you learned is lost.
25
27
 
26
- You do not learn a tool. You talk. The room takes shape underneath the conversation. Whatever you said yesterday is still working for you today.
28
+ You never learn a tool. You talk. The room takes shape underneath the conversation. Commands exist, but they are internals, and Larry routes you to them when they help. Whatever you said yesterday is still working for you today.
27
29
 
28
30
  ---
29
31
 
30
- ## How it works (in three pieces)
31
-
32
- ### Larry is the thinking partner
33
-
34
- Larry is the AI you talk to. Larry asks the questions that reframe the problem before you try to solve it, suggests the method that fits where you are, and files what you say into your room without making you stop to organize. You do not have to know the framework names. You describe what you are doing. Larry routes you.
35
-
36
- ### The Data Room is your venture made legible
37
-
38
- Every conversation, every meeting, every decision lands in a folder structure organized by venture stage: the problem, the market, the solution, the team, the money, the IP, the meetings, the opportunities. You open it in your file manager. You back it up like any other folder. You own it.
39
-
40
- ### The room surfaces what you cannot see
41
-
42
- Every time you add something new, the system compares it against everything already there. Larry tells you what just changed. What contradicts what. What connects to what. What is now missing. What you stopped checking weeks ago.
32
+ ## Four jobs it does for you
43
33
 
44
- You decide: APPROVE, REJECT (with a reason), or DEFER. The reason becomes part of the room. The next scan is smarter.
34
+ - **Find the problem.** Larry reframes what you are working on before you try to solve it, so you spend your effort on the real problem, not the first one you saw.
35
+ - **Show what you missed.** Every new entry is compared against everything already in the room. Contradictions, gaps, and cross-project connections surface on their own.
36
+ - **Build what you could not alone.** The right framework at the right stage, chained intelligently, across more domains than one mind can hold at once.
37
+ - **Defend what you decided.** Every decision and the reason behind it becomes working memory you can stand behind weeks later.
45
38
 
46
39
  ---
47
40
 
48
- ## What v1.13.0 changed (The Closed Loop)
41
+ ## How it works (three pieces)
49
42
 
50
- Before this release, MindrianOS could file your work and surface intelligence, but the loop did not always close. You would say something, the system would react, and nothing carried forward. v1.13.0 closes the loop:
43
+ ### Larry is the product
51
44
 
52
- - **Larry leads turn one.** The first thing you see is a conversation, not a command menu.
53
- - **Your first sentence becomes a room.** Type a venture sentence, get a 30-second brief and a populated room before you have to commit anything else.
54
- - **Tensions persist across sessions.** Larry remembers what was unresolved and brings it back when relevant.
55
- - **Every conversation produces an artifact.** A first session leaves you with a real room, not an empty wizard.
56
- - **Decisions teach the system.** Your approvals, your rejections, your reasons become part of the room's working memory.
45
+ Larry is the AI you talk to, and the conversation is the whole surface. Larry asks the questions that reframe the problem before you try to solve it, brings the method that fits where you are, and files what you say into your room without making you stop to organize. You do not have to know any framework names. You describe what you are doing. Larry routes you. There is nothing else to learn.
57
46
 
58
- Currently shipping as `v1.13.0-beta.19`. Final `v1.13.0` is imminent.
47
+ ### The room is the receipt
59
48
 
60
- ---
61
-
62
- ## What you do in a session
63
-
64
- Talk. Type a command when you know the shortcut. Let Larry teach you when you do not.
49
+ You talk; the room writes itself. Every conversation, every meeting, every decision lands in a folder structure organized by venture stage: the problem, the market, the solution, the team, the money, the IP, the meetings, the opportunities. You open it in your file manager. You back it up like any other folder. You own it. You never filed a thing.
65
50
 
66
- ```bash
67
- /mos:new-project # tell Larry what you are exploring
68
- /mos:beautiful-question # reframe the problem before solving it
69
- /mos:analyze-needs # who has this problem, how badly, what they have tried
70
- /mos:lean-canvas # one-page business model
71
- /mos:file-meeting # paste a transcript, Larry files it
72
- /mos:opportunities # what grants match this room right now
73
- /mos:query "what is the weakest assumption in my financial model?"
74
- /mos:grade # honest assessment against real ventures
75
- ```
51
+ ### The room surfaces what you cannot see
76
52
 
77
- You do not have to memorize these. Describe what you are trying to do. Larry routes you.
53
+ Every time you add something new, the system compares it against everything already there. Larry tells you what just changed, what contradicts what, what connects to what, and what is now missing. You decide: APPROVE, REJECT (with a reason), or DEFER. The reason becomes part of the room. The next scan is smarter.
78
54
 
79
55
  ---
80
56
 
81
- ## Why the room compounds
57
+ ## Why not just talk to Claude, ChatGPT, or Gemini directly?
82
58
 
83
- Most tools get messier the more you put in. Search ranks worse. Folders bloat. The AI forgets what you told it last session. MindrianOS goes the other way.
59
+ You can. MindrianOS is not instead of them. It is the layer that makes one of them remember, judge, and hold you to your own reasoning.
84
60
 
85
- The mechanism is plain. Everything you say to Larry, every meeting you file, every decision you make and reason you give becomes part of your room. The room is searchable, structured, and remembered. Every NEW entry compares against everything already there.
61
+ A raw AI is brilliant for one turn and forgets the next. Ask it the same venture question next week and it relearns you from scratch. It knows every framework but not which one you need right now. And it is agreeable: it will help you build a beautiful deck on a false premise, because it optimizes for a helpful answer, not a true one.
86
62
 
87
- Day one, you have a folder.
63
+ MindrianOS adds the four things a raw model structurally cannot be:
88
64
 
89
- Day thirty, you have a folder that catches the contradiction between yesterday's strategy call and last week's customer interview, because nothing about either was forgotten. Larry brings back the assumption you made in week two when you are about to make a decision in week eight that depends on it. The room finds the connection between two meetings that happened a month apart that nobody remembers being related.
65
+ - **It remembers.** Your venture lives in a room that persists across every session. The contradiction you found three weeks ago is still there, still checking today's input.
66
+ - **It knows when.** Not just which framework exists, but which one fits this stage and this problem, chained in the right order, calibrated from decades of teaching.
67
+ - **It pushes back.** It blocks you when the evidence is thin and surfaces the conflict between your pricing and your market. A co-founder tells you when you are wrong. A chatbot tells you that you are brilliant.
68
+ - **It keeps your data yours.** The teaching that travels is generic methodology. Your specifics never leave your machine. You get smarter-from-the-world intelligence without becoming the product.
90
69
 
91
- Nothing forgets. Everything compares. Your own past work works for you.
70
+ The short version: a raw AI is the engine. MindrianOS is the operating system around it. For a one-off question, use the engine. For a venture you carry for months, you want the OS.
92
71
 
93
72
  ---
94
73
 
95
74
  ## Install
96
75
 
76
+ Built for people who have never opened a terminal. Full walkthrough at [the install guide](https://mindrian-os.com/docs/install).
77
+
97
78
  ### npm (one line, recommended)
98
79
 
99
80
  ```bash
@@ -126,9 +107,42 @@ A note on install prompts: Claude Code asks you to approve each shell command. 1
126
107
 
127
108
  ---
128
109
 
110
+ ## What you do in a session
111
+
112
+ Talk. That is the whole interface. You describe what you are trying to do, and Larry routes you.
113
+
114
+ The commands below are internals. You never have to memorize them or type them. Larry reaches for them on your behalf. They are here for the times you already know the shortcut and want it.
115
+
116
+ ```bash
117
+ /mos:new-project # tell Larry what you are exploring
118
+ /mos:beautiful-question # reframe the problem before solving it
119
+ /mos:analyze-needs # who has this problem, how badly, what they have tried
120
+ /mos:lean-canvas # one-page business model
121
+ /mos:file-meeting # paste a transcript, Larry files it
122
+ /mos:opportunities # what grants match this room right now
123
+ /mos:graph "what is the weakest assumption in my financial model?"
124
+ /mos:grade # honest assessment against real ventures
125
+ ```
126
+
127
+ If you do not know which one to run, that is the normal case. Just talk.
128
+
129
+ ---
130
+
131
+ ## Why the room compounds
132
+
133
+ Most tools get messier the more you put in. Search ranks worse. Folders bloat. The AI forgets what you told it last session. MindrianOS goes the other way.
134
+
135
+ Think of Larry as a thinking partner who also keeps the minutes, and reads them back to you when this week contradicts last week. Everything you say, every meeting you file, every decision you make and reason you give becomes part of your room. The room is searchable, structured, and remembered, and every new entry compares against everything already there.
136
+
137
+ Day one, you have a folder. Day thirty, you have a folder that catches the contradiction between yesterday's strategy call and last week's customer interview, brings back the assumption you made in week two when you are about to make a decision in week eight that depends on it, and finds the connection between two meetings a month apart that nobody remembers being related.
138
+
139
+ Nothing forgets. Everything compares. Your own past work works for you.
140
+
141
+ ---
142
+
129
143
  ## Three surfaces
130
144
 
131
- MindrianOS works wherever Claude works.
145
+ MindrianOS works wherever Claude works. Same Larry, same room, every surface.
132
146
 
133
147
  | Surface | What it gives you |
134
148
  |---------|-------------------|
@@ -138,6 +152,22 @@ MindrianOS works wherever Claude works.
138
152
 
139
153
  ---
140
154
 
155
+ ## The Brain (optional)
156
+
157
+ The Brain is a shared teaching graph that connects your findings across projects. It holds two stores: one for connections, one for meanings. Connecting it makes Larry sharper. Not connecting it is fine; the pedagogy is intrinsic to Larry, so the system still teaches you.
158
+
159
+ The Brain never sees your room. Brain queries carry methodology questions only, never your notes, never your decisions, never your meetings.
160
+
161
+ Request access: [mindrian-os.com/brain-access](https://mindrian-os.com/brain-access)
162
+
163
+ ---
164
+
165
+ ## Pricing
166
+
167
+ Free plugin. It requires a paid Claude plan (Claude Pro, $20/mo, or higher) because it runs on top of Claude. The Brain is an optional add-on.
168
+
169
+ ---
170
+
141
171
  ## The privacy line
142
172
 
143
173
  MindrianOS reads your workspace and writes only to your rooms (default: `~/MindrianRooms/`) and to session state (`./.mindrian/`). It does not push anything to the Brain. Brain queries carry methodology questions only, never your notes, never your decisions, never your meetings.
@@ -150,21 +180,23 @@ For zero permission prompts during a session: `claude --dangerously-skip-permiss
150
180
 
151
181
  PWS (Problems Worth Solving) is not a checklist. It is a way of thinking about ventures as wicked problems that need to be reframed before they can be solved, and that demand a working memory because nobody can hold the whole thing in their head.
152
182
 
153
- Larry is the personality that delivers PWS in your terminal. The teaching is intrinsic. You do not have to know the framework names. Larry asks the question, suggests the move, shows the chain. You decide.
183
+ Larry is the personality that delivers PWS in your terminal, and the teaching is intrinsic. You do not have to know the framework names. Larry asks the question, suggests the move, shows the chain. You decide.
154
184
 
155
185
  ---
156
186
 
157
187
  ## Links
158
188
 
159
- - **Website**: [mindrianos-jsagirs-projects.vercel.app](https://mindrianos-jsagirs-projects.vercel.app)
189
+ - **Website**: [mindrian-os.com](https://mindrian-os.com)
160
190
  - **Marketplace**: [github.com/jsagir/mindrian-marketplace](https://github.com/jsagir/mindrian-marketplace)
161
191
  - **Changelog**: [CHANGELOG.md](CHANGELOG.md)
162
- - **Brain Access**: [Request API Key](https://mindrianos-jsagirs-projects.vercel.app/brain-access)
192
+ - **Brain Access**: [Request API Key](https://mindrian-os.com/brain-access)
163
193
  - **PWS, Prof. Lawrence Aronhime**: [LinkedIn](https://www.linkedin.com/in/lawrence-aronhime-8363894/)
164
194
  - **Jonathan Sagir**: [LinkedIn](https://www.linkedin.com/in/jonathansagir/)
165
195
 
166
196
  ---
167
197
 
198
+ Install MindrianOS. Start thinking with Larry.
199
+
168
200
  ## License
169
201
 
170
202
  Source-available (BSL 1.1), not open source. Copyright Jonathan Sagir and PWS / Mindrian.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mindrian_os/cli",
3
- "version": "1.13.1-beta.4",
4
- "description": "Install MindrianOS into Claude Code with one command -- `npx @mindrian_os/install`. Ships the MindrianOS plugin (Larry + PWS methodology + Data Room) plus a setup/diagnostics CLI (install/doctor/update).",
3
+ "version": "1.13.1",
4
+ "description": "Install MindrianOS into Claude Code with one command -- `npx @mindrian_os/cli`. Ships the MindrianOS plugin (Larry + PWS methodology + Data Room) plus a setup/diagnostics CLI (install/doctor/update).",
5
5
  "scripts": {
6
6
  "mcp": "node bin/mindrian-mcp-server.cjs",
7
7
  "parity": "node lib/parity/check-parity.cjs",
@@ -24,6 +24,7 @@
24
24
  "@modelcontextprotocol/sdk": "^1.29.0",
25
25
  "asciichart": "^1.5.25",
26
26
  "chokidar": "^4.0.3",
27
+ "chrono-node": "^2.9.1",
27
28
  "express": "^5.1.0",
28
29
  "flexsearch": "^0.7.43",
29
30
  "gray-matter": "^4.0.3",