@mindrian_os/cli 1.15.3-beta.44 → 1.15.3-beta.48
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 +109 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,112 @@
|
|
|
1
|
+
## [1.15.3-beta.48] - 2026-07-26
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **Room-graph density read (Phase 232.1).** `/mos:doctor` and `room_state status`/`get-state`
|
|
5
|
+
now self-report node/edge counts per `room.db`, read exclusively through a new read-only
|
|
6
|
+
`navigation.cjs` door (`openRoomDbReadOnlyForCaller`) -- never the mutating door, never a
|
|
7
|
+
direct `room.db` open. Closes SEED-074's own "suggested first move"
|
|
8
|
+
(`.planning/seeds/SEED-074-local-graph-read-layer-lacks-salience-and-query-time-joins.md`):
|
|
9
|
+
the seed's actual PageRank/Louvain/query-time-join target stays gated exactly as written;
|
|
10
|
+
this only makes its own trigger condition (measured room.db density) self-reported instead
|
|
11
|
+
of something a human has to remember to check by hand. No output string anywhere claims a
|
|
12
|
+
room graph is dense, at-risk, or healthy (hard guard, grep-verified). Goal-backward
|
|
13
|
+
verification PASS, 6/6 must-haves (`232.1-VERIFICATION.md`).
|
|
14
|
+
- Local reified-claim `ContradictionEvent` primitive (quick task 260725-9ca), with a hermetic
|
|
15
|
+
acceptance test.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- **`room_bind` could report `ok:true` while a sibling MCP read tool silently resolved a
|
|
19
|
+
stale, unrelated room.** Root cause: 20 of 21 MCP tool call sites were missing the
|
|
20
|
+
`CLAUDE_CODE_SESSION_ID` stdio fallback that `room_bind` itself already had, so a
|
|
21
|
+
session-id mismatch between the bind call and a later read call could bind one room but
|
|
22
|
+
read another without ever surfacing an error. Fixed via one shared
|
|
23
|
+
`resolveEffectiveSessionId` helper, wired into all 21 sites; live-reproduced, then closed,
|
|
24
|
+
tests green. Full reproduction and root cause also filed in the `rethinking-mindrianos`
|
|
25
|
+
room per this repo's dev-research compositing rule.
|
|
26
|
+
- **Phase 232.1's own room-graph density census could silently drop a room that used the
|
|
27
|
+
`abs_path` registry field instead of `path`,** undermining the one thing the census exists
|
|
28
|
+
to be accurate about. `resolveRoomPath` now checks `abs_path` first, `path` as fallback,
|
|
29
|
+
matching the precedence every other production call site in this codebase already honors;
|
|
30
|
+
pinned by a mutation-verified regression test (reverted, confirmed red, restored, confirmed
|
|
31
|
+
green). The identical gap in the earlier, already-shipped `cascade-rooms-module.cjs` this
|
|
32
|
+
was copied from is left alone -- out of this phase's scope, tracked separately as
|
|
33
|
+
low-severity follow-up debt.
|
|
34
|
+
|
|
35
|
+
## [1.15.3-beta.46] - 2026-07-23
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
-
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
- **The F.8 "bind session to room" Decision Gate (and any PRIMARY-path registry gate)
|
|
42
|
+
force-fired on turns whose ONLY content was an automated background-task-completion
|
|
43
|
+
notification, with zero real user text, blocking continuation with a Stop hook error even
|
|
44
|
+
though there was nothing for the navigator to decide that turn.** Root cause:
|
|
45
|
+
`precedingUserText` resolves to `''` for two very different reasons that
|
|
46
|
+
`scripts/check-card-fire.cjs` could not previously distinguish -- a genuinely terse HUMAN
|
|
47
|
+
turn ("ok", "go on") and a SYNTHETIC preceding transcript record (a `tool_result` envelope
|
|
48
|
+
from a background tool call, or an automated task-notification block) with no
|
|
49
|
+
human-authored text at all. `lib/core/gate-relevance.cjs`'s conservative low-signal branch
|
|
50
|
+
forced (assumed relevant) on both, which is only correct for the first -- there is no human
|
|
51
|
+
turn for a Decision Gate to be relevant or irrelevant to on the second. Fixed by adding a
|
|
52
|
+
new `preceding_user_text_source` signal (`'typed' | 'tool_result' | 'none'`), classified by
|
|
53
|
+
a new `classifyPrecedingUserContentSource` helper in `readTranscriptTurn` and threaded
|
|
54
|
+
through `deriveTurnSignals`; `classifyCardFire`'s PRIMARY-path relevance branch now bypasses
|
|
55
|
+
forcing immediately when the source is confirmed `'tool_result'`
|
|
56
|
+
(`reason: 'preceding-turn-synthetic-no-user-engagement'`), before ever reaching the
|
|
57
|
+
conservative low-signal branch. A genuinely terse human turn against the identical gate
|
|
58
|
+
still force-fires, unweakened (the WR-06/CR-06 floor). Live-reproduced 3 consecutive times
|
|
59
|
+
in one session; the mechanism itself was first diagnosed 2026-07-06 (as a fact, not yet
|
|
60
|
+
treated as a defect) and confirmed recurring 2026-07-11 and 2026-07-22. Full RCA:
|
|
61
|
+
`.planning/debug/resolved/room-bind-gate-fires-on-notification-only-turns.md`.
|
|
62
|
+
- **The semantic-edge derivation queue (`graph-derive-queue.json`) silently cleared itself
|
|
63
|
+
on every failed derivation, in every room, forever -- so no room has ever gotten a real
|
|
64
|
+
INFORMS/CONTRADICTS/CONVERGES cascade edge.** Root cause: `scripts/gsd-graph-derive-drain.cjs`'s
|
|
65
|
+
`drainDerive()` caught a `runDerivation` throw, pushed the failed room to `drained` anyway,
|
|
66
|
+
and rewrote the queue empty with no log -- destroying the retry signal on every SessionStart
|
|
67
|
+
run regardless of outcome. Two of the three originally-stacked causes (a dead standalone
|
|
68
|
+
Anthropic API key; the headless path computing a null single-pair derive with no real
|
|
69
|
+
artifact pairs) had already been resolved upstream by Phase 224-02's switch to local
|
|
70
|
+
embeddings; the silent-clear was the one still live. Fixed via a new `reconcileQueue()`: a
|
|
71
|
+
failed room is now kept and retried (capped at `MAX_DERIVE_ATTEMPTS=5`, then dropped
|
|
72
|
+
`permanent:true` and logged, never silently), and every failure appends to a new
|
|
73
|
+
`<room>/.mindrian/graph-derive-failures.json`. Root-caused by cross-referencing a TDS
|
|
74
|
+
"context rot" research thread against the live debug queue, not filed fresh. Full RCA:
|
|
75
|
+
`.planning/debug/graph-derive-silent-clear-dead-api-derivation.md`. Formalizing the
|
|
76
|
+
derivation transport, healing the ~16 already-damaged rooms, and a doctor health check
|
|
77
|
+
remain open (register items 4b-4e).
|
|
78
|
+
- **`room_search` applied its 50-result cap in raw filesystem-walk order, before any
|
|
79
|
+
relevance ranking -- so a genuinely relevant match in a late-traversed folder could lose to
|
|
80
|
+
50 incidental early-folder hits, and a same-entity query could return dozens of
|
|
81
|
+
near-duplicate lines from one file.** Root cause: `lib/mcp/tools/room.cjs`'s `searchRoom`
|
|
82
|
+
was a plain `String.includes` grep that pushed matches in directory-entry order and
|
|
83
|
+
returned the instant either `SEARCH_MAX_RESULTS` (50) or `SEARCH_MAX_FILES` (500) was hit --
|
|
84
|
+
capped-then-never-ranked, not ranked-then-capped. Fixed via a rank-then-cap rewrite
|
|
85
|
+
(`collectMatches`/`rankMatches`): match density x0.7 + recency x0.3, with a 5-per-file slice
|
|
86
|
+
cap so one file can't monopolize the result budget. `graph_query` was audited in the same
|
|
87
|
+
pass and found already ranked correctly (a composite relevance score already lives in
|
|
88
|
+
`navigation/neighborhood.cjs`); `whitespace_scan` is unranked but uncapped, deferred pending
|
|
89
|
+
the graph-derive edge-density fix above (little signal to rank while most rooms carry
|
|
90
|
+
near-zero semantic edges). Full RCA: `.planning/debug/graph-query-results-unranked.md`.
|
|
91
|
+
- **The M:OS Canonical Design System v1.1 "bake into all HTML artifacts" mandate was only
|
|
92
|
+
~30% actually landed, despite its own commit (`a9e1ee88`) and Phase 232-01 claiming it was
|
|
93
|
+
done.** The CSS bundle, loader (`mosStyleTag()`), and `lib/wiki/wiki-layout.cjs`'s
|
|
94
|
+
retokenization were real; `scripts/generate-deck.cjs`, `generate-hub.cjs`,
|
|
95
|
+
`generate-lobby.cjs`, and `generate-snapshot.cjs` had zero reference to `mosStyleTag()`,
|
|
96
|
+
`dashboard/index.html` had zero M:OS tokens, and the mandate's own doc
|
|
97
|
+
(`skills/ui-system/rules/design-system.md`) and `SKILL.md` section 0 did not exist. Wired
|
|
98
|
+
all 4 generators to `mosStyleTag()` (cream default, `data-theme="light"`), injected canonical
|
|
99
|
+
tokens plus a role-based CSS variable alias layer into `dashboard/index.html` and
|
|
100
|
+
`dashboard/export-template.html` (legacy `--mondrian-*`/`--ds-*` names aliased onto canonical
|
|
101
|
+
values in place, not renamed), and authored the missing mandate docs. Code review caught 2
|
|
102
|
+
real regressions before this shipped: (1) 3 of the 4 generators' own pre-existing `<style>`
|
|
103
|
+
blocks redeclared the same token names with old hex values LATER in the document, so the
|
|
104
|
+
mandate rendered in the markup but had zero visual effect by CSS cascade -- fixed by removing
|
|
105
|
+
the colliding redeclarations; (2) `dashboard/index.html`'s dark-to-light polarity flip broke
|
|
106
|
+
hardcoded Cytoscape graph-label colors and hover overlays tuned for the old dark theme --
|
|
107
|
+
fixed by repointing them at the resolved ink values. Both independently re-verified via
|
|
108
|
+
Playwright (`getComputedStyle`) against live-regenerated output, not just diffs.
|
|
109
|
+
|
|
1
110
|
## [1.15.3-beta.44] - 2026-07-23
|
|
2
111
|
|
|
3
112
|
### Added
|
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.48",
|
|
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",
|