Skip to content

The /ctx respawn recognises this estate's lane by a string in its head, which is a heuristic and not provenance #65

Closed

Description

@brettheap

Found by Copilot round 3 on #47 (lane-handoff:1052), on the /ctx respawn that Amendment 18 Addendum 2 (i-8) adopted. Filed rather than folded into that pull request because the fix changes an ADOPTED behaviour and three of the suite's own PATH fixtures with it.

What the code does

The respawn line is lane <lane> where that word is on PATH, and the launcher where it is not. Because lane is an ordinary English word and a pane respawned over somebody else's lane is a pane the person cannot get back, lane-handoff looks at the word before it types it:

if head -c 8192 < "$lane_word_path" 2>/dev/null | grep 'lane-collision-protocol' >/dev/null 2>&1; then

Why that is not provenance

A string in a file's first 8192 bytes is a HEURISTIC. Any executable can carry lane-collision-protocol in its head — deliberately or by coincidence — and will then be run by tmux respawn-pane -k in the lane's own pane. The commit that wrote this said what it meant in its own subject: "never a lane this estate did not place". The check does not establish that.

The act

Provenance, not content: the word this estate places is placed by openRepoTools --install, into the same directory as lane-handoff and lanes-edit.sh themselves. So the test is whether the lane on PATH resolves to that directory — the one this command was placed in, or the one $LANES_EDIT was resolved from — with the content check kept beside it rather than instead of it.

Why it is not a one-line change. tests/test_lane_helpers.sh § "Amendment 17" builds three PATH cases — the word present, no word at all, and somebody else's word — and its a17_path_without_lane helper builds the no-word PATH by REMOVING every directory that holds an executable lane. Putting the estate's own fake lane into $OPENREPOTOOLS_BIN_DIR (the only directory a provenance check would accept) removes that directory from the no-word PATH — and it is the directory holding lane-handoff and lanes-edit.sh. The fixture needs rethinking with the check.

It is also worth asking whether Addendum 2 (i-8)'s "where that word is on PATH" is to be read as "where the installed word is on PATH"; the tooling can implement either, and the amendment's text is Brett Heap's.

Lane: openRepoTools-3.

Activity

  1. brettheap commented on Sep 14, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoTools-3, session 4135b2c9-34a6-47e3-a156-5adebb632fae@Eagle, 2026-09-14T22:10:02Z, for #65

    Logged in lanes/log/openRepoTools-3.md at 8d322a7308f3ceba8b3fe8a03fedb7a1b055abb9.

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

    1. existing `CLAIMED —` comments on opensoft/openRepoTools#65:
       none
    2. `gh pr list --repo opensoft/openRepoTools --state all --search "#65"`, kept where the row or its body names `#65`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoTools` branches naming `65` as a whole token:
       none
    
  2. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

    RELEASED — lane openRepoTools-3, session 83619980-06bb-4469-ae73-2a8c5e61981a@Eagle, 2026-10-13T18:22:36Z, for #65 — Brett Heap 2026-10-11 gave #28-#89 to lane openRepoTools-5 (its RULED line of 16:19:19Z); lane 3 holds no live work on this number

  3. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

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

    Logged in lanes/log/openRepoTools-5.md at 6a029e42aaaeaabffb4e68e80d8ba542cdeceabd.

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

    1. existing `CLAIMED —` comments on opensoft/openRepoTools#65:
    6:CLAIMED — lane openRepoTools-3, session 4135b2c9-34a6-47e3-a156-5adebb632fae@Eagle, 2026-09-14T22:10:02Z, for opensoft/openRepoTools#65
    13:1. existing `CLAIMED —` comments on opensoft/openRepoTools#65:
    26:RELEASED — lane openRepoTools-3, session 83619980-06bb-4469-ae73-2a8c5e61981a@Eagle, 2026-10-13T18:22:36Z, for opensoft/openRepoTools#65 — Brett Heap 2026-10-11 gave #28-#89 to lane openRepoTools-5 (its RULED line of 16:19:19Z); lane 3 holds no live work on this number
    2. `gh pr list --repo opensoft/openRepoTools --state all --search "#65"`, kept where the row or its body names `#65`:
    47	Amendment 17 tooling: a handoff is the swap under one name — `lane-handoff` on PATH, `/handoff` with `/swap`, `/lane-swap` and `/ctx`, the record naming the agent and its transcript, and `lane-start --agent` resuming a lane from any agent the table carries	feat/amendment-17-handoff-ctx	MERGED
    3. `git ls-remote --heads git@github.com:opensoft/openRepoTools` branches naming `65` as a whole token:
       none
    
  4. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

    Lane openRepoTools-5: closing #65 as superseded, 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)".

    Superseded by #121 (00971b9, merged 2026-10-06): the choice the content heuristic fed is gone. /ctx no longer respawns into a lane found on PATH. lane-handoff:2523-2531 builds the respawn line from this command's own absolute path with --supervise (tmux respawn-pane -k -t "$target" "$launch_line") and names no lane word. The head -c 8192 ... grep 'lane-collision-protocol' read is gone from lane-handoff, and tests/test_lane_helpers.sh:9595-9601 says why: "That read is gone because the choice it fed is gone". A foreign lane on PATH is never consulted.

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