Skip to content

Evaluation: D52 scoring rules and the E3x registered-evaluation routes (history-clean publication) - #5399

Merged
realmarcin merged 52 commits into
mainfrom
codex/wave6-d52-publication-20261029
Oct 31, 2026
Merged

realmarcin merged 52 commits into
mainfrom
codex/wave6-d52-publication-20261029

Conversation

@realmarcin

Copy link
Copy Markdown
Collaborator

The D52 evaluator, the E3x evaluation routes it is built on, and the fixes from claude's independent review of those routes, published from a history-clean branch.

What changes

The D52 scoring rules, a new evaluator instrument (b38117d9…):

  • the owner's D52 rules, including D61's scope: the two committee-contact locations count as one criterion wherever governance_committee_contact is scored, rubric10 E2.2 included;
  • historical scores are not rewritten;
  • re-scoring all 566 committed records changes no score, maximum, item or evidence pointer. Only CM4AI's 134 Q9 coverage labels change, and they now name the regulated-access criteria D52 excludes.

The E3x evaluation routes, 8 commits from d6eed9274:

  • identity-aware blinding, shared with registered evaluation;
  • deterministic reviewer copies, with blind keys kept outside reviewer directories;
  • Unicode-safe short blind identifiers;
  • arm-comparison checks that are invariant under source revisions;
  • ingestion of registered evaluations into the comparability audit.

The E3x review fixes, 14 commits, F1–F12:

  • F1: real provenance arms join registrations through declared mappings, and declared authority roots let the audit read real registrations.
  • F2: retained attempts are anchored to receipts and execution locks.
  • F3: declared comparison identities (arm, condition, method) are blinded.
  • F4: structure and size fingerprints are disclosed in the private key, never in reviewer bytes, and nothing scientific is redacted.
  • F5: the audit roster and the review cohort are declared data (configs/evaluation/*.example.yaml, docs/evaluation-cohorts.md), with no hard-coded project table.
  • F10: tests kill every guard-removal mutant.
  • F6–F9, F11 and F12 are also fixed.

#5125

A provenance record from the real writer now passes prepare, and a writer-shaped round trip retires its tuple from the remaining-rating queue. #5125 can close when this PR merges.

History

This branch publishes ee4a3547d without the commits that added two 1.5 MB file-inventory tarballs:

  • the final tree of the publication commit fb34ed882 is identical to ee4a3547d's;
  • the compact evidence in the tree is byte-identical to the tarballs' members, except the two 2.98 MB file inventories, which are recorded by hash;
  • the largest blob in the published history is api_runner.py, at 441,846 bytes.

claude checked the tree equality and the blob history independently.

Reviews

  • The D52 evaluator: claude's reviews of 4cd8f2a51 and ee4a3547d found it merge-ready. D1 and D3 are resolved, and D2 was settled by D61.

  • The E3x routes: claude's independent review (e3x_d6eed9274_claude_review_2026-10-29.md) found 12 findings. Its re-review of the fixes (e3x_fixes_9f6d1583f_claude_rereview_2026-10-29.md) is merge-ready:

    • F1–F12 are resolved;
    • 649/649 pass on the head and on a scratch merge into main;
    • all guard mutants are killed;
    • a new project declared only in a manifest works with no code change.
  • Five small follow-ups (R1–R4 and R6) are filed as issues, and are being fixed on this branch:

    • an audit crash with --authority-root;
    • advisory lock anchoring;
    • six untested new guards;
    • a generic refusal reason;
    • substring matching of the replicate token.

    R5 and R7 are watch items for before the first billed rating.

Tests

649 passed on 9f6d1583f: the 597-test evaluator and E3x set, plus the fixes' tests.

Not included

No rating runs. #5126 (the v8 comparator's rating route), #2929 and #3343 stay open, with plans and estimates; each needs its own billed run and the owner's word.

🤖 Generated with Claude Code

Refs #5125. Join retained generation, blinding, instrument and transcript evidence without rewriting ratings or claiming scientific approval.
Refs #5125, #5126, #5131, #5132, #5133, #5137. Preserve the existing E2 implementation and record 67 focused offline passes, the historical v8 alternatives, and a separate E5-direct admission and comparison design. No scoring or scientific approval is implied.
Preserve identity-aware blinding and the external reviewer key together with mandatory campaign provenance, stronger seed checks and global evaluation-plan locks. Isolate audit-test execution locks within each temporary fixture.

Refs #5125, #5131, #5132, #5133, #5135, #5136, #5137.
Refs #5133. Document the reviewed E3x merge; preserve the existing seed validation predicate.
Disable site and editable .pth startup while preserving the primary virtual environment prefixes. Record tracked source bytes, dependency metadata, module origins and exact outcomes in fresh external evidence directories.

Refs #5125, #5133. Preserve the initial475 local and1corpus passes as overlapping evidence pending source-isolated repetition.
Retain 475 local passes and the separate passing corpus comparison with exact source inventories, loaded module origins, environment metadata and JUnit. Preserve initial overlapping evidence and the unchanged historical E3x branch.

Refs #5125, #5131, #5132, #5133, #5135, #5136, #5137. No scientific approval, scoring, provider calls or push.
Keep the git-show dump byte-identical, including its indented blank commit-message line. Scope the text/whitespace rule to that one archived artifact; source and tests remain unchanged.

Refs #5125, #5133.
… inventories

Task 6; D52 publication P1/D3, refs #2912 and #5121. Recommit b515cd798ab4ed8771b97b22201c62ef2ed3bf60 at its original boundary, omitting the two inventory tarballs. The original evidence branch remains unchanged.
Task 6; D52 publication P1/D3, refs #2912 and #5121. Boundary-preserving replay of 4cd8f2a5191d7cb58d7bf639603a820d38e825d5.
Task 6; D52 publication P1/D3, refs #5125 and #5121. Recreates integration 6af87fea2ecaf97efd9e339fb3dbee7a6fca0ef3 with the cleaned first parent, retaining the original second-parent history.
Task 6; D52 publication P1/D3, refs #2912 and #5121. Boundary-preserving replay of fbbb2c7599c4a4a98ae27242db9b05c90954a020.
…packet

Task 6; D52 publication P1/D3, refs #5125 and #5121. Boundary-preserving replay of b337ffb8c60c824b67c8db0e094e550a4ba6061d.
Task 6; D52 publication P1/D3, refs #2912 and #5121. Boundary-preserving replay of 073fe89d049e7be6afb4029ddb5ec2878fc00d39.
Task 6; D52 publication P1/D3, refs #2912 and #5121. Boundary-preserving replay of 72beb10f0fde062dda43fda9098a42dfd147c1b6; test changes remain separate from the fix.
…nce tooling

Task 6; D52 publication P1/D3, refs #2912 and #5121. Boundary-preserving replay of 4182cf2bb526754f4caeb633cfa9b68edf2ab33e.
…ry hashes

Task 6; D52 publication P1/D3, refs #2912 and #5121. Boundary-preserving replay of 202ce50b3c8853463458c2a9618ca5ca6ad926b5.
… dispositions

Task 6; D52 publication P1/D3, refs #2912 and #5121. Replay f5d00a9fa0cc1eb058f16122d31ed0db560efccd without its redundant tarball deletions; those blobs were never added to this history.
Task 6; D52 publication P1/D3, refs #2912 and #5121. Boundary-preserving replay of ee4a3547d4f54673a7c7d851d579d7f45030e8c0; final tree is required to equal that original publication head.
F1: normalize registration and provenance arms through cli.api.ARMS and runs.ARM_BY_METHOD without rewriting generation bytes. Exercise the real provenance writer, copied-shape control, unknown identities and an offline external-authority round trip. Runner/audit: 262 passed; corrected mock scope and the external-root canary passes separately.
F5: load exact arm/project/label/replicate identities from a pinned manifest, with no implicit Bridge2AI campaign. Keep historical tables only as named examples. Queue missing declared records and join writer-bound outputs into those placeholders. Causal manifest probes fail before and pass after; 14 focused tests pass.
F3: require a comparison arm and derive condition, method and known replicate tokens from bound provenance. Keep input-arm metadata separate and preserve scientific uses of its display string. Four causal probes fail before; seven focused blinding and round-trip tests pass after.
F10: retain the independent review probes with specific refusal strings and one test per guard. Baseline 11/11 pass; the single I2 canary and remaining ten serial mutants each fail their own assertion. The committed harness restores exact source bytes and retains per-mutant logs.
…ocks

F2: format-mark receipts, pin transcript and stderr bytes and file rosters per attempt/rating, and retain the same evidence in execution locks. Audit verifies available locks, names absent stores, checks committed package bytes, and states that bound means internally consistent. Refuse non-isolated event types. Nine causal probes fail before; 23 receipt and guard tests pass after.
F4: record slot sets, typed key paths, key-path counts and blinded byte sizes in the private key. Compare per-project arm path presence and size ranges without rewriting scientific content. Name structure and size in the notice. The causal structure probe fails before; all 147 pack checks pass after.
F6: join the CLI arm through its manifest assignment to the bound method, input arm, condition, project, label and known replicate. Show bound generation identity in summaries and Markdown. Both causal probes fail before; four focused manifest/mapping tests pass after.
F7: a bound rating without selected evaluator/context targets remains pending_target_selection in JSON and Markdown, with an explicit target-selection action. The causal queue probe fails before and passes after.
…tories

F8: atomically publish and sync receipt/lock evidence before attempt directory creation, including the reserved unknown cost. Audit admits the documented trailing started attempt even before its directory exists. A frozen hard-kill-boundary probe fails before and preserves the earlier rating after; all 13 receipt checks pass.
F9: compare NFKC-folded strings with format characters removed, search short identifiers at overlapping offsets, and refuse padded or edge-punctuated arm identities. Scientific output bytes are never folded. All nine causal probes fail before; 160 blinding/pack tests pass after.
F11/F12: pin PyYAML version and dumper class in the blinding plan, name emitter drift explicitly, and retain planned repeat count separately from actual registered ratings. Both causal probes fail before and pass after.
F5/F3, local read-only review R1: refuse malformed provenance run blocks and mismatched input arms or known replicates. Apply declared campaign method, condition and replicate blinding identities. Both new causal probes fail before; 13 campaign checks pass after. Review issue is retained in the offline report.
F1-F12: preserve the exact serial fourteen-module acceptance command and new-history blob/protected-path checker alongside documentation of cohort and receipt contracts. No generation code, provider calls or historical artifacts are changed.
F2/F3/F5/F6, integration review R2: preserve valid system/status events, require the plan comparison arm to match declared cohort data, and align fixture snapshots, transcript-pin expectations and package-specific alias probes with the new mechanisms. The first full run exposed 11 failures; all 148 affected integration tests now pass.
R1: compare resolved record bindings and refuse records or provenance outside --root before formatting paths. Preserve explicit authority roots for registration inputs. The reviewer rn1 probe and a provenance-only variant both crashed before; both now refuse by name, and the external-registration control passes.
R2: refuse unmarked receipts; report execution_lock_unverified and package_not_committed as pending row and queue reasons. Rename lock_verified to lock_consistent to describe the self-attestable local check accurately. Five causal cases fail before and pass after; existing synthetic round trips now explicitly expect their uncommitted status.
R3: retain all six Appendix B probes with specific refusal assertions and a serial restoration-checked mutation harness. Six intact-guard controls pass; N6, N6b, N10, N18, N19 and N24 each fail when their own guard is removed. Add both rereview modules to the complete E3x/D52 acceptance launcher.
R4: raise a typed ValueError for events outside the isolated-run allowlist and map it to registered_event_type_not_allowed in the audit. Four re-pinned and re-locked injected-event probes fail on the generic reason before and pass after; the receipt regression set remains green.
R6: apply Unicode letter, number and combining-mark boundaries to repN tokens in the shared leakage gate used by registered preparation and campaign packs. Ten longer scientific strings fail before and pass after; eight delimited-token controls remain refused. The combined rereview and blinding suite passes 51 tests. R5 and R7 remain unchanged watch items.
Compose E3x × #5096 relocation contract from origin/main 50bc50a before applying the bounded arm-comparison repair. Preserve both parent histories; record any textual conflicts and their resolutions in the validation ledger.
Reconcile the E3x × #5096 relocation contract: accept exactly one foreign data/preprocessed tail under the selected checkout, refuse ambiguous remaps before normalization, and preserve owned lexical paths for live reads and pinned historical recovery. Keep realpath containment and all manifest pins; leave the shared provenance resolver unchanged.

Retain the bounded-read trap and positive #5096 test, add matching-candidate ambiguity and owned-prefix recovery controls, and distinguish supported and refused relocation in reports. The composed control reproduces match versus unknown; the module passes 74 tests with only the stale committed report failing, whose regeneration follows separately.
Regenerate the evaluation report with scripts/arm_comparison.py --no-figures for the E3x × #5096 relocation contract. The only output change distinguishes unique supported preprocessed relocation from unsupported or ambiguous remaps; all recorded measurements and tables remain byte-for-byte unchanged.
Record the E3x × #5096 relocation contract, conflict resolutions, and successful 92-test #5213 scratch composition. Keep test evidence in ignored checkout storage across reboot while basetemp stays external; unset provider credentials and proxies and deny external networking while allowing loopback fixtures.

Retain the complete six-shard PR partition, four dedicated API lanes, E3x/D52 roster, separate offline CI controls, and outcome summarizer. The scratch merge was aborted; full final-head validation follows this helper freeze.
Complete validation of the E3x × #5096 relocation contract: unique foreign preprocessed tails remain supported, ambiguous remaps stay unknown, and owned lexical paths remain preserved. Retain the successful 92-test #5213 composition and 687-test E3x/D52 acceptance.

Record fresh whole-tree collection errors, complete coverage of all 20,760 CI-partition test instances, and every original shard/control outcome. All 33 environmental or timing failures pass individually. Keep live pytest evidence outside the checkout before publishing completed artifacts; preserve commands, hashes, and local follow-ups without changing generation code.
Resolve add/add conflict in scripts/adhoc/preserve_wave5_validation_20261028.py by keeping origin/main blob 09c8464 (#5388). Taking 09c8464 for the helper leaves three committed evidence manifests (wave5 evaluation, wave5 D52 publication, wave5 #5213) pinning the superseded blob f9b2e3b (sha256 e2057f41...); the old bytes remain recoverable with git show f9b2e3b.
@realmarcin
realmarcin merged commit 4c07980 into main Oct 31, 2026
16 checks passed
@realmarcin
realmarcin deleted the codex/wave6-d52-publication-20261029 branch October 31, 2026 00:04
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