Skip to content

lane-handoff and the handoff skill rename the window with none of lane-start's fences, and the skill renames before any record is written #327

Open

Description

@brettheap

What happens

  1. lane-handoff renames the window to the lane whenever the window's name differs (lane-handoff:2713-2727), with no look at whether that name is another registered lane's. lane-start refuses exactly that for a new lane: "a NEW lane started from a stale or reused window still named for ANOTHER registered lane would rename it and take that lane's tmux address" (lane-start:2358-2378, PR #93 Copilot rounds past the two-round cap: eighteen fail-open hardenings from rounds 7–21 and the Codex connector (d0310f6–8fc5e1a), filed rather than taken #138 item 16), asking both copies of the register and refusing on a failed read. So lane-handoff --lane X run from a window named for registered lane Y renames Y's window to X, and the next handoff from that window binds X.
  2. The skill still renames at step 1 (skills/handoff/SKILL.md:252, "window name ≠ lane → tmux rename-window "$lane""), before step 2's refresh and step 4's records. lane and lane-handoff refuse empty and flag-shaped flag values, and lane-handoff renames the window only once the handoff can no longer be refused (#80 slices B and C) #220 (be0743b) moved lane-handoff's own rename after every refusal that comes before the record (Copilot's review of workBenches#91 against the vendored bytes at f98d734: --dir flag swallows -*, lane-handoff's rename-before-commit and permissive window checks, --lane= accepts empty, and two placeholder leaks in handoff/SKILL.md #80 item 11); the skill path (the usage-limit swap) can still leave the window renamed beside a refused write.

Why it matters

The window name is the lane's address (Amendment 8(b)); both paths can put a lane's name on a window that is not it, or on a window whose handoff then refused.

Suggested fix

For 1, ask lane-start's two register reads (register-row and register-row-local) before the rename and refuse where the window carries another registered lane's name or the read fails. For 2, move the skill's rename to the first point after which nothing refuses, mirroring lane-handoff's section 3a, or say in the skill why step 1 must stay first. The #220 review suggested folding 2 into #80's slice A.

Found by: the independent review of #220 (lane 5, 2026-10-17, head 9f6fd2d), items 4 and 5. Filed on Brett Heap's word of 2026-10-23T18:52:34Z, by multiple choice.

Lane: openRepoTools-5

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions