Skip to content

canon_lane's exit 66 is flattened to 2 at 41 call sites, and the restart skill's lread reads every exit 2 as "no answer" #324

Open

Description

@brettheap

What happens

canon_lane returns 66, not 2, for an alias table it cannot read (lanes-edit.sh:5636-5646, :5670), because 2 already means Amendment 15(d)'s two-rows refusal or "a helper that predates the subcommand" to lane-start, lane-end, lane and lane-handoff, and a third meaning would land in the fail-open branch. Only the canon-lane subcommand carries it (:18016-18023, exit $?). Every other subcommand arm spells lane="$(canon_lane ...)" followed by exit 2 on failure: 41 sites in lanes-edit.sh (grep finds 43 matches at 33ce26d, two of them comments at :5319 and :5603). The comment at :5636-5646 assumes every caller sees 66.

The #260 review measured it: with aliases.tsv replaced by a directory, register-row exits 2 and canon-lane exits 66 (the measurement is the reviewer's, not re-run here). The skills and lane-handoff read a 2 that is not 15(d) as an old helper and fall through.

The skills have the matching half:

Why it matters

An unreadable alias table is the case 66 was made for. Flattened, a lane whose rename alias is invisible is bound, or its row is added a second time, from a read that never happened. #310 (open) will make canon_lane refuse on an unreadable register as well, which adds 66 exits the 41 sites then flatten.

Suggested fix

Spell the 41 sites canon_lane ... || exit $? so a 66 is carried (a hygiene check can hold the line), teach lread the 15(d) fence sread has, and widen the REFUSED wording. Fold into #310's design or land first.

Found by: the #260 writer's list (lane 5, 2026-10-18T21:2xZ) items 1 to 3, and the review of #260 (2026-10-19). 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