@mindrian_os/cli 1.15.3-beta.44 → 1.15.3-beta.46
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 +75 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,78 @@
|
|
|
1
|
+
## [1.15.3-beta.46] - 2026-07-23
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
-
|
|
5
|
+
|
|
6
|
+
### Fixed
|
|
7
|
+
- **The F.8 "bind session to room" Decision Gate (and any PRIMARY-path registry gate)
|
|
8
|
+
force-fired on turns whose ONLY content was an automated background-task-completion
|
|
9
|
+
notification, with zero real user text, blocking continuation with a Stop hook error even
|
|
10
|
+
though there was nothing for the navigator to decide that turn.** Root cause:
|
|
11
|
+
`precedingUserText` resolves to `''` for two very different reasons that
|
|
12
|
+
`scripts/check-card-fire.cjs` could not previously distinguish -- a genuinely terse HUMAN
|
|
13
|
+
turn ("ok", "go on") and a SYNTHETIC preceding transcript record (a `tool_result` envelope
|
|
14
|
+
from a background tool call, or an automated task-notification block) with no
|
|
15
|
+
human-authored text at all. `lib/core/gate-relevance.cjs`'s conservative low-signal branch
|
|
16
|
+
forced (assumed relevant) on both, which is only correct for the first -- there is no human
|
|
17
|
+
turn for a Decision Gate to be relevant or irrelevant to on the second. Fixed by adding a
|
|
18
|
+
new `preceding_user_text_source` signal (`'typed' | 'tool_result' | 'none'`), classified by
|
|
19
|
+
a new `classifyPrecedingUserContentSource` helper in `readTranscriptTurn` and threaded
|
|
20
|
+
through `deriveTurnSignals`; `classifyCardFire`'s PRIMARY-path relevance branch now bypasses
|
|
21
|
+
forcing immediately when the source is confirmed `'tool_result'`
|
|
22
|
+
(`reason: 'preceding-turn-synthetic-no-user-engagement'`), before ever reaching the
|
|
23
|
+
conservative low-signal branch. A genuinely terse human turn against the identical gate
|
|
24
|
+
still force-fires, unweakened (the WR-06/CR-06 floor). Live-reproduced 3 consecutive times
|
|
25
|
+
in one session; the mechanism itself was first diagnosed 2026-07-06 (as a fact, not yet
|
|
26
|
+
treated as a defect) and confirmed recurring 2026-07-11 and 2026-07-22. Full RCA:
|
|
27
|
+
`.planning/debug/resolved/room-bind-gate-fires-on-notification-only-turns.md`.
|
|
28
|
+
- **The semantic-edge derivation queue (`graph-derive-queue.json`) silently cleared itself
|
|
29
|
+
on every failed derivation, in every room, forever -- so no room has ever gotten a real
|
|
30
|
+
INFORMS/CONTRADICTS/CONVERGES cascade edge.** Root cause: `scripts/gsd-graph-derive-drain.cjs`'s
|
|
31
|
+
`drainDerive()` caught a `runDerivation` throw, pushed the failed room to `drained` anyway,
|
|
32
|
+
and rewrote the queue empty with no log -- destroying the retry signal on every SessionStart
|
|
33
|
+
run regardless of outcome. Two of the three originally-stacked causes (a dead standalone
|
|
34
|
+
Anthropic API key; the headless path computing a null single-pair derive with no real
|
|
35
|
+
artifact pairs) had already been resolved upstream by Phase 224-02's switch to local
|
|
36
|
+
embeddings; the silent-clear was the one still live. Fixed via a new `reconcileQueue()`: a
|
|
37
|
+
failed room is now kept and retried (capped at `MAX_DERIVE_ATTEMPTS=5`, then dropped
|
|
38
|
+
`permanent:true` and logged, never silently), and every failure appends to a new
|
|
39
|
+
`<room>/.mindrian/graph-derive-failures.json`. Root-caused by cross-referencing a TDS
|
|
40
|
+
"context rot" research thread against the live debug queue, not filed fresh. Full RCA:
|
|
41
|
+
`.planning/debug/graph-derive-silent-clear-dead-api-derivation.md`. Formalizing the
|
|
42
|
+
derivation transport, healing the ~16 already-damaged rooms, and a doctor health check
|
|
43
|
+
remain open (register items 4b-4e).
|
|
44
|
+
- **`room_search` applied its 50-result cap in raw filesystem-walk order, before any
|
|
45
|
+
relevance ranking -- so a genuinely relevant match in a late-traversed folder could lose to
|
|
46
|
+
50 incidental early-folder hits, and a same-entity query could return dozens of
|
|
47
|
+
near-duplicate lines from one file.** Root cause: `lib/mcp/tools/room.cjs`'s `searchRoom`
|
|
48
|
+
was a plain `String.includes` grep that pushed matches in directory-entry order and
|
|
49
|
+
returned the instant either `SEARCH_MAX_RESULTS` (50) or `SEARCH_MAX_FILES` (500) was hit --
|
|
50
|
+
capped-then-never-ranked, not ranked-then-capped. Fixed via a rank-then-cap rewrite
|
|
51
|
+
(`collectMatches`/`rankMatches`): match density x0.7 + recency x0.3, with a 5-per-file slice
|
|
52
|
+
cap so one file can't monopolize the result budget. `graph_query` was audited in the same
|
|
53
|
+
pass and found already ranked correctly (a composite relevance score already lives in
|
|
54
|
+
`navigation/neighborhood.cjs`); `whitespace_scan` is unranked but uncapped, deferred pending
|
|
55
|
+
the graph-derive edge-density fix above (little signal to rank while most rooms carry
|
|
56
|
+
near-zero semantic edges). Full RCA: `.planning/debug/graph-query-results-unranked.md`.
|
|
57
|
+
- **The M:OS Canonical Design System v1.1 "bake into all HTML artifacts" mandate was only
|
|
58
|
+
~30% actually landed, despite its own commit (`a9e1ee88`) and Phase 232-01 claiming it was
|
|
59
|
+
done.** The CSS bundle, loader (`mosStyleTag()`), and `lib/wiki/wiki-layout.cjs`'s
|
|
60
|
+
retokenization were real; `scripts/generate-deck.cjs`, `generate-hub.cjs`,
|
|
61
|
+
`generate-lobby.cjs`, and `generate-snapshot.cjs` had zero reference to `mosStyleTag()`,
|
|
62
|
+
`dashboard/index.html` had zero M:OS tokens, and the mandate's own doc
|
|
63
|
+
(`skills/ui-system/rules/design-system.md`) and `SKILL.md` section 0 did not exist. Wired
|
|
64
|
+
all 4 generators to `mosStyleTag()` (cream default, `data-theme="light"`), injected canonical
|
|
65
|
+
tokens plus a role-based CSS variable alias layer into `dashboard/index.html` and
|
|
66
|
+
`dashboard/export-template.html` (legacy `--mondrian-*`/`--ds-*` names aliased onto canonical
|
|
67
|
+
values in place, not renamed), and authored the missing mandate docs. Code review caught 2
|
|
68
|
+
real regressions before this shipped: (1) 3 of the 4 generators' own pre-existing `<style>`
|
|
69
|
+
blocks redeclared the same token names with old hex values LATER in the document, so the
|
|
70
|
+
mandate rendered in the markup but had zero visual effect by CSS cascade -- fixed by removing
|
|
71
|
+
the colliding redeclarations; (2) `dashboard/index.html`'s dark-to-light polarity flip broke
|
|
72
|
+
hardcoded Cytoscape graph-label colors and hover overlays tuned for the old dark theme --
|
|
73
|
+
fixed by repointing them at the resolved ink values. Both independently re-verified via
|
|
74
|
+
Playwright (`getComputedStyle`) against live-regenerated output, not just diffs.
|
|
75
|
+
|
|
1
76
|
## [1.15.3-beta.44] - 2026-07-23
|
|
2
77
|
|
|
3
78
|
### 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.46",
|
|
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",
|