Skip to content

lanes: a read-only command that lists a repo's lanes and the next free position; --all for every repo; lane-start <repo> without a number lists and suggests (Brett Heap's rulings 2026-09-13) #28

Closed

Description

@brettheap

Lane: openrepotools-3 (openRepoTools-3)

Brett Heap's rulings, in session, 2026-09-13, interactive multi-choice, verbatim: command name "lanes (Recommended)"; default scope "This repo's lanes + next free (Recommended)"; lane-start <repo> with no number "Yes, list and suggest (Recommended)". Asked after his question: "are we going to have a openRepoLanes command that will show the lanes that are available for the current repo? or option --all that will show all repos and their lanes?"

The gap. The register (lanes/LANES.md in the workspace repository) is one appended file and every read of it today asks about ONE thing: lanes-edit.sh who --lane <lane>, who --landing owner/repo, live-holder <lane>; lane-start <repo> <n> refuses without the number. Nothing lists the lanes of a repo, so a person has to already know a lane's name to enter it — which is how openRepoTools-3 ran three days with no row.

lanes — the reader that pairs with the writer lanes-edit.sh, a bare name beside park, resume, status, lane-start, lane-end; installed by openRepoTools --install once #24 lands; READS AND CHANGES NOTHING.

  • lanes inside a repo checkout: that repo's lanes, one line each — lane name · state · window and workstation holding it · last session id (the row's LAST id, Amendment 6) · objects held (from the lane's log, as who --lane) · handoff path — then the NEXT FREE position and the exact lane-start <repo> <n> line to take it.
  • lanes --all: every repo under the projects root ($PROJECTS_ROOT, default ~/projects), one block per repo. lanes <repo>: one named repo from anywhere.
  • States, three: LIVE here — a live session on this workstation holds it (live-holder), the line names its window and profile; PARKED — the row exists, nothing live holds it, the line gives the resume command; UNKNOWN — the row's workstation (Rule 10 column) is another machine whose session records this one cannot read; the line says to ask @<lane> or read its handoff (the wording who already uses).
  • A lane's REPO is its object log's home line (STARTED/RESUMED … → home owner/repo, Amendment 7), resolved through repos.tsv; the name's <repo> prefix is a label (Amendment 7). Where a lane's home and its prefix disagree, the line says so rather than filing it twice or once wrongly.
  • Reads the PUBLISHED register after a fetch (origin/main, R19) like every other read in the tooling; the header says "as of ". A register that cannot be fetched is said, not guessed (falls back to the working tree and says so).
  • Exit 0 with a listing; exit 1 when the projects root has no register configured (workspace.yaml), naming openRepoTools wip init.

Two hooks into existing surfaces

  1. lane-start <repo> with no <n> prints that repo's block and the next free position, then the exact lane-start <repo> <n> line — and still launches nothing without the number (ruling 3).
  2. The name guard's offer (Amendment 12 clause (h), Name guard (lane protocol Amendment 12): lanes-edit.sh guard as a UserPromptSubmit hook, lane-start --name on every launch, --install places the hook — after #24 lands #25): when a person renames a session to a lane name that has no row, the offer shows that repo's block before asking yes/no, so the person sees what already exists there.

Tests in tests/test_lane_helpers.sh (the sandbox already fakes tmux, the session records and the register): a repo with two lanes (one LIVE via a real sleep pid, one PARKED) and its next free position; --all grouping by HOME with a name whose prefix disagrees with its home; UNKNOWN for a row on the other workstation; an empty repo (no lanes, next free = 1); no register; lane-start <repo> with no number printing the list and exit 2 as an argument error still (or 0? — decide with the guard's tests; today it is exit 2).

Sequencing. Waits for #24 (the tooling's move here). Built by lane openRepoTools-3 together with #25's guard, since the guard's offer reuses the listing.

🤖 Generated with Claude Code

Activity

  1. brettheap commented on Sep 13, 2026

    @brettheap
    ContributorAuthor

    NARROWED. Amendment 11 clause (j) (brettheap/new-workstation#21, ratified by Brett Heap 2026-09-13T18:05:29Z, verbatim "Yes, build lanes in A11") already defines lanes: every lane the register and the logs know, newest write first, ten columns (name, state, workstation, profile, window, last transcript uuid, directory, held objects, age of last write, restart line), read-only, local by default with --fetch, --repo <origin> / --dir <path> narrowing; installed by --install; built by lane openRepoProject-1 in #26 on #24's branch. This issue does NOT build lanes. It holds the two deltas Brett ruled ~19:5xZ and the one conflict, for reconciliation with (j): (1) a NEXT FREE POSITION line ending the per-repo view, with the exact lane-start <repo> <n> to type; (2) lane-start <repo> with no number lists and suggests instead of refusing; (3) CONFLICT: bare lanes inside a repo = "This repo's lanes + next free" (his 19:5xZ word) vs (j)'s every-lane default (his 18:05Z word) — put to him. Timings measured the same hour for the store question: register parse 3 ms; tooling reads 1.7–2.2 s (a git fetch of ~0.85 s each, then bash); one write 1.2 s; rows up to 96 KB.

    Lane: openrepotools-3 (openRepoTools-3)

  2. brettheap commented on Sep 14, 2026

    @brettheap
    ContributorAuthor

    Lane: openrepotools-3 (openRepoTools-3)

    Superseded in part by Amendment 18 DRAFT clause (i) (brettheap/new-workstation#35, revision 3; tooling #38 act 8), on Brett Heap's answers of 2026-09-14: the DEFAULT listing becomes the lanes AVAILABLE TO BIND (free or provably dead binding) rather than all of this repository's lanes; --bound adds the bound ones with their binding; --all keeps its every-repository meaning. The 2026-09-13 rulings here (name lanes; narrow inside a checkout; lane-start <repo> with no number lists and suggests) stand; the new clause adds the question bare lane-start asks on a terminal. The next-free line and the lane-start <repo> <n> lines stay as lanes prints them since #26.

  3. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoTools-5, session 0d83dca2-c18c-4bb0-99ce-896e6cafea02@Eagle, 2026-10-13T18:23:26Z, for #28

    Logged in lanes/log/openRepoTools-5.md at 40df63b386c1e09298ae38c01e286dcd688bc88a.

    The three reads (lane-collision-protocol Rule 1):

    1. existing `CLAIMED —` comments on opensoft/openRepoTools#28:
       none
    2. `gh pr list --repo opensoft/openRepoTools --state all --search "#28"`, kept where the row or its body names `#28`:
    41	Amendment 15 tooling: a lane name is ONE name under any case — `canon_lane` gives every `<lane>` argument and `LANES_LANE` the register row's spelling before any read or write, and a lane's object log is ONE file and ONE lane's under any case	feat/amendment-15-case-insensitive-lanes	MERGED
    3. `git ls-remote --heads git@github.com:opensoft/openRepoTools` branches naming `28` as a whole token:
       none
    
  4. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

    Lane openRepoTools-5: closing #28 as fixed, checked at main f87fd5a. Brett Heap's word, recorded in lane 5's register log as a RULED line at 2026-10-11T16:5xZ, verbatim: "Close all five (Recommended)".

    Fixed by #26 (63a74af, merged 2026-09-14). Both deltas this issue holds are on main:

    One thing was never built: the original body's hook 2, the name guard's offer showing the repo's lane block before it asks. Nothing in the guard renders it at main, and this issue's own narrowing comment dropped it (it lists only the two deltas and the conflict). It can be refiled if wanted.

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