@mindrian_os/cli 1.13.0 → 1.13.1-beta.12

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 +102 -5
  2. package/README.md +79 -64
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,100 @@
1
+ ## [1.13.1-beta.12] - 2026-06-09
2
+
3
+ ### Added
4
+ -
5
+
6
+ ## [1.13.1-beta.10] - 2026-06-08
7
+
8
+ 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.
9
+
10
+ ### Added
11
+ - 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.
12
+ - /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.
13
+ - 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.
14
+ - 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.
15
+ - 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).
16
+ - 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".
17
+
18
+ ### Changed
19
+ - 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.
20
+
21
+ ### Fixed
22
+ - 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).
23
+
24
+ ## [1.13.1-beta.8] - 2026-06-05
25
+
26
+ 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).
27
+
28
+ ### Added
29
+ - 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).
30
+ - 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.
31
+ - 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.
32
+ - Sentinel and scout hardening (Phase 140).
33
+
34
+ ### Fixed
35
+ - BUG-01: build-graph-from-sqlite line-53 ReferenceError (lazygraphPath -> roomDbPath); the graph export no longer crashes.
36
+
37
+ ## [1.13.1-beta.7] - 2026-06-05
38
+
39
+ 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.
40
+
41
+ ### Added
42
+ - **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).
43
+ - **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.
44
+ - **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.
45
+ - **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.
46
+
47
+ ### Changed
48
+ - **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.
49
+
50
+ ## [1.13.1-beta.6] - 2026-06-05
51
+
52
+ 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).
53
+
54
+ ### Fixed
55
+ - **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.
56
+ - **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.
57
+ - **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.
58
+ - **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.
59
+ - **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.
60
+
61
+ ### Changed
62
+ - **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.
63
+ - **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.
64
+
65
+ ### Release-gate note (57x claim)
66
+ - **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.
67
+
68
+ ## [1.13.1-beta.4] - 2026-06-04
69
+
70
+ 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).
71
+
72
+ ### Fixed (S1 -- doctor WHERE fix + OBS-2 closure)
73
+ - **Doctor no longer mis-scaffolds room artifacts in non-room directories.** Doctor used to guess its target by walking up from `process.cwd()`; run from `~/dev/<repo>` or `~/decks` it found no room and either no-oped or spuriously flagged, and a residual write-ordering gap (OBS-2) let `.mindrian/` + `heal-log.json` land in a rejected target before the guards fired. Fix: one single resolver `lib/core/resolve-umbilical-target.cjs` (precedence `.umbilical` cord -> `.room-root` sentinel -> registry.active) now backs doctor's only cwd-derived target and SKIPS when it resolves to null, and the heal zero-write floor from a non-room cwd is locked by regression test (zero room-artifact writes from a non-room dir). The codebase has been bitten twice by N-independent target guessers; this resolver is one module from day one and all doctor target-resolution routes through it.
74
+
75
+ ### Added (S2 -- accumulative engine skeleton)
76
+ - **Doctor's frozen Phase-95 class roster becomes a forward-healing engine.** A hand-maintained module registry (`data/doctor-modules.json`), doctor's OWN never-regressing applied-through watermark (`~/.mindrian/doctor-applied.json`), and a semver selector (`runAccumulativeEngine` in `scripts/doctor.cjs`) that runs each registered module whose `introduced_version` falls in the `(applied_through, running]` window, idempotently. From this release forward every new Mindrian version can register its own health/migration module and any user on any prior version is healed forward when they run doctor. Doctor keeps its own watermark and never depends on `~/.mindrian-last-version` (session-start overwrites that early). Generalizes the proven `install-state.cjs::migrateIfNeeded` + `deployment-surfaces.json` patterns (Canon Part 7 reuse-before-build); re-running is a no-op.
77
+
78
+ ### Added (S3 -- Umbilical Cord as module #1)
79
+ - **A `.umbilical` marker in a non-room project projects exactly one `AFFILIATED_WITH` edge into the corresponding room.db.** Cords are authoritative at the registry layer and projected into each room.db as LOCAL edges (Canon Part 8: no raw cross-room edges, zero Brain egress). The first registered accumulative-engine module (`lib/core/doctor/umbilical-module.cjs`) reads the marker, projects the edge via the reused `edges.cjs::writeEdge` chokepoint (idempotent UPSERT), and integrity-checks cord-marker bidirectionality (orphan / removed-marker / unprojected). `--fix` SUGGESTS orphan cords for human confirmation but never auto-creates one; edge properties are enum-only (`relation`, `born`) and freeform `note:` text never reaches the edge.
80
+
81
+ ### Added (S4 -- release wiring + module-registration gate)
82
+ - **`release.sh` Step 6.6a verifies the module registry before the tag lands.** For every entry in `data/doctor-modules.json` it asserts the runner file exists, `introduced_version` is valid semver, and `introduced_version <= NEW_VERSION` (a module cannot claim to be introduced in a future version); HARD ABORT with the same rollback semantics as the surrounding Step 6.6 acceptance gate. The umbilical module's `introduced_version` is reconciled to `1.13.1-beta.4` (the exact version this hotfix ships), so the selector's window math ties the module to the version that introduced it. `tests/test-139-acceptance.cjs` runs the whole S1-S4 chain green in one shot as the phase release gate.
83
+
84
+ ### Changed
85
+ - **`ALLOWED_EDGE_TYPES` gains `AFFILIATED_WITH`** (additive; the floor test asserts all prior members are preserved and the set stays frozen).
86
+
87
+ ## [1.13.1-beta.2] - 2026-06-02
88
+
89
+ ### Fixed (release: marketplace catalog advertised the dev next-bump)
90
+ - **Users installing right after a finalize got the dev pre-release, not the stable.** `release.sh` Commit B (Step 7.5) advanced the marketplace catalog `marketplace.json.version` to the dev next-bump, so `claude plugin install mos@mindrian-marketplace` labeled users `1.13.1-beta.1` minutes after the `1.13.0` finalize (even though `source.ref=v1.13.0` cloned the stable code). Reported live by a tester. Fix: Commit B no longer touches `marketplace.json` -- the catalog stays at the released `NEW_VERSION` with `source.ref=vNEW_VERSION`; only the plugin repo's `plugin.json`/`package.json` advance to the next dev version. Immediate catalog correction (1.13.1-beta.1 -> 1.13.0) pushed + verified (fresh install lands 1.13.0). RULE 5a added to the ceremony ruling system; RCA `marketplace-catalog-advertises-dev-next-bump`.
91
+
92
+ ### Fixed (doctor: topology-blind install-health on marketplace-cache)
93
+ - **`/mos:doctor --fix` no longer cries "cannot read state" and the post-update activator no longer false-fails on a healthy marketplace-cache install.** `checkInstallVersion()` returned `missing` when the legacy `~/.claude/plugins/mindrian-os/` dir was absent (correctly absent under marketplace-cache topology). Now topology-aware: reads the active cache root's plugin.json and reports healthy. One fix clears both the doctor warning and the activator's "activation failed: doctor exit 0". Regression test a.4; RCA `doctor-class-a-cannot-read-state-topology-blind`.
94
+
95
+ ### Added
96
+ -
97
+
1
98
  ## [1.13.0] - 2026-06-02
2
99
 
3
100
  ### Added
@@ -292,7 +389,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
292
389
 
293
390
  - **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].)
294
391
 
295
- - **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`.)
392
+ - **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`.)
296
393
 
297
394
  ### Fixed
298
395
 
@@ -301,7 +398,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
301
398
  - **`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).
302
399
  - **`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).
303
400
  - **`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).
304
- - **`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).
401
+ - **`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).
305
402
  - **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).
306
403
  - **`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).
307
404
  - **`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).
@@ -312,7 +409,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
312
409
  ### Changed
313
410
 
314
411
  - **`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.
315
- - **`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).
412
+ - **`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).
316
413
  - **`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).
317
414
  - **`@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).
318
415
 
@@ -2757,7 +2854,7 @@ onboard_steps:
2757
2854
 
2758
2855
  ### Fixed
2759
2856
 
2760
- - **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.
2857
+ - **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.
2761
2858
 
2762
2859
  ### Added
2763
2860
 
@@ -2791,7 +2888,7 @@ Upgrade path: standard two-command `/plugin marketplace update` followed by `cla
2791
2888
 
2792
2889
  ### Credit
2793
2890
 
2794
- 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.
2891
+ 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.
2795
2892
 
2796
2893
  ## [1.10.4] - 2026-04-14
2797
2894
 
package/README.md CHANGED
@@ -1,99 +1,63 @@
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.
25
-
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.
27
-
28
- ---
29
-
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.
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.
39
27
 
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.
43
-
44
- You decide: APPROVE, REJECT (with a reason), or DEFER. The reason becomes part of the room. The next scan is smarter.
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.
45
29
 
46
30
  ---
47
31
 
48
- ## What v1.13.0 changed (The Closed Loop)
49
-
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:
51
-
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.
32
+ ## Four jobs it does for you
57
33
 
58
- Currently shipping as `v1.13.0-beta.19`. Final `v1.13.0` is imminent.
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.
59
38
 
60
39
  ---
61
40
 
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.
65
-
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
- ```
76
-
77
- You do not have to memorize these. Describe what you are trying to do. Larry routes you.
41
+ ## How it works (three pieces)
78
42
 
79
- ---
43
+ ### Larry is the product
80
44
 
81
- ## Why the room compounds
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.
82
46
 
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.
47
+ ### The room is the receipt
84
48
 
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.
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.
86
50
 
87
- Day one, you have a folder.
51
+ ### The room surfaces what you cannot see
88
52
 
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.
90
-
91
- Nothing forgets. Everything compares. Your own past work works for 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.
92
54
 
93
55
  ---
94
56
 
95
57
  ## Install
96
58
 
59
+ Built for people who have never opened a terminal. Full walkthrough at [the install guide](https://mindrian-os.com/docs/install).
60
+
97
61
  ### npm (one line, recommended)
98
62
 
99
63
  ```bash
@@ -126,9 +90,42 @@ A note on install prompts: Claude Code asks you to approve each shell command. 1
126
90
 
127
91
  ---
128
92
 
93
+ ## What you do in a session
94
+
95
+ Talk. That is the whole interface. You describe what you are trying to do, and Larry routes you.
96
+
97
+ 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.
98
+
99
+ ```bash
100
+ /mos:new-project # tell Larry what you are exploring
101
+ /mos:beautiful-question # reframe the problem before solving it
102
+ /mos:analyze-needs # who has this problem, how badly, what they have tried
103
+ /mos:lean-canvas # one-page business model
104
+ /mos:file-meeting # paste a transcript, Larry files it
105
+ /mos:opportunities # what grants match this room right now
106
+ /mos:graph "what is the weakest assumption in my financial model?"
107
+ /mos:grade # honest assessment against real ventures
108
+ ```
109
+
110
+ If you do not know which one to run, that is the normal case. Just talk.
111
+
112
+ ---
113
+
114
+ ## Why the room compounds
115
+
116
+ 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.
117
+
118
+ 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.
119
+
120
+ 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.
121
+
122
+ Nothing forgets. Everything compares. Your own past work works for you.
123
+
124
+ ---
125
+
129
126
  ## Three surfaces
130
127
 
131
- MindrianOS works wherever Claude works.
128
+ MindrianOS works wherever Claude works. Same Larry, same room, every surface.
132
129
 
133
130
  | Surface | What it gives you |
134
131
  |---------|-------------------|
@@ -138,6 +135,22 @@ MindrianOS works wherever Claude works.
138
135
 
139
136
  ---
140
137
 
138
+ ## The Brain (optional)
139
+
140
+ 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.
141
+
142
+ The Brain never sees your room. Brain queries carry methodology questions only, never your notes, never your decisions, never your meetings.
143
+
144
+ Request access: [mindrian-os.com/brain-access](https://mindrian-os.com/brain-access)
145
+
146
+ ---
147
+
148
+ ## Pricing
149
+
150
+ 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.
151
+
152
+ ---
153
+
141
154
  ## The privacy line
142
155
 
143
156
  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 +163,23 @@ For zero permission prompts during a session: `claude --dangerously-skip-permiss
150
163
 
151
164
  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
165
 
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.
166
+ 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
167
 
155
168
  ---
156
169
 
157
170
  ## Links
158
171
 
159
- - **Website**: [mindrianos-jsagirs-projects.vercel.app](https://mindrianos-jsagirs-projects.vercel.app)
172
+ - **Website**: [mindrian-os.com](https://mindrian-os.com)
160
173
  - **Marketplace**: [github.com/jsagir/mindrian-marketplace](https://github.com/jsagir/mindrian-marketplace)
161
174
  - **Changelog**: [CHANGELOG.md](CHANGELOG.md)
162
- - **Brain Access**: [Request API Key](https://mindrianos-jsagirs-projects.vercel.app/brain-access)
175
+ - **Brain Access**: [Request API Key](https://mindrian-os.com/brain-access)
163
176
  - **PWS, Prof. Lawrence Aronhime**: [LinkedIn](https://www.linkedin.com/in/lawrence-aronhime-8363894/)
164
177
  - **Jonathan Sagir**: [LinkedIn](https://www.linkedin.com/in/jonathansagir/)
165
178
 
166
179
  ---
167
180
 
181
+ Install MindrianOS. Start thinking with Larry.
182
+
168
183
  ## License
169
184
 
170
185
  Source-available (BSL 1.1), not open source. Copyright Jonathan Sagir and PWS / Mindrian.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindrian_os/cli",
3
- "version": "1.13.0",
3
+ "version": "1.13.1-beta.12",
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).",
5
5
  "scripts": {
6
6
  "mcp": "node bin/mindrian-mcp-server.cjs",