@mindrian_os/cli 1.15.3-beta.32 → 1.15.3-beta.36
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 +46 -0
- package/README.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,49 @@
|
|
|
1
|
+
## [1.15.3-beta.36] - 2026-07-22
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- **`room_bind` could never write a per-session room binding on stdio, so all CLI sessions
|
|
5
|
+
fell back to one shared, unlocked `registry.json` active-room field.** Root-caused via a
|
|
6
|
+
full RCA (`.planning/debug/resolved/registry-active-room-concurrent-session-collision.md`):
|
|
7
|
+
`writeSessionBinding` -- the only function that sets a session's own room binding -- has
|
|
8
|
+
exactly two call sites, both gated behind `room_bind`'s `effectiveSessionId` check, which
|
|
9
|
+
requires the MCP SDK's `extra.sessionId` (never populated on stdio) or an explicit
|
|
10
|
+
`sessionId` argument (nothing supplied one automatically). So no CLI session could ever
|
|
11
|
+
populate its own binding, and every session's write-target resolution fell through to a
|
|
12
|
+
single global field that multiple concurrent `claude` CLI processes on one machine then
|
|
13
|
+
raced to overwrite -- confirmed live with 4 concurrent sessions on this machine, one
|
|
14
|
+
session's active room silently clobbering another's. Fixed: `room_bind` now falls back to
|
|
15
|
+
`process.env.CLAUDE_CODE_SESSION_ID` as a third-priority session identifier on stdio
|
|
16
|
+
(precedence: explicit param > SDK `extra.sessionId` > `CLAUDE_CODE_SESSION_ID` >
|
|
17
|
+
`no_session_id`), so a CLI session can finally write a real per-session binding. The
|
|
18
|
+
separate F.8 binding-ambiguity-card logic in the same handler is untouched. New test:
|
|
19
|
+
`tests/test-room-bind-stdio-session-fallback.cjs` (4 assertions); all 21 pre-existing tests
|
|
20
|
+
touching `room_bind`/`tool-router.cjs`/`session-binding.cjs` still pass.
|
|
21
|
+
- **`write-scope-check.cjs`'s own session-identity fallback checked the wrong environment
|
|
22
|
+
variable name.** It read `process.env.CLAUDE_SESSION_ID`, which this runtime never sets;
|
|
23
|
+
the real variable is `CLAUDE_CODE_SESSION_ID`. Fixed with a backward-compatible fallback
|
|
24
|
+
chain (`CLAUDE_CODE_SESSION_ID` first, legacy `CLAUDE_SESSION_ID` second) so existing test
|
|
25
|
+
fixtures that set the old name are unaffected. A smaller contributor to the active-room
|
|
26
|
+
confusion above than first estimated (this hook already preferred the hook payload's own
|
|
27
|
+
`session_id` ahead of the env check), but a real, worthwhile correctness fix on its own.
|
|
28
|
+
|
|
29
|
+
## [1.15.3-beta.34] - 2026-07-21
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- **Stop hook (`check-card-fire.cjs`) force-fired a stale Decision-Gate card on unrelated
|
|
33
|
+
terse turns.** Fourth live occurrence of the over-enforcement class (dominant reason
|
|
34
|
+
`reached-registry-gate-no-card`, 30 of 41 records in a 24h diagnostic window). Two stacked
|
|
35
|
+
root causes: (1) `lib/core/card-fire-sidechannel.cjs`'s reach-mint record had no
|
|
36
|
+
session/turn scoping and a 10-minute TTL, so one real gate mint anywhere leaked into every
|
|
37
|
+
later turn, every session, for 10 minutes; (2) `lib/core/gate-relevance.cjs`'s
|
|
38
|
+
`gateTopicallyRelevant` defaulted to force-fire whenever the preceding user text carried
|
|
39
|
+
fewer than 2 subject tokens -- true for nearly every terse slash command, so short turns
|
|
40
|
+
were the LEAST protected against a stale gate. Fixed structurally: a turn-scoped freshness
|
|
41
|
+
window (`TURN_FRESH_MS`) replaces the unscoped union, and the relevance floor now checks
|
|
42
|
+
gate staleness (`opts.gateStale`) instead of defaulting to force on low signal. A model
|
|
43
|
+
that has already judged a reach-card gate stale and moved on in prose is no longer
|
|
44
|
+
overridden by the hook. Verified end-to-end against the live incident shape; full
|
|
45
|
+
card-fire/gate-relevance/connector-registry suites green.
|
|
46
|
+
|
|
1
47
|
## [1.15.3-beta.32] - 2026-07-20
|
|
2
48
|
|
|
3
49
|
### 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.36",
|
|
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",
|