trainer: the post-stop assertions are rank-0 facts (E-044: hub_cb.steps is empty on rank 1 by construction, so the guard killed every correctly-checkpointed segment)
train: a segment that stopped short of the horizon skips the validation pass instead of entering a collective the two ranks can reach a batch apart (probe 1 v1/v4 found rank 1 dying there with no traceback, while every horizon leg passed the same call)
train: escape the literal percent signs in two --help strings (argparse interpolates help text, so '+52 %' crashed --help with 'must be real number, not dict' -- caught by the CPU rehearsal's stage 3)
perm_sha: identify the visit order by hashing the permutation, not just its seed (E-035 residual) -- cursor gains shuffle_perm_sha, asserted on resume; session repins the two files
perm_sha: identify the visit order by hashing the permutation, not just its seed (E-035 residual) -- cursor gains shuffle_perm_sha, asserted on resume; session repins the two files
mix_fingerprint: fold the manifest's per-shard sha256 into the corpus identity (names+sizes could collide across rebuilds); phase4_session repins shard_dataset