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
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
phase4_prep: pin f6f10076; drive the leg check from the real planner, verify the manifest against itself and the mapped bytes, resume through load_cursor
mix_fingerprint: fold the manifest's per-shard sha256 into the corpus identity (names+sizes could collide across rebuilds); phase4_session repins shard_dataset
mix_fingerprint: fold the manifest's per-shard sha256 into the corpus identity (names+sizes could collide across rebuilds); phase4_session repins shard_dataset
phase4_prep: free CPU rehearsal of everything a GPU session can fail -- pinned fetch, creds, pointer read, planner, full sha256 of the published mix, per-leg window arithmetic, resume-equivalence at real boundaries
publish_mix: resume listing must read lfs.oid as a dict (getattr on a dict returned None for every shard, so a 'resume' re-sent all 2.3 GB); hard-exit 11/12 when a batched commit leaves a path absent or a remote sha that disagrees with the local bytes