@mindrian_os/cli 1.15.3-beta.42 → 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 +105 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,108 @@
|
|
|
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
|
+
|
|
76
|
+
## [1.15.3-beta.44] - 2026-07-23
|
|
77
|
+
|
|
78
|
+
### Added
|
|
79
|
+
-
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
- **Every Stop hook turn showed a raw Claude Code hook JSON validation error
|
|
83
|
+
("Hook JSON output validation failed: - : Invalid input") instead of the intended calm
|
|
84
|
+
systemMessage, whenever `scripts/check-card-fire.cjs` force-blocked a turn to demand an
|
|
85
|
+
AskUserQuestion card fire.** Root cause: Claude Code's Stop-hook output schema does not
|
|
86
|
+
define a `hookSpecificOutput` variant for the Stop event at all (the union covers only
|
|
87
|
+
PreToolUse, UserPromptSubmit, and PostToolUse); including the key on a Stop envelope
|
|
88
|
+
rejects the WHOLE envelope (`additionalProperties: false`), not just that key, silently
|
|
89
|
+
replacing the carefully-set `decision`/`reason`/`systemMessage` with a raw schema-error
|
|
90
|
+
dump. This is the 4th live occurrence of the same defect class: fixed once in
|
|
91
|
+
`scripts/on-stop` (v1.10.9 -> v1.10.10, 2026-04-15), then reintroduced in
|
|
92
|
+
`scripts/feynman-minto-guardian.cjs` (under a since-corrected comment that had the rule
|
|
93
|
+
backwards), reintroduced again as a regression inside `scripts/on-stop` itself (the
|
|
94
|
+
Phase 198-09 MCP-first thin-adapter branch), and hit live by a real user via
|
|
95
|
+
`scripts/check-card-fire.cjs` today. Fixed at all 3 sites: `hookSpecificOutput` removed
|
|
96
|
+
outright (and removed from `check-card-fire.cjs`'s own envelope-key allowlist so it can't
|
|
97
|
+
silently slip back in); the calm, human-facing `decision`/`reason`/`systemMessage` fields
|
|
98
|
+
each branch already set are unaffected. New structural regression gate:
|
|
99
|
+
`scripts/check-hook-schema-compatibility.cjs` (previously unwired and, worse, encoding the
|
|
100
|
+
opposite/wrong rule) is corrected and wired into `scripts/verify-release` (section 16) --
|
|
101
|
+
it enumerates every script Claude Code registers as a Stop hook straight off
|
|
102
|
+
`hooks/hooks.json`, follows one level of subprocess invocation, and fails the release if
|
|
103
|
+
any of them would emit a Stop-shaped `hookSpecificOutput` again. Full RCA:
|
|
104
|
+
`.planning/debug/resolved/stop-hook-invalid-hookspecificoutput-schema.md`.
|
|
105
|
+
|
|
1
106
|
## [1.15.3-beta.42] - 2026-07-23
|
|
2
107
|
|
|
3
108
|
### Fixed
|
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",
|