evaluate
August 12, 2026 · View on GitHub
evaluate
Category: eval · Alpha: enforcement · Invocation: /dev-kit:evaluate (human-invoked)
Implementation: The workflow-native harness-effectiveness integration is implemented by the reducer and producers described in the design proposal.
evaluate currently measures whether the agent behaves correctly when running
dev-kit skills across the existing review/security/plan, harness-quality, and
os-quality rubrics. It preserves the legacy D1–D7 Agent Behavior report and
consumes workflow evidence for five effectiveness components. It replays
recorded transcripts and reads structured evidence produced during build and
repair without creating success evidence in a separate workflow. Source:
skills/evaluate/SKILL.md.
When to use it
- The user types
/dev-kit:evaluatefor the normal combined report. - A Phase 3 batch (or any harness change) is about to land and needs the
harness-qualityrubric gate. - An env-var, secret, or CI cost change needs the
os-qualityrubric gate. - A nightly cron auto-call rotates through the registered dimensions.
Invocation
/dev-kit:evaluate
/dev-kit:evaluate --harness-quality
/dev-kit:evaluate --os-quality
/dev-kit:evaluate --case <id> --dry-run
Effectiveness is part of the default report and is not enabled by a new
option. Its five components are
prevention_quality, first_pass_quality, recovery_quality,
learning_quality, and measurement_integrity. Missing workflow evidence
will produce INSUFFICIENT_EVIDENCE, never a fabricated zero or pass.
--dry-run remains a legacy fixture/judge option and must label synthetic
results. See skills/evaluate/SKILL.md and the proposal for the runtime
contract.
The report keeps two namespaces: legacy Agent Behavior D1–D7 and
harness_effectiveness. Existing verdicts and scales remain backward-compatible;
the new component score is not substituted into the legacy weighted mean.
Failure modes
--harness-quality/--os-qualityagainst a repo with zeroeval/cases/<dim>/case fixtures returns a singleNO_FIXTURESverdict — never a clean pass.lib/eval_runner.run_evalshort-circuits into this verdict the moment it sees a fixture-less dim.- A per-case judge call that raises (bad API key, rate limit, model rename, etc.) is recorded as ROT with an
error=<msg>field. The per-case report line surfaces that error next to the score, andlib/eval_runner.write_reportprefixes the report with anINFRA_FAILUREbanner when >= 80% of cases are ROT with an error attached — so a judge-infra failure is visually distinct from a genuine behavior regression.
Both behaviors live in lib/eval_runner.py and were added to keep harness / os from silently looking green while nothing is actually graded, and to prevent the common confusion where a single bad API key looks like 100% of cases failing simultaneously.