Skip to content

feat(evals): background hill-climb that opens draft PRs for skill edits beating the baseline #12035

Description

@kyle-sexton

Refs: #6405

Outcome

#6405's title asks for a background hill-climb: "propose skill edits, keep only those that beat the baseline over enough runs, open each as a draft PR". No issue tracks it, and the lane that runs suites (.github/workflows/eval-browser-dispatch.yml) only measures. This slice builds a scheduled or dispatched run that proposes one skill edit, measures it against the current skill, and opens a draft PR only when the edit wins beyond run-to-run variance.

The design is open, so this slice starts with a short plan comment on #6405 covering the run count, the win margin, which suites are eligible, and the authority limits below. It is labeled work-class: structural to match the parent.

Done when

  • A plan comment on feat(evals): run plugin eval suites in a CI lane and hill-climb in the background #6405 names the trigger, the eligible suites, the run count and win margin with their Basis:, and the per-run --max-cost-usd.
  • A dispatched run on one suite either opens one draft PR whose body links the with-versus-without result for the edit and for the baseline, or exits with no PR and says why in the job summary.
  • The model step holds no merge right, no ci-status write, and no checks: write or workflows permission, and it pushes only to a lane branch, never to main (ADR 0049, docs/adr/0049-run-ci-lanes-on-github-hosted-runners-under-trigger-and-token-hardening.md).
  • Eval transcripts that reach the model step are framed as data per docs/contracts/untrusted-content/README.md.
  • A case whose health line reads skill loaded: no is excluded from the win test.

Out of scope

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.
    on Nov 1, 2026
  2. github-actions commented on Nov 1, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: structural
    Basis: automated intake triage; a maintainer confirms or changes it.

    Size: Large
    Complexity: High
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    I read this as a new scheduled or dispatched eval run, tracked under #6405. It would propose one skill edit and measure it against the current skill. It would open a draft PR only when the edit beats the baseline by more than run-to-run variance. The issue makes the first step a plan comment that fixes the run count, win margin, eligible suites and authority limits. That plan is part of the work, so I'm not treating it as an open question. The done-when items are specific. I found no open duplicate. Because the work touches CI permissions and eval transcripts that reach a model step, it likely needs splitting into smaller changes.

    Automated triage. A maintainer reviews it.

  3. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Nov 1, 2026
  4. melodic-automation-lanes commented on Nov 1, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: Size unset is not one of small, medium; Uncertainty unset is not one of known, knowable. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  5. added
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.priority: mediumReal value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions