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
{{ message }}
Repository navigation
feat(ci): validate, gate and summarize dispatched plugin eval runs #9704
Part of #6405. The smallest first slice from #6405, under the owner's 2026-10-18 decision (option c): workflow_dispatch only, on the role's subscription token, deterministic graders, --max-cost-usd.
.github/workflows/eval-browser-dispatch.yml already runs claude plugin eval on a dispatched hosted runner with bubblewrap and socat, pinned models and --max-cost-usd 5. Extend or generalize it; do not add a second eval workflow.
Scope
Run /evals:validate (validate-cases.py) on the target suite before any model call, and fail the job on a load error.
An input that restricts the run to deterministic graders.
Gate the JSON result through the parser that /evals:plugin-evalreference/ci.md describes, so a partial, skippedPaidGraders, errored or delta-less case reads NOT COMPARABLE instead of a score.
Write the with-versus-without table to the job summary, with one health line per case: did the skill load in the with-arm (from the trace), and how many runs fired.
Keep ADR 0049 hardening as the workflow has it: trusted-actor dispatch, kill switch, read-only token, no write token in the job.
Done when
actionlint .github/workflows/eval-browser-dispatch.yml (or the renamed file) exits 0.
A test of the summary parser over fixture JSON results (a scored case, a partial, a skippedPaidGraders, an errored case) passes and prints NOT COMPARABLE for the last three.
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Understood: extend the existing dispatched eval workflow so it validates the suite before any model call, offers a deterministic-graders-only input, gates JSON results so partial, skippedPaidGraders, errored or delta-less cases read NOT COMPARABLE, and writes a with-versus-without summary with a per-case health line. The ADR 0049 hardening stays as it is. The scope and done-when items are clear. I found no likely duplicates; this is a slice of #6405.
The work-resolve-issue lane stopped partway through this issue and needs a person.
Why, in the run's own words:
The run reported done, but apply-issue-patch did not commit its patch (patch-protected-path): the patch changes a path the issue lane may not push: a workflow, a CODEOWNERS file, submodule config or a settings file. The run's log names the path or check.
Activity
github-actions commentedon Oct 24, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Understood: extend the existing dispatched eval workflow so it validates the suite before any model call, offers a deterministic-graders-only input, gates JSON results so partial, skippedPaidGraders, errored or delta-less cases read NOT COMPARABLE, and writes a with-versus-without summary with a per-case health line. The ADR 0049 hardening stays as it is. The scope and done-when items are clear. I found no likely duplicates; this is a slice of #6405.
Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Oct 24, 2026
The work-resolve-issue lane stopped partway through this issue and needs a person.
Why, in the run's own words:
Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/40112622739
To retry, remove
needs-humanand addagent-readyagain.21 remaining items