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
Manual cron runs that exceed TASK_RECONCILE_GRACE_MS (5 min) surface a transient lost task-registry status and a Background task lost system message in the grace window before resolveDurableCronTaskRecovery (1fae716) reconciles. The final result is correct, but the user who triggered the run sees an inaccurate intermediate state.
Where
src/cron/service/ops.tsprepareManualRun / finishPreparedManualRun — task is created via tryCreateManualTaskRun but markCronJobActive is never called, so task-registry.maintenance.tshasBackingSession returns false for the cron branch under isCronRuntimeAuthoritative()=true.
#68191 covers the broader durable-recovery story already addressed by 1fae716. This issue is the residual UX gap on the manual-run path: producer-side `markCronJobActive`/`clearCronJobActive` would prevent the transient lost state entirely, complementing the sweeper-side recovery already in main.
Possible directions (not prescriptive — happy to defer to maintainer preference)
Mirror the `markCronJobActive` / `clearCronJobActive` pair into `prepareManualRun` + `finishPreparedManualRun` (try/finally), matching the contract on `runDueJob` / `executeJob`.
Or treat as wontfix if the transient lost surface is acceptable post-`1fae716a04`.
Severity
Low — final state is correct; only intermediate UX noise on long manual runs.
Why filing as issue (not PR)
Closed prior PR #71040 because its primary scenario (isolated agentTurn startup catchup) was superseded by `deferAgentTurnJobs:true` (7877182) and `1fae716a04`. This narrower scope deserves maintainer triage before another PR.
Summary
Manual cron runs that exceed
TASK_RECONCILE_GRACE_MS(5 min) surface a transientlosttask-registry status and aBackground task lostsystem message in the grace window beforeresolveDurableCronTaskRecovery(1fae716) reconciles. The final result is correct, but the user who triggered the run sees an inaccurate intermediate state.Where
src/cron/service/ops.tsprepareManualRun/finishPreparedManualRun— task is created viatryCreateManualTaskRunbutmarkCronJobActiveis never called, sotask-registry.maintenance.tshasBackingSessionreturns false for the cron branch underisCronRuntimeAuthoritative()=true.runDueJob/executeJob(timer.ts), which were wired tomarkCronJobActive/clearCronJobActiveby fix: honor exec approval security and clean up stale tasks #60310.Repro
payload.kind: \"agentTurn\"(force mode → up to 60-min timeout) or any manual-run path that takes longer than 5 minutes.Why this is narrower than #68191
#68191 covers the broader durable-recovery story already addressed by 1fae716. This issue is the residual UX gap on the manual-run path: producer-side `markCronJobActive`/`clearCronJobActive` would prevent the transient lost state entirely, complementing the sweeper-side recovery already in main.
Possible directions (not prescriptive — happy to defer to maintainer preference)
Severity
Low — final state is correct; only intermediate UX noise on long manual runs.
Why filing as issue (not PR)
Closed prior PR #71040 because its primary scenario (isolated agentTurn startup catchup) was superseded by `deferAgentTurnJobs:true` (7877182) and `1fae716a04`. This narrower scope deserves maintainer triage before another PR.
[AI-assisted analysis]