Skip to content

Fail loudly when evaluation answers and questions diverge in count - #1674

Open
oliverames wants to merge 1 commit into
anthropics:mainfrom
oliverames:eval-report-strict-zip
Open

Fail loudly when evaluation answers and questions diverge in count#1674
oliverames wants to merge 1 commit into
anthropics:mainfrom
oliverames:eval-report-strict-zip

Conversation

@oliverames

Copy link
Copy Markdown

generate_eval_report in the mcp-builder skill pairs each QA pair with its result through zip(). The two lists should always match one to one, but if they ever drift apart, zip silently truncates and the report drops the unmatched rows. A broken run then reads as a clean run that happened to have fewer questions, which is the worst way for this script to fail because the person evaluating a description trusts the row count.

This passes strict=True so a length mismatch raises instead. It is the same pairing every other consumer of these two lists assumes.

One trade-off worth naming: zip(strict=True) needs Python 3.10, and 3.9 has been end of life since October 2025. If you would rather keep 3.9 compatibility, an explicit length check before the loop works just as well, and I am glad to switch it.

I left webapp-testing/scripts/with_server.py alone even though it has a similar bare zip, because it already validates len(args.servers) != len(args.ports) and exits before reaching it.

generate_eval_report pairs each QA pair with its result through zip(). If
the two lists ever differ in length, zip silently truncates and the report
quietly drops the unmatched rows, which reads as a clean run with fewer
questions. strict=True turns that case into a visible error instead.

zip(strict=True) needs Python 3.10; 3.9 has been end of life since
October 2025. Happy to switch to an explicit length check if you would
rather keep 3.9 compatibility.
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