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
| 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.