LearnNewsExamplesServices
Frontmatter
id13487
titleClassify Codex wake submit evidence without turn-start overclaim
stateClosed
labels
bugairegressionarchitecturemodel-experience
assigneesneo-gpt
createdAtJun 19, 2026, 1:03 AM
updatedAtJun 19, 2026, 1:16 AM
githubUrlhttps://github.com/neomjs/neo/issues/13487
authorneo-gpt
commentsCount0
parentIssue13480
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 19, 2026, 1:16 AM

Classify Codex wake submit evidence without turn-start overclaim

Closed v13.1.0/archive-v13-1-0-chunk-3 bugairegressionarchitecturemodel-experience
neo-gpt
neo-gpt commented on Jun 19, 2026, 1:03 AM

Context

PR #13484 delivers the first safe slice of #13480: it stops the wake daemon from claiming a Codex osascript route is fully delivered when the only proven fact is that the UI submit attempt was issued. During review, Vega correctly caught that #13484 must not auto-close #13480, because the broader live submit-fix and live matrix validation remain open.

This ticket exists as the narrow delivered leaf that #13484 can honestly close while #13480 stays open for the submit-proven route and live validation.

Release classification: boardless (close-target split for an already-open PR; does not expand release scope).

Live latest-open sweep: checked latest 20 open GitHub issues at 2026-06-18T23:02:33Z; no equivalent narrow classification leaf found. A2A in-flight sweep: checked latest 30 messages; no competing [lane-claim] / [lane-intent] for this narrow leaf found. Exact local sweep over issues/discussions found adjacent #13287, #13291, #13347, and #13480 context, not a duplicate. Memory sweep for Codex wake submit evidence classification Submit attempted turnStartProof submitProof returned no prior duplicate.

The Problem

The wake daemon previously used final-delivery vocabulary for Codex UI automation even though an osascript exit only proves the adapter attempted to submit. In the current regression, this overclaim masks the actual failure mode: prompts can land in Codex without a turn starting.

The broader #13480 bug still owns the live submit reliability fix. This leaf owns the evidence-classification step that makes the bug observable without overstating what the daemon can prove.

The Architectural Reality

The wake-daemon delivery path has three distinct evidence classes:

  • Route/backend completion: the script or adapter exited.
  • Submit attempt: the UI automation attempted the Codex submit sequence.
  • Turn start: Codex accepted the submit and began a model turn.

Only the third class is a live Codex Desktop proof. The daemon can unit-test the first two with mock osascript; it must label the third as live-required until a live turn-start proof exists.

The Fix

  • Classify Codex osascript route completion as Submit attempted, not Delivered.
  • Add durable evidence fields that distinguish attempted submit from live turn-start proof.
  • Keep non-Codex osascript route vocabulary unchanged where the existing route semantics still apply.
  • Preserve the #13457 pure-heartbeat no-submit behavior.
  • Cover the branch with focused wake-daemon unit tests.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
Wake-daemon Codex delivery log vocabulary #13480 / PR #13484 review finding Codex route logs Submit attempted when only adapter completion + submit attempt are proven Keep turnStartProof=live-required until live validation exists PR body + unit assertions Focused wake-daemon unit coverage
Wake-daemon evidence fields #13480 / #13457 preservation Emit explicit submitProof and turnStartProof values for Codex submit attempts Do not infer turn start from osascript exit PR body + unit assertions Focused wake-daemon unit coverage

Decision Record impact

none — this is a narrow wake-daemon evidence-labeling leaf under the existing #13480 investigation.

Acceptance Criteria

  • Codex osascript wake delivery logs Submit attempted instead of overclaiming Delivered when only the submit attempt is proven.
  • Codex wake log evidence distinguishes submitProof=attempted from turnStartProof=live-required.
  • Non-Codex osascript routes retain their existing delivery vocabulary.
  • Pure-heartbeat wake paths from #13457 do not produce submit/delivery/suppression logs when no prompt should be submitted.
  • Focused wake-daemon unit coverage verifies the evidence-classification behavior.

Out of Scope

  • Fixing the actual intermittent Codex turn-start failure.
  • Proving a live Codex Desktop turn-start.
  • Completing the #13480 live matrix before/after validation.
  • Changing the submit primitive or route selection.

Related

Handoff Retrieval Hint: Codex wake submit evidence classification Submit attempted submitProof turnStartProof #13484 #13480