Four-arm experiment · research only · experiment code not deployed

What actually differs in the code

Five diffs on one nine-stage frame. C1/C2/C3 are flag increments on B’s engine (pinned at e5c1e20). A and D are different packages. Click a pair, then a stage.

verbatim / same function this stage differs the scoring (or door) fork
The five diffs, in one table
Pair Kind Ask-next score Stop / door Where
B vs A Architecture reset A: remaining checklist blanks. B: -Likely declarers, then how many diseases the split moves. A: “None” must win a 15-way score contest. B: is this cause in the catalogue? diagnosis.py vs engine/
B vs C1 One sort key B: count Likely diseases separated. C1: edge_cut over action classes. Same structural door. Same action_discriminating filter. Pinned discriminator.rank
C1 vs C2 One sort key C2 puts -expected_cut first; C1’s edge_cut is only the tie-breaker. Unchanged from C1. Pinned armc._search
C1 vs C3 C2 + unread note Same as C2. coherence() fills next_question; the engine never reads it. Unchanged. Demo asserts C3 asks C2’s questions. Pinned armc.coherence
C1 vs D Second reset D counts how many live diseases declare the sign — what they share, not what splits them. D refers if the list is empty or top_support == 0. Reportables always ride, so the door did not open. AGENT/rmd/calculus.py

C1/C2/C3 live in .claude/worktrees/armc-base/ at pin e5c1e20, not in this checkout’s discriminator.py. Measured Arm A on the sealed pack is a one-call stand-in, not the 14-prompt pipeline shown here. Numbers on the atlas (C 8/8, B and D 6/8, A 4/8; C1 77/144 vs C2 68/144) are simulator rehearsals, not clinical evidence. Nothing is deployed.