Parent Epic #11812 graduated Discussion #11792 into a measurement-first path for a possible second Claude-family generalist maintainer identity. Child #11816 owns the OQ8 provider-capacity / Fast Mode measurement gate. Child #11821 owns the sibling AgentIdentity / same-family review / Memory Core continuity contract.
This sub captures the Desktop-grade wake-routing implementation slice. It must not start until #11816 reports PASS_OQ8 or an explicitly accepted equivalent disposition. If OQ8 fails, this child should be parked or closed without implementation.
Duplicate sweep before filing:
KB ticket searches for Desktop-grade instance addressable Claude wake routing wrong instance fail closed #11812 did not identify an equivalent #11812 child.
rg over resources/content/issues and resources/content/discussions found older Claude Desktop wake/focus/recovery tickets (#10658, #10677, #10788, #10987), but those address existing single-identity delivery or recovery, not same-bundle sibling instance routing from #11812.
Live GitHub issue searches for Desktop-grade wake Claude sibling, wrong-instance wake, and instance-addressable wake routing found #11812/#11816 and older adjacent tickets, but no bounded implementation child for the #11792/#11812 route.
The Problem
Current Shape C GUI wake routing uses coarse harness metadata such as appName: "Claude". That is ambiguous when two same-bundle Claude Desktop profiles or sibling identities can run on the same macOS user. Activating Claude does not prove the wake payload will land in the intended A2A principal's prompt.
For a Claude sibling to be safe, wake routing must become instance-addressable and fail closed when the target cannot be proven. Wrong-instance delivery would corrupt identity boundaries, private context, review provenance, and potentially prompt the wrong maintainer to act on a lane.
The Architectural Reality
WakeSubscriptionService validates harnessTarget / harnessTargetMetadata and currently permits GUI wake routing through appName-style metadata.
bridge-daemon dispatches osascript wakes by activating an application and focusing/pasting into the frontmost target. Same-bundle app activation is not a unique instance address.
tmuxSession is already addressable for terminal/control lanes, but Discussion #11792 explicitly forbids treating terminal/tmux as the Desktop product harness.
Existing Claude Desktop prompt-focus tickets (#10658, #10987, #10788) provide adjacent safety lessons: focus primitives must be empirically proven and fail closed before destructive paste/submit actions.
This child depends on the identity contract from #11821 for the target principal and on #11816 for the throughput premise.
The Fix
After #11816 passes, design and implement a fail-closed instance-addressable wake primitive for the Claude sibling:
Compare concrete selector options: userDataDir, PID/window selector, app bundle clone identity, per-instance local bridge/webhook, URL/deep-link targeting, or another falsifiable primitive.
Choose the least brittle Desktop-grade primitive and document rejected alternatives with evidence.
Extend wake subscription metadata validation so a Claude sibling can register an instance-specific GUI route without weakening existing Antigravity/Claude/Codex single-instance routes.
Update dispatch so a wake for identity B can prove it is targeting identity B's instance before paste/submit.
Existing Antigravity, Claude single-instance, and Codex wake behavior preserved
Explicit migration only with tests
Existing wake docs updated if needed
Regression tests / smoke proof
Decision Record Impact
Aligned with #11812 and Discussion #11792. No ADR amendment is required by filing this child. If implementation introduces a durable new wake-routing primitive or mutates always-loaded agent workflow substrate, the implementation PR must run the relevant turn-memory / pull-request gates and declare whether an ADR or Agent OS decision note is warranted.
AC1: #11816 reports PASS_OQ8 or a clearly accepted equivalent disposition before implementation begins.
AC2: Selector comparison evaluates at least userDataDir, PID/window selector, app bundle clone identity, and per-instance bridge/webhook, with evidence/falsifiers for rejected options.
AC3: The chosen selector is Desktop-grade and does not rely on terminal/tmux as product harness.
AC4: Wake subscription metadata validation supports the chosen instance address without accepting ambiguous partial metadata for sibling routes.
AC5: Dispatch fails closed if the intended identity/instance cannot be proven immediately before paste/submit.
AC6: Wrong-instance delivery has a negative test, fixture, or operator-validated live probe demonstrating the wake does not land in identity A when targeting identity B.
AC7: Positive delivery is proven for the intended sibling instance over at least two controlled wake cycles before parent AC12 is marked complete. [L3-deferred — operator handoff needed] — requires two live Desktop instances (default + --user-data-dir); tracked in PR #12399 Post-Merge Validation. The Resolves #11822 auto-close does NOT imply this runtime AC is proven.
AC8: Existing single-instance appName wake behavior for Antigravity, Claude, and Codex remains green unless explicitly migrated.
AC9: Implementation artifact comments on #11812 with selector choice, fail-closed evidence, and post-merge validation result. [L3-deferred — operator handoff needed] for the post-merge-validation-result portion (only exists after the live probe runs). Selector choice (userDataDir→pid) + fail-closed evidence are documented in PR #12399; the parent-epic artifact comment with the live result lands at/after merge.
AC10: If implementation touches wake/agent substrate that Gemini should retro-review when reactivated, preserve #11812 AC13 Tier-2 revalidation linkage.
Out of Scope
Measuring provider-capacity independence; that is #11816.
Defining the sibling AgentIdentity/memory contract; that is #11821.
Treating terminal/tmux as the product harness.
Procuring credentials or managing Anthropic account secrets.
Full cloud Agent OS deployment or second-physical-Mac topology beyond fallback notes.
Broad Claude Desktop composer-focus repairs unrelated to sibling instance routing.
Avoided Traps
Trap
Why rejected
appName: "Claude" as sibling address
Same-bundle instances make app name ambiguous; wrong-instance delivery risk.
Terminal/tmux false completion
Terminal route can measure OQ8 but does not preserve Desktop-grade workflow.
Paste before proof
Existing Claude Desktop focus regressions show GUI dispatch must fail closed before destructive prompt injection.
Breaking existing single-instance routes
The sibling path should extend wake routing, not regress Antigravity/Claude/Codex basics.
Building before OQ8
If provider capacity does not improve, Desktop-routing substrate is unnecessary.
tobiu referenced in commit 3e559c0 - "feat(ai): instance-addressable wake routing for parallel same-bundle harnesses (#11822) (#12399) on Jun 3, 2026, 2:15 AM
tobiu referenced in commit e932d26 - "fix(ai): route default instance wakes by absence of --user-data-dir (#12407) on Jun 3, 2026, 3:49 AM
tobiu referenced in commit c5e0c44 - "fix(bridge-daemon): activate-foreground before instance set-frontmost for same-bundle wakes (#12462) (#12463) on Jun 4, 2026, 3:04 AM
Context
Parent Epic #11812 graduated Discussion #11792 into a measurement-first path for a possible second Claude-family generalist maintainer identity. Child #11816 owns the OQ8 provider-capacity / Fast Mode measurement gate. Child #11821 owns the sibling AgentIdentity / same-family review / Memory Core continuity contract.
This sub captures the Desktop-grade wake-routing implementation slice. It must not start until #11816 reports
PASS_OQ8or an explicitly accepted equivalent disposition. If OQ8 fails, this child should be parked or closed without implementation.Duplicate sweep before filing:
Desktop-grade instance addressable Claude wake routing wrong instance fail closed #11812did not identify an equivalent #11812 child.rgoverresources/content/issuesandresources/content/discussionsfound older Claude Desktop wake/focus/recovery tickets (#10658, #10677, #10788, #10987), but those address existing single-identity delivery or recovery, not same-bundle sibling instance routing from #11812.Desktop-grade wake Claude sibling,wrong-instance wake, andinstance-addressable wake routingfound #11812/#11816 and older adjacent tickets, but no bounded implementation child for the #11792/#11812 route.The Problem
Current Shape C GUI wake routing uses coarse harness metadata such as
appName: "Claude". That is ambiguous when two same-bundle Claude Desktop profiles or sibling identities can run on the same macOS user. ActivatingClaudedoes not prove the wake payload will land in the intended A2A principal's prompt.For a Claude sibling to be safe, wake routing must become instance-addressable and fail closed when the target cannot be proven. Wrong-instance delivery would corrupt identity boundaries, private context, review provenance, and potentially prompt the wrong maintainer to act on a lane.
The Architectural Reality
WakeSubscriptionServicevalidatesharnessTarget/harnessTargetMetadataand currently permits GUI wake routing throughappName-style metadata.bridge-daemondispatchesosascriptwakes by activating an application and focusing/pasting into the frontmost target. Same-bundle app activation is not a unique instance address.tmuxSessionis already addressable for terminal/control lanes, but Discussion #11792 explicitly forbids treating terminal/tmux as the Desktop product harness.The Fix
After #11816 passes, design and implement a fail-closed instance-addressable wake primitive for the Claude sibling:
userDataDir, PID/window selector, app bundle clone identity, per-instance local bridge/webhook, URL/deep-link targeting, or another falsifiable primitive.appNamebehavior unless an explicit migration is included and verified.Contract Ledger Matrix
appNameappNameroute remains for single-instance harnessesDecision Record Impact
Aligned with #11812 and Discussion #11792. No ADR amendment is required by filing this child. If implementation introduces a durable new wake-routing primitive or mutates always-loaded agent workflow substrate, the implementation PR must run the relevant turn-memory / pull-request gates and declare whether an ADR or Agent OS decision note is warranted.
Discussion Criteria Mapping
Acceptance Criteria
PASS_OQ8or a clearly accepted equivalent disposition before implementation begins.userDataDir, PID/window selector, app bundle clone identity, and per-instance bridge/webhook, with evidence/falsifiers for rejected options.--user-data-dir); tracked in PR #12399 Post-Merge Validation. TheResolves #11822auto-close does NOT imply this runtime AC is proven.appNamewake behavior for Antigravity, Claude, and Codex remains green unless explicitly migrated.userDataDir→pid) + fail-closed evidence are documented in PR #12399; the parent-epic artifact comment with the live result lands at/after merge.Out of Scope
Avoided Traps
appName: "Claude"as sibling addressRelated
Origin Session ID: 008b6468-bb2c-44a5-aa90-e2e97a1ac849 (parent epic / discussion graduation session)
Handoff Retrieval Hints:
query_raw_memories("Claude sibling instance-addressable wake routing wrong-instance fail closed #11812"); live Discussion #11792 Double Diamond Matrix Option B; Epic #11812 AC8-AC12; child #11816 disposition; child #11821 identity contract.