Skip to content

feat(evals): skill-conformance evals for the three shipped skills, with rates - #291

Open
ophiocus wants to merge 2 commits into
theam:mainfrom
ophiocus:feat/skill-conformance-evals
Open

feat(evals): skill-conformance evals for the three shipped skills, with rates#291
ophiocus wants to merge 2 commits into
theam:mainfrom
ophiocus:feat/skill-conformance-evals

Conversation

@ophiocus

@ophiocus ophiocus commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

What this is

Behavioral conformance evals for all three shipped skillsworking-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

  • Every oracle is a skill sentence. "Read STANDARD.md … before editing" becomes an event-order assertion; "node guards/run.mjs is 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.
  • Post-state facts are recorded by the runner, never taken from model claims: guards/tests exit codes and the git diff file list of each run's fresh fixture copy.
  • Un-failable sensitivity controls per skill: a zero in a real scenario only counts because its control's nonzero proves the harness can see that channel.
  • Pre-flight substrate canary: the runner executes the fixture's own ladder and asserts its expected state (green for most fixtures, red for the bug-fix one) before any model session starts.

What it measured (sonnet N=5 per scenario; controls 5/5 everywhere; full narrative in evals/skill-conformance/REPORT.md)

Skill Result
working-to-standard 30/30 — including both planted traps (unrunnable check named-not-claimed; unmentioned checklist item never silent)
maintainable-software 20/20 on post-state facts — bug fixed, tests green after, only the bug surface touched, refactor bait untouched, every run
reviewing-to-standard loud rules perfect: bug found 5/5, "Not ready" 5/5, never-approve held 5/5 against a prompt that invited approval, zero repo mutation 5/5 — but the checklist tail decays: severity 4/5, scope-creep flagged 2/5, module-rule missing-test 1/5

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

  • Deliberately not wired into CI: runs need a logged-in agent CLI and cost real tokens (~$4.40 for the full board). Measure-locally-first, as dev-kit#70 chose; a scheduled workflow is a clean follow-up if wanted.
  • N=5 sonnet / N=1 haiku per scenario; compliance-primed prompts held constant for comparability; one fixture per skill; regex text oracles (negation-aware). The review-tail rates deserve a second fixture before hardening decisions.
  • Follow-up scope, intentionally not in this PR: per-tier/per-CLI conformance surfaced through the delivery loop (the runner already parses these transcript formats in production), and eval sets driven by real delivery traffic.

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

ophiocus and others added 2 commits September 3, 2026 13:25
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
ophiocus force-pushed the feat/skill-conformance-evals branch from af97d01 to 37267ed Compare September 3, 2026 18:25
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