rebuild_f5.py hard-aborts on content conflicts between open branches nf-c44 ← Beads

open priority 2 task unassigned

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

Observed 2026-08-17: with #927 (feat/explore-probes) and #915 (feat/explore-solar-system) both open and conflicting with post-#909 main, ./tools/pr/rebuild_f5.py dies mid-octopus with raw git output (CONFLICT (add/add)… Automatic merge failed) and leaves the -f5 worktree in a conflicted merge state (this session had to merge --abort it by hand).

Two gaps:

  1. A content conflict aborts the whole rebuild — no branch is dropped, nothing publishes, and every session's rebuild fails identically until the conflicted branch restacks. The delete/modify case already has the right shape (#465: drop the branch, record it in manifest.excluded with cannot merge — delete/modify conflict, keep building). Whether content conflicts should get the same drop-and-record treatment, or the abort is deliberate (dropping an arbitrary member of a conflicting *pair* is a choice), is the design question — but leaving a conflicted worktree behind and dying with raw git output is D2-noisy in the wrong way either way.
  2. The failure doesn't say what to do — the operator-facing fix is "restack the named branch onto fresh main"; the output names conflict markers, not an action (compare design 009 T2's refusal-reason direction).

Found while rebuilding f5 after opening PR #976. Not claimed. Not labelled.

Dependencies

None.

Comments

No comments.

Add a comment