Repository navigation
Report commands search eval scores against the base in CI - #108
Merged
Merged
Conversation
mattpodwysocki
previously approved these changes
Oct 21, 2026
mattpodwysocki
left a comment
Contributor
There was a problem hiding this comment.
Looks good from a CI safety angle: pull_request only, read-only contents, no persisted credentials, the base SHA goes through env, and it only writes to the job summary. I ran it locally end to end and the table matches the tests. A few small things:
- Against a base that has the eval tests but not the report writer (this PR's base, and main right after #103 merges), the summary says "the base predates the eval (its run had no eval tests)". Something like "the base run wrote no reports" would be accurate in both cases.
parse_linekeys rows by query, so a query repeated in a set collapses into one row and the summary's counts can differ from whatcargo testsaw. I tried a set with the same query twice (one right, one wrong) and got "below its floor" while the test passed. A list instead of a dict, or rejecting duplicates as invalid rows on the Rust side, would close that.- Minor: the shared target dir only rebuilds the base because
git worktree addruns after the head build and gives the base files newer timestamps. That's fine as ordered, but a short comment would keep someone from moving that step earlier.
It'll also need a quick rebase onto #103's latest (6e3e44c).
zmofei
force-pushed
the
feat/commands-search-eval
branch
from
October 21, 2026 17:00
50185dc to
a1a0bc4
Compare
Member
Author
|
Thanks! Fixed all three in a1a0bc4 and rebased onto 1dad149, the latest on #103.
|
zmofei
added this pull request to stack #109
October 21, 2026 17:01
A search-eval job runs the eval sets on the PR and its base and writes the scores, and the queries the change fixed and broke, to the job summary. It never fails: the eval_set tests are the gate.
Say the base run wrote no reports rather than that it predates the eval, since a base with the eval tests but no report writer looks the same. Reject a query repeated in a set, which cargo test counted twice and the summary once. Note why the base worktree must be added after the head build.
zmofei
force-pushed
the
feat/commands-search-eval
branch
from
October 21, 2026 17:03
a1a0bc4 to
a5a184d
Compare
mattpodwysocki
approved these changes
Oct 21, 2026
mattpodwysocki
left a comment
Contributor
There was a problem hiding this comment.
Thanks @zmofei, all three addressed, and rejecting a duplicated query on the Rust side too is a nice touch. Approving.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a
commands search evalCI job that runs thecommands searchquery sets on the PR and its base, and writes the scores, plus the queries the change fixed and broke, to the job summary. It never fails; theeval_set_*tests are the gate. Split out of #103 per review.MAPBOX_SEARCH_EVAL_REPORTmakes theeval_set_*tests write each query's result to a directory, even when they fail.scripts/commands-search-report.pyturns the head and base reports into the summary. The Required column shows the scores below which the tests fail (recorded score less the slack).scripts/test-commands-search-report.shchecks the summary against hand-written reports, run in the shell job.No PR comment: the summary needs no write token, so fork PRs get it too.
Testing:
actionlint,shellcheck, the report test and the full suite pass locally, and I ran the eval with reports and rendered the summary. Not verified: the job on GitHub, including the base comparison.Stacked on #103; retarget to
mainonce it merges.