Repository navigation
Evaluation: D52 scoring rules and the E3x registered-evaluation routes (history-clean publication) - #5399
Merged
Conversation
Refs #5125. Join retained generation, blinding, instrument and transcript evidence without rewriting ratings or claiming scientific approval.
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.
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.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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…):governance_committee_contactis scored, rubric10 E2.2 included;The E3x evaluation routes, 8 commits from
d6eed9274:The E3x review fixes, 14 commits, F1–F12:
configs/evaluation/*.example.yaml,docs/evaluation-cohorts.md), with no hard-coded project table.#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
ee4a3547dwithout the commits that added two 1.5 MB file-inventory tarballs:fb34ed882is identical toee4a3547d's;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
4cd8f2a51andee4a3547dfound 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:Five small follow-ups (R1–R4 and R6) are filed as issues, and are being fixed on this branch:
--authority-root;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