Development record
Drain lanes never merge the default branch before their pull request, and the footprint taken from found_at never names generated files, so lanes from several accounts conflict on generated files: of 259 merges to main since 2026-10-01, 54 touched docs/reference/cli/commands.md, 29 surface.json and 18 the brief's surfaces README.
issueresolvedmajoriss-2610161015410527
Drain lanes never merge the default branch before their pull request, and the footprint taken from found_at never names generated files, so lanes from several accounts conflict on generated files: of 259 merges to main since 2026-10-01, 54 touched docs/reference/cli/commands.md, 29 surface.json and 18 the brief's surfaces README.
Frontmatter
| id | iss-2610161015410527 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | major |
.abcd/work/issues/resolved/iss-2610161015410527-drain-lanes-never-merge-the-default.md
open on GitHub ↗ · commit history ↗
References1
- itd-2610161016391855A stuck drain lane hands itself backrelated
mentions3
- dcn-26101610403840682026-10-16 — A drain lane merges the default branch first (facilitator-on-delegation, drain-many-accounts): the lane's sync step, which already merges landed sibling lanes and has the merge head validated, also merges origin's default branch whenever it has moved, before the records and the push, and is entered again from arming and from the merge wait when the open pull request starts to conflict; a conflict confined to declared generated files goes back to the implementer as a fix round under the host's permissions, with the validators judging the result, so abcd itself runs no command the repository declares; any other conflict hands the lane back naming the files (grounds: the forge ignores the merge drivers a local merge uses, iss-2609240646538011; iss-2610161015410527).
- dcn-26101707553034512026-10-17 — A lane's merge of the default branch is an issue run's, and re-enters its sync only over generated-file conflicts (facilitator-on-delegation, drain-many-accounts step 13): only an issue run's sync (a drain's lane, or a person's build of an issue) fetches origin's default branch and merges it whenever it moved, since an intent's run already syncs its own landed siblings and its other conflicts stay the sibling brief's; the generated-file conflict goes to the sync's fresh implementer, whose brief says to regenerate, and like every sync counts no fix round, a regeneration being no failed attempt; any other conflict is a final refusal naming the files, so the drain's stuck rule hands the lane back at once with nothing pushed; a pull request the forge reports conflicting at the arming or the merge wait re-enters the sync when a driver-free merge of the default branch and the pushed head, as the forge merges, conflicts in declared generated files alone or in none, withdrawing an armed merge first and keeping the records commit and the pull request, the push and arming made again after a fresh round; the drain's move takes that step itself for a parked lane, reads it as syncing and drives the lane again; the generated set is claim.GeneratedFiles, the matcher step 11 exports, with no second reader (grounds: GitHub's update branch and merge queues test a pull request merged with its base; the forge ignores local merge drivers, iss-2609240646538011; a stale forge verdict with nothing to merge stays a wait; iss-2610161015410527)
- spc-2610161044461448drain-many-accounts