{"content":"Development journal for commit ebe409f7 (feat(sessions): push tier — Claude inbox socket + codex queue + wake policy (session adapters P3)).\n\nP3 of the local session adapters design — the headline milestone: framing.ts builds the peer-input frame with the send_message reply hint (never as the user); the Claude Code push adapter posts {type:user} frames into the live session inbox socket recorded by discovery (5s timeout, no token on unix); the Codex push adapter hands framed mail to the official codex queue --thread --message (works for live and resumed threads, CODEX_HOME passthrough). Router push matrix: enqueue first, then push when canWake && deliverable && tier==='push' with adapter material (Claude: socket must still exist; Codex: sessionId) — success marks the mail delivered (queue entry becomes the receipt), any failure degrades to the queue without losing mail; presence-only discovery sessions are never pushed (double opt-in). canWake is resolved in the orchestrator from the trust tier (local/team/trusted/contact wake; stranger queues; unwired evaluator conservative). tests/sessions 39/39, test:fast 4162/4162. Next: P4 hooks turn tier (Gemini/Copilot/Cursor/Grok CLI) + sessions.wakePolicy config knob.\n\nVerification:\ngit diff --check\n\nFiles:\ndocs/superpowers/specs/2026-11-11-oac-local-session-adapters-design.md\nsrc/core/chat/privateChatAutoReply.ts\nsrc/core/sessions/adapters/claudeCode.ts\nsrc/core/sessions/adapters/codex.ts\nsrc/core/sessions/framing.ts\nsrc/core/sessions/mailQueue.ts\nsrc/core/sessions/router.ts\nsrc/daemon/defaultHandlers.ts\ntests/sessions/localSessionsPush.test.mjs","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}