Observation-class finding, filed unassigned with no pm:queue — for triage to grade and route. Proposed lane: domain:skills (two references/ fact-table lines), but domain:* is triage's to set.
Measured 2026-08-12 by the domain:drivers seat (#6020) while taking that seat over from a predecessor on a different GitHub account.
The reading
Dev session session_018m2pbEYn9s7mg4Y9Dvey62 was created by the outgoing seat under GitHub huangyiirene. From the incoming seat (os-zhuang):
get_session session_018m2pbEYn9s7mg4Y9Dvey62
→ failed to get session: the requested resource was not found
The session was alive at the time — read as RUNNING at 18:18Z by its own PM, ~35 minutes earlier. not found here is account scoping, not a death signal, and SendMessage, the create_trigger(persistent_session_id) + fire_trigger poke route, and archive_session all rest on the same visibility and fail the same way.
Why it matters beyond one hand-off
Three standing obligations in the PM skill silently assume the session is reachable by whoever holds the seat now:
archive_session on a cloud card's terminal state (references/landing-operations.md:54-56). If the seat changed accounts between dispatch and landing, the successor cannot discharge it. The container is not leaked forever — it ages out — but the checklist item is undoable, and an honest seat has to say so rather than tick it.- The 45-minute liveness probe (the collect loop's fixed patrol action). Unreachable cross-account, so the probe threshold is meaningless for an inherited card — and the
not found it returns is the exact string a careless reader turns into "the dev is dead". ⚠️ That misread has a real cost: the skill's own rule is that a death call justifies putting a second agent into a possibly-live worktree. - The hand-off note's owed list. The outgoing PM here wrote a careful, correct hand-off that included "close this card and archive the session" — it could not have known the archive half was not transferable.
Note the failure mode is silent and directional: everything reads as a normal absence. Nothing in the tool response distinguishes "another account owns this" from "this never existed".
Proposed edits — two lines, not prose
references/dispatch-runbook.md, beside the existing "SendMessage 直投 not-reachable 是设计而非故障" line (~:38): extend it to say session handles are account-scoped — get_session / archive_session / the poke route all answer not found for another account's session, and that answer is ⛔ never a death signal.references/seat-post-protocol.md, in the 退场收尾清单: the outgoing PM archives its own dev sessions before going off duty, because a successor on a different account cannot. If a session must be left running, the seat post says so explicitly and marks the archive obligation as non-transferable rather than leaving it on the successor's owed list.
What this does NOT claim
Refs
#6020 (the drivers seat post and its takeover audit comment) · #8138 (the inherited in-flight card, and the correction posted to its hand-off note)
Observation-class finding, filed unassigned with no
pm:queue— for triage to grade and route. Proposed lane:domain:skills(tworeferences/fact-table lines), butdomain:*is triage's to set.Measured 2026-08-12 by the
domain:driversseat (#6020) while taking that seat over from a predecessor on a different GitHub account.The reading
Dev session
session_018m2pbEYn9s7mg4Y9Dvey62was created by the outgoing seat under GitHubhuangyiirene. From the incoming seat (os-zhuang):The session was alive at the time — read as
RUNNINGat 18:18Z by its own PM, ~35 minutes earlier.not foundhere is account scoping, not a death signal, andSendMessage, thecreate_trigger(persistent_session_id)+fire_triggerpoke route, andarchive_sessionall rest on the same visibility and fail the same way.Why it matters beyond one hand-off
Three standing obligations in the PM skill silently assume the session is reachable by whoever holds the seat now:
archive_sessionon a cloud card's terminal state (references/landing-operations.md:54-56). If the seat changed accounts between dispatch and landing, the successor cannot discharge it. The container is not leaked forever — it ages out — but the checklist item is undoable, and an honest seat has to say so rather than tick it.not foundit returns is the exact string a careless reader turns into "the dev is dead".Note the failure mode is silent and directional: everything reads as a normal absence. Nothing in the tool response distinguishes "another account owns this" from "this never existed".
Proposed edits — two lines, not prose
references/dispatch-runbook.md, beside the existing "SendMessage直投 not-reachable 是设计而非故障" line (~:38): extend it to say session handles are account-scoped —get_session/archive_session/ the poke route all answernot foundfor another account's session, and that answer is ⛔ never a death signal.references/seat-post-protocol.md, in the 退场收尾清单: the outgoing PM archives its own dev sessions before going off duty, because a successor on a different account cannot. If a session must be left running, the seat post says so explicitly and marks the archive obligation as non-transferable rather than leaving it on the successor's owed list.What this does NOT claim
sql-driver-overlay-index-drift.test.ts「stays silent on the SECOND boot, when the runtime ledger starts empty again」偶发判红 #6522 whether or not a PR exists, so its outcome is recoverable with no probe at all. That contract is exactly what made this survivable — worth stating in the fact table as the reason it is a contract and not a convenience.Refs
#6020 (the drivers seat post and its takeover audit comment) · #8138 (the inherited in-flight card, and the correction posted to its hand-off note)