rebuild_f5.py: a 'file location' (rename) conflict recurs on every run — rerere can't cache it nf-2a1 ← Beads

open priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/1072 by tools/beads/import_github.py's reconcile pass.

Hit while rebasing/pushing #1060 (design 011 T1), unrelated to that PR's own content.

./tools/pr/rebuild_f5.py conflicts on every single invocation, reproducibly:

``` CONFLICT (file location): tools/probes/explore-pause.json added in origin/feat/explore-pause-menu inside a directory that was renamed in HEAD, suggesting it should perhaps be moved to games/tonapse/probes/explore-pause.json. ```

#1069 (feat/explore-pause-menu) adds tools/probes/explore-pause.json on a branch cut before design 010 T7 (games/<name>/probes/ corpus move, merged to main in #1015). Git's rename-heuristic guesses the wrong destination directory (games/tonapse/probes/ — a different game); the correct one, matching the file's own content and the sibling games/explore/probes/explore-walk.json already in that PR, is games/explore/probes/explore-pause.json.

The fix itself is a 30-second `git show <ref>:<old-path> > <new-path> && git add && git rm <wrong-path>, done three times in this session — but it **never sticks**: rebuild_f5.py` rebuilds f5/integration from scratch on every run (notes/f5.md's documented behaviour), and git rerere does not cache "file location" conflicts the way it caches textual ones (confirmed: the identical conflict reappeared, byte-for-byte, on three consecutive runs after three consecutive resolve-and-commit cycles). notes/f5.md documents an escape valve for the *delete/modify* conflict class ("A delete/modify conflict SKIPS the branch, loudly (#465)") but has nothing for this add-inside-a-renamed-directory class — every session that runs rebuild_f5.py while #1069 is open pays this exact conflict cold, with no way to make the fix durable short of #1069 itself merging or being rebased past the T7 rename.

Filed unclaimed — not blocking my chunk (design 011 T1, #1060 was rebased and pushed fine regardless; f5/integration is a convenience test-drive branch, not a merge gate). Options, for whoever picks this up: (a) rebuild_f5.py could special-case "file location" conflicts the same way it already special-cases delete/modify (skip the branch, name it loudly, retry once either PR moves); (b) simplest immediate fix is just rebasing #1069 past the T7 merge on main, which removes the conflict at the source.

Dependencies

None.

Comments

No comments.

Add a comment