TopG / COMPATIBILITY.md
RGPalgrave's picture
Ship the checkpoint/code compatibility table with the weights
04a0448 verified
|
Raw History Blame Contribute Delete
1.62 kB
# Checkpoint ↔ code compatibility
**A representation change breaks old checkpoints. This file records which code loads which arm.**
| arms | conditioning | `PER_SITE_DIM` | `COND_DIM` | load with |
|---|---|---|---|---|
| `A_*`, `B_*`, `C_*`, `D_*`, `E_long*`, `F_scout`, `G_100*` | pre-WP-018 | 62 | 948 | commit **`203c036`** or earlier |
| `H_pq*` and later | WP-018 (+ per-shell SPECIFIED bit) | 68 | 1020 | commit **`74dae8f`** or later |
Loading a pre-WP-018 checkpoint with current code raises:
```
size mismatch for site_proj.0.weight: copying a param with shape torch.Size([256, 62])
from checkpoint, the shape in current model is torch.Size([256, 68])
```
That is the correct, loud failure — not a corrupted download.
## How this happened, and the rule it earns
WP-018 added a **SPECIFIED bit per shell** so a user could ask for fewer than six shells. That is a
change to the *input representation*, and it silently invalidated **16 of 19 trained arms** for
inference. It surfaced only when a control experiment tried to feed a shallow query to a
full-query model and torch raised a size mismatch.
> **RULE: a change to the conditioning or token representation is a BREAKING change. It must (a) be
> recorded in the checkpoint's own metadata, (b) be checked on load with a message that names the
> commit to use, and (c) appear in this table before the change is committed.**
⚠ `arm_meta.json` records `tokenizer_version` and `vocab_hash` but **not** a conditioning version —
which is why nothing caught this at load time. Adding one is the fix; until then, this table is the
source of truth.