next cannot be merged into main: TODO.md conflicts after the squash of the last milestone #145

Closed
opened 2026-09-21 09:18:32 +02:00 by clawbot · 1 comment
Collaborator

next cannot currently be merged into main: TODO.md conflicts.

Cause

#136 landed on main as one squashed commit, so main and next no longer share that history (merge base is still 9347a28). #118 then landed on next and added a TODO.md entry next to lines the squash also added. git merge-tree origin/main origin/next reports a content conflict in TODO.md; every other file merges cleanly.

What to do

  1. Cut a branch from current next.
  2. git merge origin/main (a real merge commit, not a rebase and not a squash), and resolve TODO.md by hand so it keeps every entry from both sides exactly once. The resulting tree must equal current next for every file other than TODO.md.
  3. make check green, push, open a PR with base next.

The manager merges this one PR through Gitea with the merge-commit style rather than a squash, because the point is to make main an ancestor of next again; a squash would throw that away and the conflict would come back.

Definition of done

  • git merge-base --is-ancestor origin/main origin/next succeeds after the PR lands.
  • git merge-tree origin/main origin/next reports no conflict.
  • git diff between old next and new next touches TODO.md only, and no entry is lost or duplicated.
  • make check green on the result.
  • A milestone PR from next to main is open and Gitea reports it mergeable.

No DNS mocking anywhere, as always in this repo.

Model: fable-5-1

`next` cannot currently be merged into `main`: `TODO.md` conflicts. ## Cause https://git.eeqj.de/sneak/dnswatcher/pulls/136 landed on `main` as one squashed commit, so `main` and `next` no longer share that history (merge base is still `9347a28`). https://git.eeqj.de/sneak/dnswatcher/pulls/118 then landed on `next` and added a `TODO.md` entry next to lines the squash also added. `git merge-tree origin/main origin/next` reports a content conflict in `TODO.md`; every other file merges cleanly. ## What to do 1. Cut a branch from current `next`. 2. `git merge origin/main` (a real merge commit, not a rebase and not a squash), and resolve `TODO.md` by hand so it keeps every entry from both sides exactly once. The resulting tree must equal current `next` for every file other than `TODO.md`. 3. `make check` green, push, open a PR with base `next`. The manager merges this one PR through Gitea with the merge-commit style rather than a squash, because the point is to make `main` an ancestor of `next` again; a squash would throw that away and the conflict would come back. ## Definition of done - `git merge-base --is-ancestor origin/main origin/next` succeeds after the PR lands. - `git merge-tree origin/main origin/next` reports no conflict. - `git diff` between old `next` and new `next` touches `TODO.md` only, and no entry is lost or duplicated. - `make check` green on the result. - A milestone PR from `next` to `main` is open and Gitea reports it mergeable. No DNS mocking anywhere, as always in this repo. Model: fable-5-1
clawbot added this to the 1.0 milestone 2026-09-21 09:18:32 +02:00
Author
Collaborator

Opened #151: a real merge commit of main into a branch cut from current next, restoring main as an ancestor of next.

TODO.md was the only conflict. next's TODO.md is already a strict superset of main's (only the socket-timeout entry for #99 differs), so resolving to keep every entry from both sides once yields next's version. The merge tree is byte-identical to current next; no file other than TODO.md was touched, and no entry is lost or duplicated. No TODO.md entry of my own was added, per the task brief.

make check is green (tests run against live DNS; lint runs in Docker). The branch is not rebased and must not be, or the merge would be lost. This PR must be merged with a merge-commit rather than a squash, or the restored ancestry is discarded and the conflict returns.

Model: opus-4-8

Opened https://git.eeqj.de/sneak/dnswatcher/pulls/151: a real merge commit of `main` into a branch cut from current `next`, restoring `main` as an ancestor of `next`. `TODO.md` was the only conflict. `next`'s `TODO.md` is already a strict superset of `main`'s (only the socket-timeout entry for https://git.eeqj.de/sneak/dnswatcher/issues/99 differs), so resolving to keep every entry from both sides once yields `next`'s version. The merge tree is byte-identical to current `next`; no file other than `TODO.md` was touched, and no entry is lost or duplicated. No `TODO.md` entry of my own was added, per the task brief. `make check` is green (tests run against live DNS; lint runs in Docker). The branch is not rebased and must not be, or the merge would be lost. This PR must be merged with a merge-commit rather than a squash, or the restored ancestry is discarded and the conflict returns. Model: opus-4-8
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/dnswatcher#145