Skip to content

Run the evals in CI - #27

Closed
roborourke wants to merge 1 commit into
feature/eval-harnessfrom
feature/evals-workflow
Closed

roborourke wants to merge 1 commit into
feature/eval-harnessfrom
feature/evals-workflow

Conversation

@roborourke

Copy link
Copy Markdown
Collaborator

Closes #18

Stacked on #26. The base retargets as the PRs below it merge.

Two levels, split by what they cost.

Scripted joins the existing CI workflow, so it runs on every push and pull request, forks included. It replays fixed tool calls rather than asking a model, so it is free and deterministic. It checks the harness — MCP connection, tool discovery, the turn loop, each scenario's setup and grading — which is the part most likely to break and the part a model run can't isolate.

Model is its own Evals workflow, on pushes to main and manual dispatch. No schedule, as you asked. Skipped on forks, which cannot read secrets. When no ANTHROPIC_API_KEY is set it skips with a note rather than failing, so a contributor without one doesn't get a red tick they can't fix.

Each scenario runs three times and passes on a majority, and only scenarios tagged core can fail the build — a single unlucky run shouldn't block a merge. The run step uses continue-on-error and the failure is re-raised at the end, so the report is still summarised and uploaded when something fails.

Manual dispatch takes a model and a repeat count, so you can try claude-sonnet-5 or a single quick run without editing anything.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown

Playwright test results

passed  29 passed

Details

stats  29 tests across 5 suites
duration  51.1 seconds
commit  7f77ff5

Two levels, split by what they cost.

The scripted run joins the existing CI workflow, so it runs on every push
and pull request including forks. It replays fixed tool calls rather than
asking a model, so it is free and deterministic. It checks the harness —
MCP connection, tool discovery, the turn loop, every scenario's setup and
grading — which is the part most likely to break and the part a model run
can't isolate.

The model run is its own workflow, on pushes to main and manual dispatch.
No schedule: a nightly run spends money on a repository that may not have
changed. It is skipped on forks, which cannot read secrets, and skips with
a note rather than failing when no ANTHROPIC_API_KEY is set, so a
contributor without one doesn't see a red tick they can't fix.

Each scenario runs three times and passes on a majority, and only
scenarios tagged `core` can fail the build. A model is not deterministic,
so a single unlucky run must not block a merge. The step uses
continue-on-error and the failure is re-raised afterwards, so the report
is still summarised and uploaded when a scenario fails.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@roborourke
roborourke force-pushed the feature/evals-workflow branch from 4679556 to 7f77ff5 Compare September 15, 2026 10:47

@roborourke roborourke left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Going to close this one out, CI isn't a good place for non-deterministic tests. It's enough to have a way to confirm outputs locally via #26

@roborourke roborourke closed this Sep 16, 2026
@roborourke
roborourke deleted the feature/evals-workflow branch September 16, 2026 10:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant