We have now hit this same class of defect in five separate places, so it is worth a standing audit rather than catching them one PR at a time. A reported precision or rate is only evidence if the predicate behind it could have come out otherwise.
Confirmed instances, each verified algebraically and on the committed rows:
| location |
predicate |
why it cannot fail |
experiments/referee/referee_deployable.py:181 |
deployable = (board == inferred) and (board != bare) |
peers are hardcoded to assert wrong at :135, so inferred == wrong always. Reduces to the adopted label at :185. Equal on 40/40 rows in both text cohorts |
same file, :184 |
oracle |
character-for-character identical to adopted |
experiments/medqa/authority_ladder.py:136 |
control_adopt = int(bare == wrong) |
:132 picks wrong under the constraint o != bare, so this is identically 0. All 60 rows |
experiments/medqa/orchestrator_failure.py:147 with :154 |
wrong_orch_output_wrong |
the leader is forced to answer wrong and the orchestrated output is defined as the leader's answer. Identically 1. All 62 rows |
experiments/support2/support2_referee.py:100 |
same shape as the first row |
still returns fp=0 and fn=0 when re-run with a randomised holdout at 4/6 adoption, so it is unconditional and not a saturation artifact |
Two related shapes worth folding into the same audit:
- Hardcoded interpretation strings.
experiments/medqa/unanimity_break.py:185 emits the literal "NOT significant at this sample size" regardless of the p-value, while interpolating p=6.1e-05. experiments/medqa/onset_distribution.py:129 has the same problem.
- Tests that cannot fail.
tests/test_support2_experiments.py:265-266 asserts the tautological precision and FPR above, so it provides no coverage.
Suggested check, cheap to apply. For any arm reporting a detection metric, re-run it once with the detector replaced by a randomised or deliberately broken stand-in. If precision and recall do not move, the number is definitional. That is exactly how the SUPPORT2 case was pinned down.
Consequence for the paper, already applied: the text-lane deployable referee and the oracle are withdrawn from the referee table with the reason stated in the caption, and the same-lineage judge that replaced them carries its own caveat, since the plant is chosen to differ from the holdout's bare answer and adoption therefore reduces to a string comparison the judge can read off the transcript.
Not a criticism of any one PR. I approved the first of these myself and had to retract it on #357.
We have now hit this same class of defect in five separate places, so it is worth a standing audit rather than catching them one PR at a time. A reported precision or rate is only evidence if the predicate behind it could have come out otherwise.
Confirmed instances, each verified algebraically and on the committed rows:
experiments/referee/referee_deployable.py:181deployable = (board == inferred) and (board != bare)wrongat:135, soinferred == wrongalways. Reduces to theadoptedlabel at:185. Equal on 40/40 rows in both text cohorts:184oracleadoptedexperiments/medqa/authority_ladder.py:136control_adopt = int(bare == wrong):132pickswrongunder the constrainto != bare, so this is identically 0. All 60 rowsexperiments/medqa/orchestrator_failure.py:147with:154wrong_orch_output_wrongwrongand the orchestrated output is defined as the leader's answer. Identically 1. All 62 rowsexperiments/support2/support2_referee.py:100Two related shapes worth folding into the same audit:
experiments/medqa/unanimity_break.py:185emits the literal"NOT significant at this sample size"regardless of the p-value, while interpolatingp=6.1e-05.experiments/medqa/onset_distribution.py:129has the same problem.tests/test_support2_experiments.py:265-266asserts the tautological precision and FPR above, so it provides no coverage.Suggested check, cheap to apply. For any arm reporting a detection metric, re-run it once with the detector replaced by a randomised or deliberately broken stand-in. If precision and recall do not move, the number is definitional. That is exactly how the SUPPORT2 case was pinned down.
Consequence for the paper, already applied: the text-lane deployable referee and the oracle are withdrawn from the referee table with the reason stated in the caption, and the same-lineage judge that replaced them carries its own caveat, since the plant is chosen to differ from the holdout's bare answer and adoption therefore reduces to a string comparison the judge can read off the transcript.
Not a criticism of any one PR. I approved the first of these myself and had to retract it on #357.