v0.5.0 — M4 hardening + M5 anti-gaming scoring
402 commits since v0.3.0. Two milestones landed:
M4 — Hardening & release readiness
- Agent hardening: every field the LLM emits is guarded against non-string types (#297, #313, #317).
- Benchmark scoring: module-recall farming fixed (#289), backlog threshold reachable for single-word titles (#308), composite-score wiring (#341).
- Leakage lockout: tag-creation-date filter for frozen releases (#332), release-tag scrubbing (#330), forward-reference masking in the git-only fallback (#312).
- Tooling:
compare_evalCLI for diffing replay artifacts (#306),--fail-underscore floor for CI gating (#318, #367). - M3 acceptance run completed clean:
generalization_gap = 0.097, zero crashes across 5 repos.
M5 — Measured, anti-gaming contribution scoring
scripts/score_pr_delta.py: diffs tworun_evalartifacts (baseline vs. a PR's agent) and applies a Pareto floor — a PR's value label now requires a measured, non-regressing benchmark delta, not a maintainer's read of the diff (#1295).- Merge-block + ceiling label: a measured regression is a hard merge block for
agent/PRs; a large, clean win on every axis unlocks a new ceiling label,mult:breakthrough(×3.0), abovemult:core-correctness(×2.0) (#1302). REVIEW.mddocuments the full evidence requirement and tier ladder foragent/PRs.- Public CI smoke check (
agent-benchmark-smoke.yml) on everyagent/-touching PR — crash/shape only, explicitly not the scoring evidence itself.
Full test suite green (3675 passed). See ROADMAP.md for the complete milestone breakdown.