Repository navigation
Make the repoG#8 assertion able to fail, give lanes' stderr filter its -e, and stop counting the bash files in prose (#66, #54, #58) - #209
Merged
Conversation
…s -e, and stop counting the bash files in prose (#66, #54, #58) #66: `hasnt` is a fixed-string `case`, so the `.*` in the repoG#8 "no separate CLAIMED line" check was two literal characters and the assertion could never fail. It is now a `grep -cE` over the log, the shape the repoK#5 sibling already had, asserting a count of 0. Proved able to fail: with a CLAIMED line injected into the log the old assertion still passed and the new one reports expected [0], got [1]. #54 part a: `lanes`' local-read stderr filter was `grep -v 'pattern' -- file`. With the pattern a bare operand, a getopt that does not permute (BSD's, and GNU's under POSIXLY_CORRECT) reads `--` as a second FILE. It is now `grep -v -e 'pattern' -- file`, with a fence test beside the restart skill's that runs `lanes` under POSIXLY_CORRECT=1 against a stub that prints the notice and another stderr line. Part b, the quote-aware checker in tests/test_repo_hygiene.py, waits for #195. #58, the in-bounds sites: the README's Windows sentence and macOS parse sentence, the macOS job's comment in tests.yml (and the Windows job's), the lane manual's sandbox paragraph and the suite's own header and bin-directory comments said "four" or "five" about files that are sixteen in the macOS parse step today. They now carry no number. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Reviewer's GuideThe PR fixes a non-failing takeover assertion, makes Sequence diagram for portable lanes stderr filteringsequenceDiagram
participant User
participant lanes
participant Helper
participant grep
User->>lanes: Run local read without --fetch
lanes->>Helper: Read local lane data
Helper-->>lanes: stderr: no-fetch notice + other error
lanes->>grep: grep -v -e no-fetch-pattern -- local_err_file
grep-->>lanes: Other error only
lanes-->>User: Unprefixed remaining stderr, exit 8
Flow diagram for regression assertion validationflowchart LR
Log["TAKEOVER log for repoG-2"] --> Check["grep -cE CLAIMED line for repoG#8"]
Check -->|0 matches| Pass["Assertion passes"]
Check -->|1 match| Fail["Assertion fails"]
File-Level Changes
Assessment against linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
origin/main moved to aaa7bc8 (#191, the installer payload source, and #227, which took the macOS and Windows jobs out of CI). The merge conflicted in two files and both resolve in favour of main: - .github/workflows/tests.yml: main's file in full. The comments this branch rewrote belonged to `tests-macos` and `tests-windows`, which are gone. - README.md: main's CI paragraph, with its "the four bash files" reworded to "the shipped bash files" so the sentence no longer carries a count. The paragraph keeps main's length, so the README line cap is untouched. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…he install tests' docstrings, the pin reader, the CI runner note and the lane manual (#58) With #191 and #227 on main the rest of #58's sites can be reached, and two sentences found by the sweep were stale in more than their number. - `openRepoTools` and `tests/test_openrepotools_command.py`: "ONE PATH NOTE for the four of them", "all four or none", "which of the four were missing", "each of the four files `--install` places" and "each of the ten" said a number the installer has not placed for a long while. They now say "everything it placed", "all of them" and "each of them". Comments and docstrings only. - `.github/workflows/tests.yml`: "Nothing this repository ships is Python at all — three bash files —" was wrong twice. `lanes-index` and `lane-worktrees` are `python3` scripts, and the count was stale. The true claim, the one the line exists for, is that nothing shipped needs a Python package: both import only the standard library. - `tests/test_upstream_pin.py`: the pin reader's docstring said the repository "ships three bash files and installs nothing"; it now says what is true without a count. - `docs/README-lanes.md`: the `--install` comment's "thirteen commands". Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
brettheap
added a commit
that referenced
this pull request
Oct 18, 2026
… and its cleanup removes only a lock that is still its own (#72 items 1-2) (#232) Landed on Brett Heap's word "land #209 #232 when green" (2026-10-18), by lane openRepoTools-5. Required Linux CI (guard-launch-mode, tests, tests-no-submodule; run 39074227096) was green on head f826ef4 with main aa14de3 in its tree. Main has since moved to 61a7378 only through files this PR does not change. Independent review (lane 5, Opus, of f826ef4): LAND, no blocking defect. Part of #72 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brettheap
marked this pull request as ready for review
October 18, 2026 03:04
|
Sorry @brettheap, you've used your own review budget of 250,000 diff characters for the last 7 days. You can request another review in 1 day and 21 hours by commenting |
|
brettheap
pushed a commit
that referenced
this pull request
Oct 18, 2026
… this PR on today's main Main moved one commit past the first merge: #209, which also edits tests/test_lane_helpers.sh and docs/README-lanes.md. The merge is clean, and it puts the required checks on the main this PR would land on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brettheap
pushed a commit
that referenced
this pull request
Oct 18, 2026
… tests this PR on today's main #209 gave lanes:520 its -e (now lanes:526), the shape this PR's corrected end-of-options check catches; on this main the check finds nothing in lanes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brettheap
pushed a commit
that referenced
this pull request
Oct 18, 2026
…l places and which commands share canon-lane, and the all-or-none test drops its count of nine (#58) The counts #209's review found beside #58's own sites, each measured against the code on 2cb14a9 and false there: - docs/README-lanes.md:76 said "thirteen files"; `INSTALLABLES` in `openRepoTools` holds seventeen (sixteen commands and `repos.tsv`). It now says "every command and the alias table". - docs/README-lanes.md:4 said "the four commands it describes"; the four it names are the ones that came from brett-wip with their history (bd27fc3, 2026-09-13), and the manual now describes many more. It now says "the commands it then described". - tests/test_openrepotools_command.py:395 said "All NINE files" over a loop of `INSTALLED`, seventeen names. It now says "Every `INSTALLED` file". - `test_install_places_all_nine_or_none` withholds `park` and asserts that nothing is placed; nine was never its subject. It is now `test_install_places_all_or_none`, and the comment at :145 that names it follows. Three more of the same kind in the manual, false on the same commit: - :289 and :301, "the four commands" and "the one all four commands share", leaned on :4's count; `canon-lane` is called by lane, lane-start, lane-end, lane-handoff, lane-rename and lane-worktrees besides lanes-edit.sh itself, and `lanes --worktrees <lane>` reaches it through lanes-edit.sh. They now say "the commands here" and "the one the commands share rather than each keeping its own". - :2792 said "not a thirteenth word"; seventeen files are placed. It now says "not one more word". - :4127 said "before any of the twenty-seven artifacts is placed, it walks all thirteen targets"; ARTIFACTS is thirty-one and the bin planner (`openRepoTools:2449`) walks all seventeen `INSTALLABLES`. It now says "before any of its artifacts is placed, it walks every target in the bin directory". Prose and a test's name only; no assertion moved. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brettheap
pushed a commit
that referenced
this pull request
Oct 18, 2026
… this PR on today's main No conflict: #209 (2cb14a9) touches tests/test_lane_helpers.sh (header and bin-directory comments, the repoG#8 assertion, a new `lanes` getopt fence case) and docs/README-lanes.md (two wording lines) only in regions away from this PR's hunks, and both files merged as exactly main's version plus this PR's own change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 19, 2026
brettheap
pushed a commit
that referenced
this pull request
Oct 21, 2026
…rea, and add the lines for #263, #289, #294 and #296, the changes after a42946e (#228) `docs/release-notes/v1.1.0.md` takes the fixes of lane 3's review of d8a349d (#293 comments 6314185715 and 6314529807, the second of which replaces three of the corrected texts of the first) and the lines for the changes after a42946e. The review's fixes: - Line 45 (#255, #271) no longer says that `lane-reconcile` and `lane-handoff` read a dependency nested in a leg: only the sweep and `lane-end` do. It says that a leg directory this account cannot search is unreadable and never `absent`, that a nested dependency is unreadable to the sweep and `lane-end` too, and that the sweep still reads a declared leg beneath such a directory as `absent` (#272, open). It also says NOT POLLED where the tool does. - Line 46 (#280, #283): an `awk` exits, it does not return, and the sentence on a status of 0 or 8 is gone. - Line 61 (#214): the fence never checks whose a local commit is, only that it adds or changes a register or handoff file. - The `<other-changes>` item counts 44 of the 53, because the openRepoShape pin's line (#233) is in the list, and the other 9, not 43 and 10. The milestone item names #247 and lists the six entries of 2026-10-20. - #209 is not tests-only: its `-e` fixes `lanes`' stderr filter under macOS's BSD grep, so it moves from the test suite to the lane area, and its one line there carries its test changes too. It is cited once. The lines for the changes after a42946e, each in its area and worded from its squash commit and description: #263 (d9065df) and #289 (fb2cf36) under the register and `lanes-edit.sh`, #294 (acc89ea, which closes #292) under `lane`, `lane-start`, `lane-end` and the name guard, and #296, which pins every Ubuntu runner to ubuntu-24.04, under the test suite and its checks. #296 has not landed yet: lane 3 lands it right before #293. The `<other-changes>` item says the lines were added on 2026-10-21 and are not in its counts, and the placeholder stays for #293 itself. Not touched: lane 3's optional sentence on #271 and its NIT on the tag. Lane: openRepoTools-2 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
brettheap
added a commit
that referenced
this pull request
Oct 21, 2026
… 1.1.0 and list, by area and from the squash titles of aaa7bc8..a42946e, what else changed on main since v1.0.0 (#228) (#293) Part of #228. It brings `docs/release-notes/v1.1.0.md` up to date on main: first on `a42946e`, as lane 3 asked on Brett Heap's word (#228 comment 6303608345, the section for lane openRepoTools-2, task 1), then with lane 3's review of `d8a349d` (comments 6314185715 and 6314529807 on this pull request), with the lines for the three changes that landed after `a42946e`, and with the line for #296, which landed right before this pull request. It is one file, changed in two commits (`d8a349d` and `bebb77d`), 59 insertions and 4 deletions against main. Lands last before rehearsal D's freeze; lane 3 reviews and merges it (#228 6303608345) **What changed** - **Lane 3's review is applied,** in the second commit: - **The line on #255 and #271** no longer says that `lane-reconcile` and `lane-handoff` read a dependency nested in a leg, since only the sweep and `lane-end` do. It says that a leg directory this account cannot search is unreadable and never `absent`; that a dependency nested in a leg whose directory, or one above it, it cannot search is unreadable to the sweep and `lane-end` too; and that one known gap remains, #272, where the sweep reads a declared leg beneath such a directory as `absent`, so `lane-end` does not hold on it. It also says NOT POLLED where the tool prints it, and it says that the item closes two gaps in #246, where it said "both gaps" with nothing before it to refer to. - **The line on #280 and #283:** an `awk` exits and does not "return", and the sentence on a status of 0 or 8 is gone, because a reader of the notes cannot act on it. - **The line on #214:** the fence passes a local commit only when it adds or changes a register or handoff file, and never checks whose it is, so the line no longer says "the lane tooling's own". - **The counts in the `<other-changes>` item:** the pin's line (#233) is in the list, so the list carries 44 of the 53, and the other 9 have their lines under "What 1.1.0 adds", not 43 and 10. The item says "the openRepoShape pin" where the runner pin of #296 could be taken for it. - **The milestone item** names #247, so it lists the six entries the milestone held on 2026-10-20. - **#209 is not tests-only.** Its `-e` fixes `lanes`' stderr filter under macOS's BSD `grep`, so it moves from the test suite to the lane area, after #208's, and its one line there also carries its test changes: the `repoG#8` assertion and the count of bash files in prose. It is cited once. - **Lines for the changes after `a42946e`:** #263 (`d9065df`), #289 (`fb2cf36`) and #294 (`acc89ea`, which closes #292) landed on 2026-10-21, from 11:28Z to 11:30Z. Each has a line in its area, worded from its squash commit and its description: #263 and #289 under "The register and `lanes-edit.sh`", and #294 under "`lane`, `lane-start`, `lane-end`, the name guard and their helpers". - **#296 has its line too,** last under "The test suite and its checks": CI and the release workflow run on `ubuntu-24.04`, because `ubuntu-latest` is now Ubuntu 26.04, and `macos-latest` is unchanged. It landed right before this pull request, as `5afba4a`. - **"What 1.1.0 adds" gains two lines,** after the annotated-tags item. They are for the three entries that closed in the v1.1.0 milestone after the draft was written: - **#255,** fixed by #271: the lane tools name what they could not read in a triad's legs. `lane-handoff` names every tree-inventory record that is not a whole schema-1 one, and a leg directory this account cannot search is unreadable and never `absent`. Only the sweep and `lane-end` also see a dependency nested in such a leg, since `lane-reconcile` and `lane-handoff` read declared legs only, and #272 stays open as the known gap. - **#280,** fixed by #283: `lane-handoff` reads the lane's lifecycle whole and parses it afterwards, so an `awk` that exits early can no longer turn `lane-state`'s SIGPIPE into a lifecycle that could not be read. - #283 is #280's pull request, so the three numbers make two lines. Each line cites the issue and its pull request, as the hook-pair line does for #237 and #247. - **"What else changed since v1.0.0" is drafted** from `git log aaa7bc8..a42946e`, which is 53 squash commits, one pull request each and no merge commit. It is grouped by area, one line each, and each line ends with its pull request. It lists 44 of the 53: the pin's line (#233) at its head and 43 by area, as 4 on the estate commands, 10 on the register and `lanes-edit.sh`, 11 on `lane`, `lane-start`, `lane-end` and the name guard, 6 on the handoff and its skill, 1 on the lane tools in a triad's legs (#246), 9 on the test suite and its checks, and 2 on the triad migration's records. - **The other 9 are accounted for elsewhere:** the package series of #228 (#262, #267, #268, #269, #270 and #284) is covered by #228's lines, and #247, #271 and #283 have the lines above. - **The lines added on 2026-10-21** are for the four changes after `a42946e`: #263 and #289 on the register and `lanes-edit.sh`, #294 on `lane`, `lane-start`, `lane-end` and the name guard, and #296 on the test suite and its checks. The areas now hold 47 lines, one for each of 47 pull requests, and #233's line at the head of the list makes 48. - **The list is redone at the tag.** It is drafted from the squash titles only. - **"Before the tag" is updated in three items:** - `<pr-count>` gives the count at `a42946e`, which is 53; - `<other-changes>` says what was drafted, which 9 pull requests have their lines under "What 1.1.0 adds", that the lines for #263, #289, #294 and #296 were added on 2026-10-21, and what is left to do at the tag; the placeholder's own line now stands for the changes after `a42946e` that have no line above; - the milestone item names the six entries the milestone held on 2026-10-20: #228 still open, #237 closed by its pull request #247, #255 closed, and #280 closed by its pull request #283. **Not added:** nothing that has landed. #296 landed right before this pull request and has its line. This pull request itself, and whatever lands after it, is what the `<other-changes>` placeholder stands for. None of #263, #289, #294, #296 and #292 is in the v1.1.0 milestone, which still holds the six entries of 2026-10-20. **How this keeps the draft's rules** - **One-line paragraphs:** every added line is its own list item, and none is wrapped. - **References:** every reference above "Before the tag" is spelled `opensoft/openRepoTools#N`, with no bare `#N`, since the notes are published from another repository after the migration. - **Placeholders:** `<other-changes>` stays as a named placeholder in code font, as the closing line of the list and as its checklist item. `<pr-count>` is unchanged apart from the drafting-time count. - **The file's closing lines are untouched:** the self-naming last line stays last. **Tests** - **T023's verify command** passes: the last line names `openRepoTools-spec` and `docs/release-notes/v1.1.0.md`, `## Before the tag` is there, and so is `pipx install --force openrepotools`. - **Coverage:** a script over `git log aaa7bc8..acc89ea`, 56 commits and no merge, finds each pull request cited above "Before the tag" except the six of #228's package series, which #228's lines cover. That is 46 by area, #233 at the head of the list, and #247, #271 and #283 under "What 1.1.0 adds". #296 is not in that range, and its line cites it. - **Hygiene:** by grep over `tests/`, no test names this file. The two that read its content scan every tracked file, and both are in `tests/test_repo_hygiene.py`. The only other test that names `release-notes` is in `tests/test_release_workflow.py`, and it reads `release.yml`, not the notes. All of `tests/test_repo_hygiene.py` was run on the file, through `tests/run.sh` with every `LANES_*` and `TMUX*` variable unset: ```text -k 'repo_hygiene' -v collected 2933 items / 2696 deselected / 237 selected 237 passed, 2696 deselected in 2.59s ``` - **Not run:** the whole suite. CI's `tests` job is the suite of record. This pull request's own runs on `bebb77d` went red on `ubuntu-latest`, which is Ubuntu 26.04, for the reasons #296 gives, because #296 was not yet on main. The record is lane 3's queue run over main, #296 and `bebb77d`, on `ubuntu-24.04` (below). **Where the draft's rules left room, and lane 3's answers (comment 6314185715)** - **Which section holds #255 and #280:** "What 1.1.0 adds", because the milestone is Brett Heap's scope for the release and #237 with #247 already sit there. - **`<other-changes>` stays** as a closing placeholder after the drafted list, since this pull request itself lands after `a42946e`. - **How much to list:** the tests-only and migration-record lines stay through the tag, because the check that every pull request has a line depends on them. If Brett Heap wants a shorter body, they fold into one line that still lists every pull request number. - **Issues and pull requests:** the milestone lines cite both, and the area lines cite the pull request only. **Lane 3's re-check of `bebb77d`** (#293 6315668503) is MERGE AFTER FIXES. - **What holds:** every line lane 2 listed, the recount behind line 140 (44 of the 53 pull requests in `aaa7bc8..a42946e`, and 56 in `aaa7bc8..acc89ea`), the file's rules, and T023's verify commands. - **One SHOULD and two NITs, all wording:** - line 45's sentence on a dependency nested in a leg, where "one above it" reads as a directory above the leg, which is #272's case. The text was lane 3's own; - "One known gap" in the same line; - line 74's last clause. - **Why they wait:** lane 3 merges the notes as tested and carries the three fixes into the notes' final pass at the tag. A push here would cost another CI round while lane 2 is out of usage until 15:30Z, and the notes are edited again at the tag in any case. Lane: openRepoTools-2 Landed by lane openRepoTools-3, as queue prefix `lane3-queue-u/p2-293` (tree `9b879ca`; tests.yml run 39595166877, green on `ubuntu-24.04`), right after #296. Before the landing, lane 3 merged main into the branch, so that its own checks ran over main with #296; the content is unchanged. Brett Heap's word, of 2026-10-20T22:5xZ: "merge all when green for all merges thru v1.1.0. use this for all lanes" (#228 6303614082). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Three small repairs from the deferred follow-up list, in one draft PR: an assertion that could never fail (#66), the last
grep -v 'pattern' --without its-ein a shipped command (#54, part a), and the prose that still counts the shipped files (#58, every site outside #195's files).Updated 2026-10-17 after #191 and #227 landed: the branch now merges origin/main aaa7bc8 (a merge commit, no rebase) and finishes the #58 sites that #191 had held.
What was wrong
#66.
tests/test_lane_helpers.shasserted the TAKEOVER case withhasntis a fixed-stringcasecontainment test, so the.*was the two literal characters and the assertion passed whatever the log held. Its sibling for repoK#5 (Copilot round 2 on #61) already used the right shape; this one predates it. A sweep of everyhas/hasntline for a regex metacharacter found this one line and no other.*.#54 part a.
lanes' local read keeps its helper's stderr minus the no-fetch sentence withgrep -v 'not fetching; reading origin/' -- "$local_err_file". With the pattern a bare operand, a getopt that does not permute (BSD's, so every macOS shell, and GNU's underPOSIXLY_CORRECT) takes the pattern as the first operand and--as a second one, a FILE. Measured against the unfixed line underPOSIXLY_CORRECT=1:lane's copy and the restart skill's fence already carry the-e;laneswas the last site without it.#58. Prose spelled a count of the shipped files that the files have long outgrown: "all four files are bash", "each of the four bash files", "The four commands … the five files", "ONE PATH NOTE for the four of them", "all four or none", "each of the ten" and "three bash files".
What changed
tests/test_lane_helpers.sh: the repoG#8 line is nowis … "$(printf '%s\n' "$G2" | grep -cE '^CLAIMED — lane repoG-2,.*opensoft/repoG#8')" 0, the shape the repoK#5 case uses, with a comment saying why.lanes:grep -v -e 'not fetching; reading origin/' -- "$local_err_file", with a comment.tests/test_lane_helpers.sh: a fence test beside the restart skill's own POSIXLY_CORRECT case. It runs the installedlanesunderPOSIXLY_CORRECT=1against a stub helper that prints the no-fetch notice and another stderr line, then asserts exit 8, that the other line arrives UNPREFIXED and alone, thatgrep: --:does not appear, and that the notice is still dropped.README.md: the Windows sentence now says "no command here has a PowerShell twin" (two installed commands,lanes-indexandlane-worktrees, arepython3scripts, so "are bash" was no longer true either; the WSL2 sentence after it is unchanged andtest_no_document_offers_a_windows_powershell_twinstill holds).docs/README-lanes.md: the sandbox paragraph ("copies the lane commands …").tests/test_lane_helpers.sh: the header comment and the bin-directory comment..github/workflows/tests.ymlis main's file in full. The macOS and Windows job comments this branch had reworded belong to jobs that are gone.README.mdis main's CI paragraph with one change: its "No job parses the four bash files under macOS's bash 3.2" now reads "the shipped bash files". The paragraph keeps main's length, so the README is 485 lines, exactly main's, and the line cap intests/test_repo_hygiene.pyis untouched.openRepoTools: "ONE PATH NOTE for the four of them" now reads "for everything it placed".tests/test_openrepotools_command.py:test_install_says_how_to_put_it_on_path,fake_github,offline_github,test_install_places_all_nine_or_noneandtest_install_from_stdin_fetches_itself_into_a_live_workdirlose "the four of them", "all four or none", "each of the four files", "which of the four were missing" and "each of the ten". No assertion, name or quoted--helpline moved..github/workflows/tests.yml, thetestsjob: "Nothing this repository ships is Python at all — three bash files —" was wrong twice, in its count and in its claim. It now says nothing shipped needs a Python package: the commands are bash, orpython3(lanes-index,lane-worktrees) importing only the standard library. Verified by reading both files' imports: no module outside the standard library.tests/test_upstream_pin.py,pin_scalarsdocstring: "this repository ships three bash files and installs nothing" now reads "bash and standard-librarypython3commands and installs no package", rewrapped.docs/README-lanes.md: the--installcomment's "thirteen commands" is now "the commands".Functions and regions edited:
lanes: the local-read stderr filter in the main body (theelsebranch of the--fetchread,local_err_file)openRepoTools:install_commands, the comment above the PATH note (case ":${PATH:-}:" in)tests/test_lane_helpers.sh: the file header comment ("WHERE THE FILES ARE"); the "THE BIN DIRECTORY" comment aboveOPENREPOTOOLS_BIN_DIR; the "stale and takeover" section, the repoG#8 TAKEOVER assertion; the restart-skill fence section, newlanesPOSIXLY_CORRECT block after thefence3bcasetests/test_openrepotools_command.py: docstrings oftest_install_says_how_to_put_it_on_path,fake_github,offline_github,test_install_places_all_nine_or_none,test_install_from_stdin_fetches_itself_into_a_live_workdirtests/test_upstream_pin.py:pin_scalarsdocstringREADME.md: the Windows paragraph under "Using them"; the CI paragraph under "Tests".github/workflows/tests.yml: the comment in thetestsjob above "install the test runner"docs/README-lanes.md: the paragraph that begins "The suite copies"; theopenRepoTools --installcomment in thewip initblockTests added, and how fail-before and pass-after were proved
Nothing here ran the full suite. Each case was run in isolation by cutting
tests/test_lane_helpers.shinto a scratch script (its own header, setup and helpers, then only the block under test) and pointing itsSRC_DIRat the tree under test, withenv -u LANES_EDIT -u LANES_WORKSPACE_ROOT -u LANES_REPO -u LANES_LANE. The merge touched none oflanes,lanes-edit.shortests/test_lane_helpers.sh(git diff 59c214b HEAD -- lanes lanes-edit.sh tests/test_lane_helpers.sh docsis empty), so these results hold at the merged head.#66, the prefix of the suite through the repoG#8 section, four runs:
hasnt … ".*…"hasnt … ".*…"CLAIMED — lane repoG-2, … opensoft/repoG#8line added to$G2grep -cEgrep -cEexpected [0], got [1](268 passed, 1 failed)#54 part a, the new block alone, against the original
lanes(git show f87fd5a:lanes) and the fixed one:The #58 edits are comments, docstrings and prose, so there is nothing to fail before; what they must not do is move an assertion. After the merge, under the shared pytest lock where it was free and unlocked for the static files:
python3 -m pytest tests/test_repo_hygiene.py tests/test_upstream_pin.py -q -p no:cacheprovider: 166 passed at 08dd704 (the README cap, the shipped-bash checks and the lane-manual quotes included).tests/test_claude_current.pyunderflock /tmp/openrepotools-pytest.lock, before the last docs and docstring edits: 254 passed.bash -n openRepoTools lanes tests/test_lane_helpers.shandpython3 -m py_compileon the two Python files touched: clean.CI's
testsjob is the suite of record.Remaining (not touched here)
#195 landed (aa14de3) without these.
tests/test_repo_hygiene.pyis now changed by lane 1's open #229, so they wait for it. Line numbers are as of main d424b64:tests/test_repo_hygiene.pyabout line 2906 ("every\nin these four bash files") and about line 1092 ("All three files here are bash")tests/conftest.pyabout line 595 ("these three files are bash")_end_of_options_after_an_operandintests/test_repo_hygiene.py(about line 3020)Every other #58 site outside #195's files is done: the README's two sentences, the tests.yml macOS sentence (gone with the job in #227),
openRepoTools, the command tests' four sites, the suite's header and bin-directory comments, the lane manual,tests/test_upstream_pin.pyand the workflow's runner note. This PR isPart of #58and carries no closing keyword for it, because the three sites above would otherwise be left with no issue to track them.Closes #66
Part of #54
Part of #58
🤖 Generated with Claude Code
Summary by Sourcery
Fix lane assertion and stderr-filter portability issues, and update repository references that no longer match the shipped command set.
Bug Fixes:
Enhancements:
Tests: