You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-ups from the G4 goal-advancement work in #5536 (one pending advancement, one wake-up path). None of them blocks #5536. Each needs an owner before it is picked up.
Concurrent error records consume two attempts (Codex on 🤖 fix: advance an active goal after a terminal stream error or abandoned automatic work (G4) #5536, thread). recordGoalAdvancementAfterStreamError awaits the retry-preference read after finishTurn. If a queued automatic successor starts and also fails during that await, both errors record and hand over an advancement. Two resume attempts are consumed for one resume, and the predecessor's options can race the successor's. Fix: bump a record generation at entry and drop the stale record after the await.
A failed hand-over loses the pending advancement (Codex on 🤖 fix: advance an active goal after a terminal stream error or abandoned automatic work (G4) #5536, thread). reevaluateGoalAdvancement clears the record before armGoalAdvancement resolves. If that rejects (for example a transient goal.json read error), only a log remains. requestContinuationAfterStreamEnd has the same exposure today. Fix: restore the record on rejection and schedule a bounded retry.
A retry that fails before any stream records no resume. A retry started by RetryManager that fails with a non-retryable send error before a stream exists never reaches handleStreamError.
No test for the preparing-manual-send blocker.userInputBlocksGoalAdvancement treats a dequeued manual send that is still preparing as a blocker. The session test harness leaves the queue undrained after a terminal error, so the test needs a harness that drains it.
Follow-ups from the G4 goal-advancement work in #5536 (one pending advancement, one wake-up path). None of them blocks #5536. Each needs an owner before it is picked up.
recordGoalAdvancementAfterStreamErrorawaits the retry-preference read afterfinishTurn. If a queued automatic successor starts and also fails during that await, both errors record and hand over an advancement. Two resume attempts are consumed for one resume, and the predecessor's options can race the successor's. Fix: bump a record generation at entry and drop the stale record after the await.reevaluateGoalAdvancementclears the record beforearmGoalAdvancementresolves. If that rejects (for example a transientgoal.jsonread error), only a log remains.requestContinuationAfterStreamEndhas the same exposure today. Fix: restore the record on rejection and schedule a bounded retry.RetryManagerthat fails with a non-retryable send error before a stream exists never reacheshandleStreamError.userInputBlocksGoalAdvancementtreats a dequeued manual send that is still preparing as a blocker. The session test harness leaves the queue undrained after a terminal error, so the test needs a harness that drains it.Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high• Cost:$52.67