fix-evaluation-satellite

Fix: evaluation satellite must not be scheduled (or fail-charged) against an open/incomplete task

Metadata

Statusdone
Assignedagent-854
Created2026-07-25T14:34:58.695840950+00:00
Started2026-07-26T07:35:35.327590932+00:00
Completed2026-07-26T07:58:42.365513337+00:00
Tagsbug, evaluation, lifecycle
Tokens16560569 in / 60096 out

Description

Objective

During the resolve-prophage-source incident, .evaluate-resolve-prophage-source kept being spawned and failing INSTANTLY with "task is open — can't evaluate", and those failures were CHARGED to resolve-prophage-source (driving its spawn_failures up). An evaluation satellite must never be scheduled against a task that is still open/incomplete, and a child eval failure must never be billed to a parent that is not itself in an eval-eligible state.

Relationship to existing work

fix-failedpendingeval-and (DONE) fixed the FailedPendingEval FLIP/eval RESPAWN STORM and children blocked by an UNRESOLVED parent. This is the adjacent facet: an eval scheduled against a task that is merely OPEN (not FailedPendingEval) and the failure-charge coupling. Reconcile/de-dupe with that fix; if its guard already covers the open-task case, close this as duplicate with evidence.

Work

  1. Eval/FLIP scheduling must skip (or defer) tasks not in an eval-eligible terminal state; never spawn .evaluate-* for an open/incomplete task.
  2. A child eval/FLIP failure must not increment the parent's spawn_failures / failure counters when the parent is not eval-eligible.
  3. Resetting a task (or stripping stale .assign-*/eval meta) must reliably cancel any already-scheduled stale eval satellite (so a bulk-retry can't leave a zombie eval behind).

Validation

  • An open task never has a .evaluate-* satellite spawned against it; attempting it is a no-op or deferred, not a charged failure.
  • A child eval failure does not bill spawn_failures to a non-eval-eligible parent.
  • After a bulk retry/reset, no stale .evaluate-*/.assign-* satellite respawns against the reset task.
  • Reproduces the resolve-prophage-source scenario and shows no spurious failures charged to the parent.

Reference

Root-cause layer 2 from the resolve-prophage-source incident (stale .evaluate-* + .assign-* meta; "task is open — can't evaluate" loop).

Depends on

Required by

Messages 2 messages (2 unread)

  1. #1user2026-07-26T07:32:02.291491996+00:00delivered
    Emergency recovery mode: Pi Codex Sol/high, evaluation gates temporarily disabled. Finish/land the existing satellite scheduling/rearm fix without spawning downstream work. Do not re-enable evaluation settings.
  2. #2fix-evaluation-satellite2026-07-26T07:35:44.503440021+00:00read
    Acknowledged emergency recovery instruction — I will finish and land the existing satellite scheduling/rearm fix inline, without spawning downstream work or changing evaluation settings.

Log