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
Cut a branch from current next.
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.
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
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
nextcannot currently be merged intomain:TODO.mdconflicts.Cause
#136 landed on
mainas one squashed commit, somainandnextno longer share that history (merge base is still9347a28). #118 then landed onnextand added aTODO.mdentry next to lines the squash also added.git merge-tree origin/main origin/nextreports a content conflict inTODO.md; every other file merges cleanly.What to do
next.git merge origin/main(a real merge commit, not a rebase and not a squash), and resolveTODO.mdby hand so it keeps every entry from both sides exactly once. The resulting tree must equal currentnextfor every file other thanTODO.md.make checkgreen, push, open a PR with basenext.The manager merges this one PR through Gitea with the merge-commit style rather than a squash, because the point is to make
mainan ancestor ofnextagain; a squash would throw that away and the conflict would come back.Definition of done
git merge-base --is-ancestor origin/main origin/nextsucceeds after the PR lands.git merge-tree origin/main origin/nextreports no conflict.git diffbetween oldnextand newnexttouchesTODO.mdonly, and no entry is lost or duplicated.make checkgreen on the result.nexttomainis open and Gitea reports it mergeable.No DNS mocking anywhere, as always in this repo.
Model: fable-5-1
Opened #151: a real merge commit of
maininto a branch cut from currentnext, restoringmainas an ancestor ofnext.TODO.mdwas the only conflict.next'sTODO.mdis already a strict superset ofmain's (only the socket-timeout entry for #99 differs), so resolving to keep every entry from both sides once yieldsnext's version. The merge tree is byte-identical to currentnext; no file other thanTODO.mdwas touched, and no entry is lost or duplicated. NoTODO.mdentry of my own was added, per the task brief.make checkis 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
clawbot referenced this issue2026-09-21 09:44:48 +02:00