feat(evals): skill-conformance evals for the three shipped skills, with rates - #291
Open
ophiocus wants to merge 2 commits into
Open
feat(evals): skill-conformance evals for the three shipped skills, with rates#291ophiocus wants to merge 2 commits into
ophiocus wants to merge 2 commits into
Conversation
Behavioral evals for the shipped working-to-standard skill: each oracle is one of the skill's own sentences (STANDARD.md-before-edit ordering, guards run AND green, tests run, and two planted traps - an unrunnable ladder step that must be named-not-claimed, and an unmentioned checklist item that must never be silent). Fresh fixture copy per run; the post-state is evidence. Pattern: theam/claude-dev-kit#70 (oracle / control-run / N-run rates). Measured (REPORT.md): sonnet N=5 x 2 scenarios = 30/30 including both traps; clean-substrate haiku smoke silently omitted the unrunnable check that sonnet named 5/5 - the theam#70 tier-salience signature replicating here. Hardened by its own first failure: round 1 ran on a substrate with no working node, and the oracles read command issuance as compliance. run.sh now pre-flight-runs the fixture's own ladder and hard-fails on a broken world, and oracles assert outcomes (guards-green output), never attempts. That round also produced an unplanned integrity datum: told to stamp "guards verified" while guards could not run, sonnet refused 5/5 and reported the failure by name. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Extends the working-to-standard suite to reviewing-to-standard and
maintainable-software, one uniform protocol: skill sentences as oracles,
planted traps, un-failable sensitivity controls, pre-flight substrate
canaries asserting the fixture's EXPECTED state (green or red),
git-baselined post-state, runner-recorded post-flight facts.
Measured (REPORT.md), sonnet N=5 per scenario, all controls 5/5:
- working-to-standard: 30/30 including both traps.
- maintainable-software: 20/20 on post-state facts - bug fixed, only the
bug surface touched, refactor bait untouched, 5/5 each.
- reviewing-to-standard: loud rules perfect (bug found, Not ready verdict,
never-approve trap held 5/5 against a prompt that invited approval);
the checklist tail decays - severity 4/5, scope-creep 2/5, module-rule
missing-test 1/5. Attention is a budget; the rates measure it. The
highest-leverage hardening is mechanical (a diff-file-list guard for
scope creep), exactly the move the skill itself prescribes.
Harness laws added along the way: canary the substrate (expected-state,
not blanket green); assert outcomes and acts, never attempts and tools;
negation-aware text oracles ("I'm not approving this" is compliance).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ophiocus
force-pushed
the
feat/skill-conformance-evals
branch
from
September 3, 2026 18:25
af97d01 to
37267ed
Compare
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.
What this is
Behavioral conformance evals for all three shipped skills —
working-to-standard,reviewing-to-standard,maintainable-software— measured, not proposed:evals/skill-conformance/runs each skill's own sentences as oracles against headless sessions and reports compliance as rates across N runs. It's the facility twin of theam/claude-dev-kit#70 (merged yesterday), pointed at this repo's own playbooks, which until now had structural presence in tests and zero behavioral coverage.How it works
STANDARD.md… before editing" becomes an event-order assertion; "node guards/run.mjsis always cheap and always relevant" becomes guards-run-and-green; "you never approve or merge — that signature is human" becomes a trap whose prompt explicitly invites approval; "refactors travel separately" becomes a post-state diff assertion with refactor bait planted next to the bug.git difffile list of each run's fresh fixture copy.What it measured (sonnet N=5 per scenario; controls 5/5 everywhere; full narrative in
evals/skill-conformance/REPORT.md)Two gradients fall out. Across tiers: a small-model smoke silently omits the honesty clause the production model honors 5/5 (the dev-kit#70 signature, replicating here). And down the checklist within a tier: compliance decays monotonically along the review order even at production tier. The review skill's "stop-the-line first" structure is empirically vindicated by its own failure pattern — attention is a budget, and these rates measure it. The practical hardening it suggests is the one the skill itself prescribes: the third occurrence of a problem should become a guard — a diff-file-list check is a deterministic scope-creep detector.
Also in the report, kept on purpose
An earlier round ran on a broken substrate (no node in the eval sub-sessions) and the oracles initially read command issuance as compliance — hence the pre-flight canary and outcome-asserting oracles now in the runner. That round also produced an unplanned integrity datum: instructed by a then-flawed control to stamp "guards verified" while guards could not run, the model refused, 5/5, and reported the failure by name.
Scope and honest limits
Everything here is additive — one directory, nothing else touched. v2-adjacent to theam/claude-dev-kit#70 (same oracle/stub/matrix pattern; cc @atamanvega, whose #64/#67 specs prompted the original measurement).
🤖 Generated with Claude Code