Context
Operator-observed Codex wake behavior on 2026-06-15 sharpened #13287 into a differential validation problem: pure heartbeat wakes appear to submit/start a Codex turn, while actionable A2A message wakes may land in the Codex prompt surface without submitting when the operator is AFK.
#13291 is the close-target leaf for PR #13290's generic L2 submit-boundary pinning. This ticket is narrower: document the controlled validation protocol that #13287 needs before a future runtime fix can claim live L4 Codex delivery.
The Problem
The current wake prompt landing matrix states that adapter success is not enough and that Codex payloads must land in the prompt surface. That is necessary but not precise enough for the regression observed in #13287: the failure may only appear when comparing pure heartbeat, direct A2A message, and mixed message+heartbeat digests on the same active Codex route.
Without an explicit differential protocol, a later PR can pass backend tests, cite a green adapter log, and still overclaim the unresolved live boundary: prompt insertion is not proof that Codex submitted the text and started a turn.
The Architectural Reality
V-B-A anchors checked before filing:
ai/docs/wake-prompt-landing-matrix.md is the existing authority for wake prompt landing proof and already warns that adapter success is not sufficient.
ai/daemons/wake/daemon.mjs#buildWakeDigest() builds different observable digest shapes for messages and heartbeats; pure heartbeat carries the lifecycle directive while message-bearing digests do not.
ai/daemons/wake/daemon.mjs#deliverDigest() selects the adapter from subscription metadata, not from event type, so the current evidence points to payload/focus/submit behavior rather than two explicit adapters.
- Live
@neo-gpt route evidence from #13287 shows active bridge-daemon Codex metadata with no explicit adapter field, so the immediate validation must include the default macOS bridge path.
Duplicate sweep:
- Live latest-open sweep checked the latest 20 open issues at 2026-06-15T02:54:52Z. Adjacent issues found: #13291 (generic submit boundary close-target for PR #13290), #13287 (live L4 behavior), #13283 (add_memory WAL/graph), but no equivalent differential-protocol leaf.
- Live GitHub search for
Codex heartbeat A2A submission differential wake matrix returned no equivalent open issue.
- A2A all-status sweep checked the recent wake/submit/matrix/#13287 message set immediately before creation; it found Ada's #13287 evidence notes and ack, but no competing
[lane-claim] or [lane-intent] for this docs leaf.
- Local exact sweep across
resources/content/** and ai/docs/** found #13137 as the heartbeat-only directive precedent and #13287/#13291 as adjacent scope, not this protocol leaf.
- KB semantic sweep was attempted twice during intake but the OpenAI-compatible synthesis/query path timed out after 15s while KB health itself reported healthy; this ticket therefore relies on live GitHub/local-source evidence and stays docs-only.
The Fix
Update ai/docs/wake-prompt-landing-matrix.md with a Codex-specific heartbeat-vs-A2A submission differential section that requires controlled validation of:
- pure heartbeat digest;
- direct A2A message digest;
- mixed message + heartbeat digest.
Each scenario must record backend adapter intent separately from live Codex prompt landing and submit/start-turn evidence.
Contract Ledger
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback / Edge Case |
Docs |
Evidence |
ai/docs/wake-prompt-landing-matrix.md Codex evidence protocol |
Existing matrix + #13287 ACs |
Matrix names the three Codex digest scenarios that must be compared before #13287 can close. |
If #13290 lands first and changes the generic row numbering, keep this section additive and avoid re-owning #13291's generic submit-boundary work. |
This ticket. |
git diff --check plus PR diff; live L4 evidence remains residual on #13287. |
| #13287 live Codex behavior |
#13287 issue body and operator observation |
This doc leaf improves the evidence protocol but does not claim live prompt submission is fixed. |
PR must use Related: #13287, not Resolves #13287. |
PR body close-target discipline. |
Evidence line should declare L1 docs achieved -> L4 remains required on #13287. |
Decision Record impact
None. This is a documentation/protocol leaf under the existing Agent Harness wake substrate; it does not amend an ADR.
Acceptance Criteria
Out of Scope
- Changing wake daemon runtime behavior.
- Claiming Codex live submit/start-turn behavior is fixed.
- Replacing #13291's generic submit-boundary tests/matrix slice.
Avoided Traps
- Do not close #13287 from this docs-only PR. #13287 remains the live L4 behavior ticket.
- Do not duplicate #13291. #13291 is already tied to PR #13290's generic boundary pin; this leaf is the differential validation protocol for the remaining live regression.
- Do not infer a different adapter. Current V-B-A shows the active route selects by subscription metadata, not event type.
Related
Related: #13287
Related: #13291
Parent epic: #13012
Origin Session ID: 019ec8a7-1f8e-75a3-b223-fe59cc444776
Retrieval Hint: "Codex heartbeat direct A2A mixed wake validation matrix prompt submit start turn #13287"
Context
Operator-observed Codex wake behavior on 2026-06-15 sharpened #13287 into a differential validation problem: pure heartbeat wakes appear to submit/start a Codex turn, while actionable A2A message wakes may land in the Codex prompt surface without submitting when the operator is AFK.
#13291 is the close-target leaf for PR #13290's generic L2 submit-boundary pinning. This ticket is narrower: document the controlled validation protocol that #13287 needs before a future runtime fix can claim live L4 Codex delivery.
The Problem
The current wake prompt landing matrix states that adapter success is not enough and that Codex payloads must land in the prompt surface. That is necessary but not precise enough for the regression observed in #13287: the failure may only appear when comparing pure heartbeat, direct A2A message, and mixed message+heartbeat digests on the same active Codex route.
Without an explicit differential protocol, a later PR can pass backend tests, cite a green adapter log, and still overclaim the unresolved live boundary: prompt insertion is not proof that Codex submitted the text and started a turn.
The Architectural Reality
V-B-A anchors checked before filing:
ai/docs/wake-prompt-landing-matrix.mdis the existing authority for wake prompt landing proof and already warns that adapter success is not sufficient.ai/daemons/wake/daemon.mjs#buildWakeDigest()builds different observable digest shapes for messages and heartbeats; pure heartbeat carries the lifecycle directive while message-bearing digests do not.ai/daemons/wake/daemon.mjs#deliverDigest()selects the adapter from subscription metadata, not from event type, so the current evidence points to payload/focus/submit behavior rather than two explicit adapters.@neo-gptroute evidence from #13287 shows activebridge-daemonCodex metadata with no explicit adapter field, so the immediate validation must include the default macOS bridge path.Duplicate sweep:
Codex heartbeat A2A submission differential wake matrixreturned no equivalent open issue.[lane-claim]or[lane-intent]for this docs leaf.resources/content/**andai/docs/**found #13137 as the heartbeat-only directive precedent and #13287/#13291 as adjacent scope, not this protocol leaf.The Fix
Update
ai/docs/wake-prompt-landing-matrix.mdwith a Codex-specific heartbeat-vs-A2A submission differential section that requires controlled validation of:Each scenario must record backend adapter intent separately from live Codex prompt landing and submit/start-turn evidence.
Contract Ledger
ai/docs/wake-prompt-landing-matrix.mdCodex evidence protocolgit diff --checkplus PR diff; live L4 evidence remains residual on #13287.Related: #13287, notResolves #13287.Decision Record impact
None. This is a documentation/protocol leaf under the existing Agent Harness wake substrate; it does not amend an ADR.
Acceptance Criteria
ai/docs/wake-prompt-landing-matrix.mdcontains a Codex heartbeat-vs-A2A differential section covering pure heartbeat, direct A2A message, and mixed message+heartbeat scenarios.Out of Scope
Avoided Traps
Related
Related: #13287 Related: #13291 Parent epic: #13012
Origin Session ID: 019ec8a7-1f8e-75a3-b223-fe59cc444776
Retrieval Hint: "Codex heartbeat direct A2A mixed wake validation matrix prompt submit start turn #13287"