Skip to content

[FEATURE] Foreman: distinct ALREADY-RESOLVED coder outcome (don't escalate the honest 'already done' bail) #970

Description

@joryirving

Feature Description

Add a distinct terminal outcome (e.g. ALREADY-RESOLVED) for the coder honest-bail case where the model determines the issue is already fixed on the branch/base, separate from MODEL-DECIDED NO-GO ("I tried and couldn't"). The coder-escalation trigger (#963/#964) escalates on NO-GO + MODEL-DECIDED; splitting out the already-resolved class lets escalation skip it (nothing for a larger model to do) and lets the controller close/flag the issue instead of burning an escalation run to re-confirm staleness.

Why — field evidence

Running the fleet, 2 of 3 real NO-GO / MODEL-DECIDED coder outcomes were not "couldn't do it" — they were "already done." From live AgenticTask status.result:

  • misospace/KubeTix#152: summary: "Issue #152 is already resolved by prior fix e97d0ca (Fixes #129)…", verdict NO-GO, extra.outcome: MODEL-DECIDED.
  • misospace/pr-reviewer-action#365: summary: "Issue #365 is already resolved on the foreman branch: commit e7c3f18…", verdict NO-GO, extra.outcome: MODEL-DECIDED.

Under #964's trigger both of these escalate to the larger model, which will re-derive the same "nothing to do" conclusion at higher cost. They are a different class from a genuine capability failure.

Proposed solution (sketch, open to design)

  • A dedicated machine outcome the coder emits when it concludes the work is already present (submit_result verdict/outcome), distinct from MODEL-DECIDED.
  • shouldEscalateCoder (feat(foreman): coder-tier escalation, re-dispatch a failed coder to a larger model #964) excludes it — no escalation.
  • The controller treats an already-resolved issue as a terminal non-failure: don't count it as an incomplete/failed task pinning the Workload, and surface it (condition/event) so the operator can close the issue.

Alternatives

  • Keep it under MODEL-DECIDED: status quo; escalation burns a run per already-resolved issue, and the Workload rolls up as if incomplete.
  • Prompt-only convention (model writes "already resolved" in the summary, humans read it): brittle, no machine signal for the controller.

Additional context

Filed as a follow-up to the #964 review, where the maintainer agreed the "nothing to do" honest-bail is a distinct class worth splitting. AI-assisted contribution disclosure applies if this is implemented via the coder harness.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions