feat(skill): run-assert-eval smoke-run 3 real test cases before full inference - #317
Open
alex ngo (ango10) wants to merge 2 commits into
Open
feat(skill): run-assert-eval smoke-run 3 real test cases before full inference#317alex ngo (ango10) wants to merge 2 commits into
alex ngo (ango10) wants to merge 2 commits into
Conversation
added 2 commits
August 13, 2026 17:33
alex ngo (ango10)
requested review from
Aaron Aspinwall (AaronAspinwall123),
Chang Liu (changliu2),
Jake Present (jakepresent) and
tangym
as code owners
August 14, 2026 00:50
Collaborator
Author
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.


Summary
Adds a smoke-run capability to the
run-assert-evalskill: validate a config end-to-end on 3 real test cases before committing to a full 25 prompt + 25 scenario run. Implemented entirely with existing ASSERT primitives. No changes toassert_ai/.Motivation / linked issue
Resolves #316.
Plumbing errors: a wrong
target.callable, missing credentials, a callable that raises on its first tool call, a tool-schema mismatch, an undeployed judge model, etc. only surface once inference starts, after systematize and test_set have already run. Today the cheapest way to find out is to pay for the whole suite.Changes
smoke_slice.py(new): slices the first N rows of a given kind out of a suite's already-generated test set toartifacts/smoke/<suite>-<kind>-<n>.jsonl, and prints a JSON summary. Stdlib-only (PyYAML only for the optional--configform). Three deliberate safety properties:latest.json, the pointer ASSERT itself maintains, rather than assumingv0001. Version dirs are allocated fresh on every cache miss.test_set.jsonland invalidate the very cache the smoke run exists to protect.tests/test_smoke_slice.py(new): 27 tests; all build isolated suite trees undertmp_pathand never touch the realartifacts/results/.workflows/measure-clarity-failures.md: new Step 5a, offered by default: generate artifacts withinference.enabled=false --override judge.enabled=false, slice 3 rows, run them underrun=<run>-smoke, then gate. Documents where to read the result (results status, viewer URL), that a smoke run is a run inside the suite and not a suite card, and a "never substitute these" block covering thesample_sizetrap, the separaterun:label, and the suite-root write ban.workflows/govern-and-remeasure.md: smoke the governed callable before the governed run, since that's where a wrongagent_guardedpath is most likely and a failure wastes half an A/B.SKILL.md,.github/prompts/run-assert-eval.prompt.md,.cursor/rules/assert.mdc: the run step in all three surfaces the README requires kept aligned.README.md,SETUP-CHECKLIST.md: slicer reference section and two verification bullets.Documentation-only outside the two new files; no
assert_ai/code changed.Testing
pytest .claude/skills/run-assert-eval/tests/→ 56 passed (29 existing + 27 new). This is exactly how CI invokes it;regression.ymlalready globs.claude/skills/**and that test directory, so the new suite is picked up with no workflow change.pytest .claude/skills/run-assert-eval/tests/ tests/test_init_command.py→ 68 passed after mergingmain, since the incoming fix(init): emit YAML block scalars for multi-line strings and non-ASCII #314 touches config emission.travel-langgraph-budget-overrun: 3 prompt cases, inference 38.6s + judge 14.9s = 53.6s, 3 judge calls, judge failure rate 0.0%. Artifacts,scores.jsonl,metrics.jsonand all five.viewer/read-model files were produced, and the run is discoverable via bothassert-ai results status <suite> baseline-smokeand the viewer run page.--overridecommands validated against the real config loader (_apply_config_overrides+load_runtime_context, no LLM calls): step 1 disables inference/judge as genuine booleans; step 3 keepssuite_rootunchanged so systematize/test_set stay cache hits, routes the slice toinference.test_set_path, and leavestest_set.prompt.sample_sizeat 25.Checklist
pytestand/or viewer checks as applicable).CHANGELOG.mdentry is included.