@mindrian_os/cli 1.15.3-beta.34 → 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 CHANGED
@@ -1,3 +1,31 @@
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
+
1
29
  ## [1.15.3-beta.34] - 2026-07-21
2
30
 
3
31
  ### Fixed
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
- [![Version](https://img.shields.io/badge/version-1.15.3--beta.26-1E3A6E)](CHANGELOG.md)
13
+ [![Version](https://img.shields.io/badge/version-1.15.3--beta.34-1E3A6E)](CHANGELOG.md)
14
14
  [![License](https://img.shields.io/badge/license-BSL_1.1-C8A43C)](LICENSE)
15
15
  [![Works on](https://img.shields.io/badge/CLI_+_Desktop_+_Cowork-2D6B4A)](#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.34",
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",