Skip to content

fix(efficacy): the judge reads each tree against the spec it was built from - #1839

Merged
braboj merged 1 commit into
mainfrom
fix/judge-tree-spec
Sep 19, 2026
Merged

braboj merged 1 commit into
mainfrom
fix/judge-tree-spec

Conversation

@braboj

@braboj braboj commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator

Part of #1767 — a precondition for extending tests/efficacy/SPEC.md for round 3.

Defect

build_bundle copied whatever SPEC.md was current into every bundle. Once the spec is extended, every tree an earlier round built — including the control trees whose gpt-6-astra top-up is owed on 2026-09-25 — would be judged against sign-in, customers and erasure it was never asked for.

Change

  • The bundle carries the tree's own SPEC.md, the copy the harness gave its agent, with line endings normalised to LF.
  • That copy must match a specification a round ran: SPECS lists them by sha256 (today ebecfff1…, "rounds 1 and 2"), and the current file is accepted too. An edited or missing copy refuses the trial, beside the existing leak refusal (refusal()).
  • Each judging record's bundle.spec carries the sha256 and round.

Verified

  • All 51 scored trees under C:\efficacy classify as "rounds 1 and 2". One of them, round 1's C2, carries a CRLF copy; stripping CR makes it byte-identical, which is why the digest is taken after normalising.
  • Self-test 26/26, five new checks: current, CRLF, earlier round, edited, missing.
  • Control: with the bundle made to take the current spec again (the old behaviour), exactly "an earlier round's tree is judged against its own spec" fails, 25/26; reverted.

No CHANGELOG entry: benchmark tooling, nothing a consuming project sees.

🤖 Generated with Claude Code

…t from

The judge copied whatever SPEC.md was current into every bundle, so once
the specification is extended for round 3, a tree an earlier round built
would be judged against features it was never asked for. The bundle now
carries the tree's own copy, the one the harness gave its agent, checked
against the specifications rounds ran (line endings normalised); a tree
carrying an edited or no specification is refused. Each judging records
the specification's sha256 and round.

Part of #1767

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@braboj
braboj merged commit aa1f06a into main Sep 19, 2026
1 check passed
@braboj
braboj deleted the fix/judge-tree-spec branch September 19, 2026 21:29
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