claude-session carrier resumes the TARGET session (--resume entry[sessionId]) instead of the postbox — second driver on a running session; busy extension must not drop the status check #148
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The claude-session carrier resumes the TARGET session, not the postbox (installed v1.0.108 = main
b0ed6afa; read-only source finding, 2026-10-30)dispatch.py_kiss_carrier_argv(target, entry, prompt)(around line 4124) buildswhere
entryis the registry row resolved from the kiss TARGET (claude_door.resolve(target["id"])in_kiss_claude_session_deliver). The docstring and USAGE §34.3 say the carrier is "one headless turn resumed into the postbox session itself"; the code resumes the target session — the running Claude Code session the line is meant for (e.g. the Fable work session388e03f6-…).Consequences (design, not yet observed live — do not try it live):
claude -p --resume <target>opens the target's own session store while the desktop/CLI session that owns it is running (the registry row exists only for running sessions). The fleet law "one driver per session" is violated by construction, and the owner's work session is resumed headless by the dispatcher — it reads the owner's context, spends tokens on the owner's account and could act — merely to deliver one line.--resume entry["sessionId"]the result carries the target's id, so the check either compares against the wrong constant or is satisfied for the wrong reason.Fix (small, one branch):
entryfromclaude_door.resolve(target["id"]), as today) and the carrier session — a configured postbox/relay session id on the target (carrier_session, default the station'sclaude-postfachtarget session61b7959a-122e-410e-945d-f4b9b4f73cb7, or any dedicated relay session that is NOT the target)._kiss_carrier_argvresumestarget["carrier_session"];ZDO_CARRIER_DOOR_TARGETstaystarget["id"]; refuse (exit 2, classcarrier-misbound) whencarrier_session == entry["sessionId"].session_idwithcarrier_session(the postbox), and the relayed door receipt'ssession_idwith the target.claudebinary that records argv must show--resume <carrier_session>≠ target for idle and busy fixtures; a leg for the misbound refusal; docs §34.3 aligned with the code.Measurement before any live use (Claude house offers to run it): rig with a fake registry (target + postbox rows), fake
claudebin, fake door; then one live carrier delivery into the Fable session from the real postbox with the owner's yes, verified by the receiver's transcript (the only proof of model input).Refs: issue #134 (accepted ≠ delivered), USAGE §34.3 (v1.0.96 TRÄGER-BAU), Root's
root-t-review/INSTALLED-FACTS.json(carrier_binding lines 4130/4146/4278/4300), EDGE-PROOF.md (2026-10-28). Found while revising the family integration proposal (package T, ASTRA-C-20261030-01).🤖 Generated with Claude Code