Can the provisional EvaluatorPlan v0.4 for
benchmark/phase-b2-v2/003-branch-unobserved-head distinguish a real fail-closed
transition from a lexical near-miss, while a separate behavioral check confirms
the intended branch-provenance semantics?
The task concerns tools/branch_convergence_audit.py at frozen public source:
a69aa0ae1ae4862e507511cbd9ad854237d0ad32
At that source, merged-PR matching contains:
head_sha is None or pr.head_sha == head_sha
so an unavailable current branch head can incorrectly satisfy historical merged
PR evidence and become integrated-via-pr / cleanup eligible.
Before creating the calibration branch on 2026-08-28:
main still contained the same vulnerable condition;This is a point-in-time novelty check, not a guarantee that the task will remain novel until a future benchmark freeze. Issue #180 still requires another fresh novelty audit immediately before freezing the scaffold.
EvaluatorPlan:
benchmarks/phase-b2-successor-v2/evaluators/task-003-branch-unobserved-head.evaluator-plan.json
It requires the candidate patch to add:
head_sha is not None
and remove:
head_sha is None or pr.head_sha == head_sha
The evaluator is the canonical metadata-only v0.4 transition verifier. It does not execute candidate code.
The direct transition changes the merged-PR exact-head filter from accepting a missing head to requiring an observed non-null current head that exactly matches the reviewed PR head.
Expected static result:
accept_candidate.The near-miss adds the text head_sha is not None as an inert module constant
but leaves the vulnerable merged-PR condition unchanged.
Expected static result:
reject_candidate.This specifically tests whether v0.4’s required-removal evidence prevents a simple lexical Goodhart failure.
The calibration imports the modified auditor from a disposable checkout of the
exact frozen source and constructs one merged PR whose reviewed head is
reviewed-head-sha.
It then evaluates three current-head observations:
| Current head | Straightforward expectation | Safety meaning |
|---|---|---|
unavailable / None |
post-merge-branch-moved, not cleanup eligible |
fail closed because exact current identity was not observed |
reviewed-head-sha |
integrated-via-pr, cleanup eligible |
exact reviewed source head may retire after provenance checks |
new-unreviewed-head-sha |
post-merge-branch-moved, not cleanup eligible |
post-merge branch reuse does not inherit old approval |
For the inert decoy, the missing-head case is expected to remain vulnerable:
integrated-via-pr and cleanup eligible.
This behavioral channel is separate from the metadata-only EvaluatorPlan verifier. The two channels must agree before Task 003 can be marked calibrated.
The workflow is read-only with respect to the repository and uses no secrets.
It writes only to a disposable frozen-source checkout and ignored results/
evidence paths.
Calibration does not:
A passing calibration establishes only that the provisional evaluator is fit to remain a candidate freeze-time evaluator for this task. Issue #180’s remaining calibration, lifecycle, and novelty gates still apply.