@mindrian_os/cli 1.15.3-beta.46 → 1.15.3-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +137 -0
- package/README.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,140 @@
|
|
|
1
|
+
## [1.15.3-beta.50] - 2026-07-28
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **A doctor check that catches a Data Room whose graph never learned how the ideas relate,
|
|
5
|
+
and an automatic repair for the rooms already in that state (Phase 233, RCA items 4c/4d).**
|
|
6
|
+
Two things live inside `room.db`: `BELONGS_TO` edges, which say which artifact sits in which
|
|
7
|
+
section (a filing cabinet), and cascade edges (INFORMS, CONTRADICTS, CONVERGES, INVALIDATES,
|
|
8
|
+
ENABLES, REFINES, ROOT_CAUSES), which say how the ideas actually relate (the part that makes
|
|
9
|
+
the room think). Before Phase 224-02 shipped on 2026-07-23, a failed derivation quietly
|
|
10
|
+
deleted its own retry signal, so a room could end up with the first and never the second and
|
|
11
|
+
nothing anywhere would say so. Phase 224-02 stopped that happening again, but it was
|
|
12
|
+
forward-only: roughly 16 live rooms were already in that state and stayed there. This release
|
|
13
|
+
closes both halves. New `graph-derive-health` doctor class (`/mos:doctor
|
|
14
|
+
--graph-derive-health`, or add `--cascade-rooms` to sweep every room) reports FAIL on exactly
|
|
15
|
+
that shape and WARN on a derive queue stuck past three days or a recorded failure log. New
|
|
16
|
+
`--heal-room` flag re-enqueues every affected room; it is the literal flag the
|
|
17
|
+
v1.13.0-beta.16 rename table has pointed at since before it existed, made real here for the
|
|
18
|
+
first time. And a one-time `graph-derive-heal-retrofit` module repairs already-damaged rooms
|
|
19
|
+
by itself the first time doctor runs after the update, with no flag to discover and nothing
|
|
20
|
+
to opt into, because a user should not have to know their graph was damaged in order to get
|
|
21
|
+
it fixed. Both share ONE detection function, so the check and the repair can never drift
|
|
22
|
+
apart. The heal restores the retry signal; the real edges land the next time an in-session
|
|
23
|
+
derive runs. Tri-Polar: CLI gets the full report, Desktop and Cowork get a one-sentence
|
|
24
|
+
re-derive nudge on the existing SessionStart install-drift slot rather than a raw table.
|
|
25
|
+
Canon Part 8: every new path is a read-only local `room.db` read plus a local JSON queue
|
|
26
|
+
write, zero network and zero Brain. Ground-truth tested (20 scenarios) against real `room.db`
|
|
27
|
+
files and real queue files read back off disk, never a mocked return value.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- **Your room's discovery engine was ranking its own backup files as its top insights, and
|
|
31
|
+
then throwing every result away (Phase 233, RCA Section 9 Defects #4/#5).** The HSI pass is
|
|
32
|
+
the part that reads your artifacts and says "these two distant pieces are secretly related".
|
|
33
|
+
It walks your room looking for content, and every other walker in the codebase was taught in
|
|
34
|
+
Phase 200 to read one shared list of folders to ignore. This one walker was never migrated,
|
|
35
|
+
so it kept a private copy that had gone stale: it never learned to skip `.snapshots`
|
|
36
|
+
(historical state dumps of your own room) or `sub-rooms` (nested rooms that carry their own
|
|
37
|
+
graph). The result on a real room: 207 files scored, and all twenty of its "top discoveries"
|
|
38
|
+
were near-identical backup copies of each other. Then the edge writer correctly refused every
|
|
39
|
+
one of them, because backup files are not artifacts in your graph, and wrote zero edges. A
|
|
40
|
+
full expensive pass, a confident report, and nothing to show for it. Now `compute-hsi.py`
|
|
41
|
+
reads the same shared list as everything else (so this class of drift cannot recur), and a
|
|
42
|
+
new `--scope-to-nodes` mode scores only artifacts that actually exist in your graph, which is
|
|
43
|
+
both cheaper and the only set that can produce an edge.
|
|
44
|
+
- **Healing a damaged graph now runs its four stages in the one order that works, and the last
|
|
45
|
+
stage stopped deleting the work of the third (Phase 233).** Repairing a room is not one
|
|
46
|
+
action, it is four, and each one eats what the previous one produced: index every artifact as
|
|
47
|
+
a node, score similarity across those nodes, write the semantic edges, then run the
|
|
48
|
+
generative tier. Run them out of order and every stage reports success while producing
|
|
49
|
+
nothing. New `node scripts/graph-heal-pipeline.cjs <room>` runs all four in the mandated
|
|
50
|
+
order, reusing each existing implementation unchanged. Running it live on the room from the
|
|
51
|
+
original investigation exposed one more instance of the same bug class this whole phase is
|
|
52
|
+
about: the fourth stage opened by clearing and rebuilding the graph, which deleted the twenty
|
|
53
|
+
semantic edges the third stage had written seconds earlier. The pipeline printed "wrote 20
|
|
54
|
+
connection edges" into a room that ended up holding none. The rebuild is now suppressed when
|
|
55
|
+
the caller already indexed the room, and that room finished the run with 61 artifact nodes,
|
|
56
|
+
20 semantic edges and 47 typed relationship edges, up from zero. Every other caller of the
|
|
57
|
+
backfill is byte-unchanged. A missing Python or embedding library degrades exactly the two
|
|
58
|
+
stages that need them and never the other two. Canon Part 8: local only, zero network, zero
|
|
59
|
+
Brain.
|
|
60
|
+
- **The graph derivation engine could quietly dial a dead account instead of scoring your
|
|
61
|
+
work locally (Phase 233, RCA items 4b/4e).** `runDerivation` is the composer that turns a
|
|
62
|
+
pair of your artifacts into a typed relationship edge. It takes the scoring function as an
|
|
63
|
+
argument, and until now, if a caller forgot to pass one, it silently fell back to a hosted
|
|
64
|
+
Anthropic API call. That fallback account has been out of credit for months: a live probe
|
|
65
|
+
returned `400 credit balance is too low`. So "forgot to pass the scorer" did not look like a
|
|
66
|
+
mistake at the point it was made; it looked like working code that failed later, over the
|
|
67
|
+
network, for a reason that had nothing to do with the actual bug. That fallback is now gated.
|
|
68
|
+
Omitting the scorer throws `deriveFn_required_no_hosted_default` immediately, before the room
|
|
69
|
+
database is even opened, and the error names the local scorer to use instead. Nothing shipped
|
|
70
|
+
is affected: every real caller already passes one. An operator who genuinely wants the hosted
|
|
71
|
+
path can still have it by setting `MINDRIAN_ALLOW_HOSTED_DERIVE=1` with a funded
|
|
72
|
+
`ANTHROPIC_API_KEY`, and gets byte-identical behavior to before. Gated, not deleted. Also
|
|
73
|
+
fixed: the background drain's header comment still claimed it "CLEARS the drained entry"
|
|
74
|
+
after every pass, which stopped being true when Phase 224-02 made failed entries survive and
|
|
75
|
+
retry. It now states what actually happens, plus the real division of labor: the background
|
|
76
|
+
pass enqueues, preserves on failure, and scores locally, while in-session `/mos:graph
|
|
77
|
+
--derive` is the wider net that also reaches rooms the background pass structurally cannot
|
|
78
|
+
see. Both default to the same local score-based scorer, and that is no longer a claim in a
|
|
79
|
+
comment: a new regression test swaps the shared scorer for a recorder, runs both paths over
|
|
80
|
+
two identical rooms, and compares the edges that land on disk.
|
|
81
|
+
- **`orchestration rooms-open` reported a confirmation-shaped success while never switching
|
|
82
|
+
the active room.** Live-reproduced 2026-07-22: the call returned a full "Room State" payload
|
|
83
|
+
footed with the correct target room, yet `room-registry get-active` still returned the
|
|
84
|
+
previous room and the next Write was blocked with "Active room is <previous>". Root cause:
|
|
85
|
+
`rooms-open` was a DECLARED-BUT-UNIMPLEMENTED command. It passed Zod validation via its
|
|
86
|
+
membership in `ORCHESTRATION_COMMANDS`, matched no handler, and fell through to a generic
|
|
87
|
+
reference-echo fallback shared by 18 of the 22 orchestration commands. That fallback built
|
|
88
|
+
its response from `commands/rooms.md` read off disk, STATE.md from the boot-frozen `roomDir`
|
|
89
|
+
closure (which is why the payload showed an unrelated room's content), and a verbatim echo of
|
|
90
|
+
the caller's own `room` argument -- then appended "Room operation complete". No byte of the
|
|
91
|
+
response derived from an operation, because none was attempted: before this fix, zero product
|
|
92
|
+
`.cjs` code anywhere called `room-registry set-active`, so the MCP surface advertised
|
|
93
|
+
multi-room management while having no room-switch capability at all (worst on Desktop and
|
|
94
|
+
Cowork, which have no shell fallback). Fixed with a new `lib/core/room-open.cjs` chokepoint
|
|
95
|
+
that wraps the one authoritative writer (Canon Part 7) and gates `ok:true` behind a post-write
|
|
96
|
+
`get-active` read-back, so a success-shaped payload is now structurally impossible unless the
|
|
97
|
+
switch actually landed; it also writes the per-session binding so `write-scope-check.cjs`
|
|
98
|
+
authorizes the session without depending on the raceable global field, and it preserves the
|
|
99
|
+
`commands/rooms.md` Step 2 human gate for reopening an archived room. Structurally, the same
|
|
100
|
+
fallback no longer lets any state-mutating orchestration command claim completion it cannot
|
|
101
|
+
back up: `rooms-new`, `rooms-close`, and `rooms-archive` now carry an explicit NOT EXECUTED
|
|
102
|
+
banner. 10 hermetic regression tests assert registry ground truth, not response shape.
|
|
103
|
+
|
|
104
|
+
## [1.15.3-beta.48] - 2026-07-26
|
|
105
|
+
|
|
106
|
+
### Added
|
|
107
|
+
- **Room-graph density read (Phase 232.1).** `/mos:doctor` and `room_state status`/`get-state`
|
|
108
|
+
now self-report node/edge counts per `room.db`, read exclusively through a new read-only
|
|
109
|
+
`navigation.cjs` door (`openRoomDbReadOnlyForCaller`) -- never the mutating door, never a
|
|
110
|
+
direct `room.db` open. Closes SEED-074's own "suggested first move"
|
|
111
|
+
(`.planning/seeds/SEED-074-local-graph-read-layer-lacks-salience-and-query-time-joins.md`):
|
|
112
|
+
the seed's actual PageRank/Louvain/query-time-join target stays gated exactly as written;
|
|
113
|
+
this only makes its own trigger condition (measured room.db density) self-reported instead
|
|
114
|
+
of something a human has to remember to check by hand. No output string anywhere claims a
|
|
115
|
+
room graph is dense, at-risk, or healthy (hard guard, grep-verified). Goal-backward
|
|
116
|
+
verification PASS, 6/6 must-haves (`232.1-VERIFICATION.md`).
|
|
117
|
+
- Local reified-claim `ContradictionEvent` primitive (quick task 260725-9ca), with a hermetic
|
|
118
|
+
acceptance test.
|
|
119
|
+
|
|
120
|
+
### Fixed
|
|
121
|
+
- **`room_bind` could report `ok:true` while a sibling MCP read tool silently resolved a
|
|
122
|
+
stale, unrelated room.** Root cause: 20 of 21 MCP tool call sites were missing the
|
|
123
|
+
`CLAUDE_CODE_SESSION_ID` stdio fallback that `room_bind` itself already had, so a
|
|
124
|
+
session-id mismatch between the bind call and a later read call could bind one room but
|
|
125
|
+
read another without ever surfacing an error. Fixed via one shared
|
|
126
|
+
`resolveEffectiveSessionId` helper, wired into all 21 sites; live-reproduced, then closed,
|
|
127
|
+
tests green. Full reproduction and root cause also filed in the `rethinking-mindrianos`
|
|
128
|
+
room per this repo's dev-research compositing rule.
|
|
129
|
+
- **Phase 232.1's own room-graph density census could silently drop a room that used the
|
|
130
|
+
`abs_path` registry field instead of `path`,** undermining the one thing the census exists
|
|
131
|
+
to be accurate about. `resolveRoomPath` now checks `abs_path` first, `path` as fallback,
|
|
132
|
+
matching the precedence every other production call site in this codebase already honors;
|
|
133
|
+
pinned by a mutation-verified regression test (reverted, confirmed red, restored, confirmed
|
|
134
|
+
green). The identical gap in the earlier, already-shipped `cascade-rooms-module.cjs` this
|
|
135
|
+
was copied from is left alone -- out of this phase's scope, tracked separately as
|
|
136
|
+
low-severity follow-up debt.
|
|
137
|
+
|
|
1
138
|
## [1.15.3-beta.46] - 2026-07-23
|
|
2
139
|
|
|
3
140
|
### Added
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
Powered by PWS (Problems Worth Solving), an innovation methodology built and tested through 20 years of teaching by Prof. Lawrence Aronhime.
|
|
11
11
|
Engineered by Jonathan Sagir.
|
|
12
12
|
|
|
13
|
-
[](CHANGELOG.md)
|
|
14
14
|
[](LICENSE)
|
|
15
15
|
[](#three-surfaces)
|
|
16
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindrian_os/cli",
|
|
3
|
-
"version": "1.15.3-beta.
|
|
3
|
+
"version": "1.15.3-beta.50",
|
|
4
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",
|