Summary
A probe that ends blocked/failed still yields actionable evidence (e.g. "the endpoint is
auth-gated, so the direct injection never reaches the vulnerable path"). But the framework gives
the Supervisor no way to act on it: citing that evidence forces the failed task into depends_on,
and compile_plan rejects any selected task whose dependency is not DONE. The agent can learn
from a probe but cannot change direction accordingly, so it deadlocks and the run fails with:
supervisor_contract: Supervisor failed after 2 attempts: selected task has unfinished dependencies
Why
Three rules combine to make a failed probe's evidence structurally uncitable:
commit_executionmapsExecutionOutcome.BLOCKED->TaskStatus.FAILED.compile_planrequires every cited observation's producing task to appear independs_on.compile_plan's selection check requires everydepends_ontask to beDONE.
The root conflation: depends_on means both "closed, evidence available" and "succeeded". A
negative result is a result — the agent needs to pivot on it, not treat it as an unfinished
prerequisite.
Expected behavior
When a probe rules out an approach, the Supervisor should be able to pivot to a new hypothesis on the same target using that probe's evidence as its basis.
Possible fix
Accept a closed producer (DONE or FAILED) as a citable basis, or separate the "basis" relation
from the "prerequisite" relation so failed probes can still steer the next decision.
Activity
0No activity yet.