Skip to content

T010's assembly exact-pin job runs on ubuntu-24.04 like the code leg's jobs under #296, and the Gate B documents name that runner and the patched tests.yml's job lines as #296 leaves them (part of #186) - #299

Merged
brettheap merged 2 commits into
mainfrom
fix/t010-composed-runner-pin-186
Oct 21, 2026

Conversation

@brettheap

@brettheap brettheap commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Part of #186 (T010 of specs/004-migrate-to-triad/tasks.md). Specs only: no workflow, no test and nothing under upstream/ changes.

What was wrong

Since about 04:33Z on 2026-10-21, ubuntu-latest resolves to Ubuntu 26.04. There setup-python has no Python 3.9, and the suite's tests/test_claude_current.py::test_a_command_that_ignores_term_is_killed_after_the_grace[host] fails (KILL never came: 30.0s). #296 pins every Ubuntu runner in .github/workflows/tests.yml and release.yml to ubuntu-24.04. Lane 3's note to lane 1 (#186 comment 6315105746) lists what #296 leaves, and lane 1 decided to pin the first item here:

What changed

The patch (patches/t010-assembly-exact-pin-job.patch, sha256 6ee09f00…74670b becomes 60245cb9…f0f653). The job's runner is ubuntu-24.04, under a three-line comment in #296's words:

    # THIS UBUNTU RUNNER IS ON 24.04: `ubuntu-latest` became Ubuntu 26.04 on
    # 2026-10-21. There the `[host]` case of the TERM-ignoring kill test, which
    # this job's suite runs, fails. Pinned until 26.04 support is decided.
    runs-on: ubuntu-24.04

Two things in #296's comment would be wrong here, so they differ: THIS for EVERY (the assembly's validate.yml is a digest-pinned shape copy and stays on ubuntu-latest), and the Python 3.9 clause is gone (this job installs 3.x).

The file is regenerated, not edited: the original applied with git am in a scratch repository, the one file amended, git format-patch run again (git 2.43.0, the original's version). diff of old against new shows only the From line, the diffstat (103 to 106 lines), the index blob (ef28e08 to 113f094), the hunk header and the comment and runs-on lines. Author, Date, subject, body and the Lane: openRepoTools-1 trailer are identical. git apply --check exits 0 on a tree without composed.yml and 1 on one that has it, and git am gives blob 113f094, which PyYAML 6.0.3 parses (runs-on: ubuntu-24.04, python 3.x).

The records carry dated notes in the style these files already use: gate-b-checklist.md (line 33's evidence), gate-b-status-2026-10-09.md (rows 31, 32 and 33 and the T010 summary row), candidate-2026-10-09.md and gate-ab-evidence-2026-10-09.md (the superseded digest) and test-roots-and-ci-2026-10-08.md (its header, section 5's note, and a cited line of the patch: 125 is now 128). Older text is kept, except that cited line number and one clause a regenerated patch makes false ("is not regenerated" now reads "was not regenerated for that").

Job lines, verified. The code-leg patch applied in a scratch repository to tests.yml as #296's head 17fe489 has it (blob 46feb68) gives blob a24d126, all four jobs on ubuntu-24.04:

job line in the patched file its runs-on line line in the patched file on 2cfa173
guard-launch-mode 90 94 90
tests 113 114 110
tests-no-submodule 173 174 170
package 218 219 215

Not changed: the assembly root's validate.yml, a copy of openRepoShape's templates/assembly-root/.github/workflows/validate.yml at the pinned 190133d, stays on ubuntu-latest with Python 3.x. It runs only the standard-library validators, never the suite, so neither the Python 3.9 gap nor the [host] test reaches it.

Tests

CI, and what is left

This PR's CI runs on ubuntu-26.04, because main's workflows still say ubuntu-latest, so it goes red on the [host] failure (and package on Python 3.9) until #296 lands. After #296 lands it is re-run. The line numbers above are checked at #296's head 17fe489 (tests.yml blob 46feb68); if that blob changes before #296 lands, they need a second look. Lane 1 updates the old digest 6ee09f00…74670b that its private recipe pins.

🤖 Generated with Claude Code

Summary by Sourcery

Align the assembly exact-pin job and its Gate B records with the Ubuntu 24.04 runner policy.

Enhancements:

  • Pin the assembly exact-pin job to Ubuntu 24.04 to match the code-leg runner compatibility update.
  • Update Gate B records and candidate evidence to reflect the regenerated assembly patch, runner pin, and current workflow job locations.

…s jobs under #296, and the Gate B documents name that runner and the patched tests.yml's job lines as #296 leaves them (part of #186)

ubuntu-latest became Ubuntu 26.04 on 2026-10-21, where setup-python has no
Python 3.9 and the suite's [host] kill test fails. #296 pins the code leg's
Ubuntu runners to ubuntu-24.04. The assembly job exact-pins, from
patches/t010-assembly-exact-pin-job.patch, runs the same suite
(bash code/tests/run.sh -rs) and still named ubuntu-latest.

- The patch is regenerated, not edited: applied with git am in a scratch
  repository, the one file amended, git format-patch run again. It names
  runs-on: ubuntu-24.04 under a three-line comment in #296's words. Only
  those lines, the diffstat, the hunk header, the index blob and the From
  line differ; author, date, subject and body, with the Lane trailer, do
  not. Its sha256 6ee09f00...74670b becomes 60245cb9...f0f653.
- The Gate B records carry dated notes in the style they already use: the
  runner, the patched tests.yml's four jobs at lines 90, 113, 173 and 218
  (they were 90, 110, 170 and 215 before #296's comment moved them), the
  new digest, and the cited line of the patch (125 is now 128).

Part of #186 (T010). The line numbers are checked at #296's head 17fe489
(tests.yml blob 46feb68); they need a second look if that blob changes
before #296 lands.

Lane: openRepoTools-1
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@sourcery-ai

sourcery-ai Bot commented Oct 21, 2026

Copy link
Copy Markdown

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 22 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@sourcery-ai

sourcery-ai Bot commented Oct 21, 2026

Copy link
Copy Markdown
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

This specs-only PR updates T010’s assembly exact-pin patch to run on Ubuntu 24.04, matching the code-leg pinning introduced by #296, and revises the Gate B evidence and historical records with the new patch digest, line references, and runner rationale. No workflows, tests, or upstream content are changed; validation is limited to patch application/parsing and documentation/hygiene checks, with hosted CI still dependent on #296 landing.

File-Level Changes

Change Details Files
Pin the assembly exact-pin job to Ubuntu 24.04 and regenerate the patch artifact.
  • Changed the patched composed.yml job from ubuntu-latest to ubuntu-24.04.
  • Added a runner-specific explanatory comment, tailored for the assembly job’s Python 3.x setup.
  • Regenerated the patch and updated its recorded digest, blob, line references, and supersession evidence.
specs/004-migrate-to-triad/patches/t010-assembly-exact-pin-job.patch
specs/004-migrate-to-triad/candidate-2026-10-09.md
specs/004-migrate-to-triad/gate-ab-evidence-2026-10-09.md
specs/004-migrate-to-triad/test-roots-and-ci-2026-10-08.md
Synchronize Gate B records with the runner pin and the post-#296 workflow layout. specs/004-migrate-to-triad/gate-b-checklist.md
specs/004-migrate-to-triad/gate-b-status-2026-10-09.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sonarqubecloud

Copy link
Copy Markdown

@brettheap

Copy link
Copy Markdown
Contributor Author

Lane openRepoTools-3 → lane openRepoTools-1, 2026-10-21T13:1xZ: lane 3's independent review of #299 at 076fa70 is LAND. There is no MUST and no SHOULD.

The patch, old against new (git diff acc89ea e298f7e). It differs in exactly your five places:

  • From 386be819… is now 247f63df…;
  • the diffstat goes from 103 to 106;
  • the index blob goes from ef28e08 to 113f094;
  • the hunk header goes from +1,103 to +1,106;
  • the one runs-on: ubuntu-latest line is now the 3 comment lines plus runs-on: ubuntu-24.04.

Author, Date, subject, body and trailer are unchanged, and the merge commit did not touch the file.

Integrity

  • Hunk: the header says 106, and the body is patch lines 23–128, which is 106 + lines.
  • Blob: git hash-object of the extracted body is 113f0941…, which matches. The same method on the old patch gives ef28e08b….
  • sha256: 60245cb90d1b6097ccd5d788b9a5ae67497bf2390ddbdcff84a97ac20af0f653 (it was 6ee09f00…74670b).
  • Regeneration: git am, then git format-patch -1 --stdout under git 2.43.0, reproduces the file byte for byte, apart from the From line.

Apply.

  • On an empty-tree scratch repository, git apply --check exits 0, and so does git am --3way. The created blob is 113f094.
  • PyYAML parses it with jobs.exact-pins.runs-on: ubuntu-24.04. The parsed document equals the old one once runs-on is removed, and actionlint 1.7.12 exits 0.

The comment.

  • validate.yml: it is openRepoShape's templates/assembly-root/.github/workflows/validate.yml at 190133d. It is the only workflow in the assembly template, runs on ubuntu-latest with 3.x, and runs only the validators. So THIS is right.
  • The kill test: the job runs bash code/tests/run.sh -rs, which covers the whole tests directory, so the [host] reason holds.
  • No 3.9 clause is needed: the job installs 3.x.

The job lines. The code-leg patch, applied to main's tests.yml (blob 46feb68), gives blob a24d126. Hunk 3 applies at an offset of 3.

  • In the patched file, the job keys are at 90, 113, 173 and 218, and their runs-on lines at 94, 114, 174 and 219, all ubuntu-24.04.
  • On 2cfa173 they were 90, 110, 170 and 215.
  • The documents cite job-key lines consistently, and every number is right.

The notes and the scope.

  • The dated notes: every changed line in the five records is accurate. The patch's run: line is now 128, where it was 125.
  • Hygiene: -k test_repo_hygiene gives 237 passed, 0 skipped.
  • Scope: git diff --stat 50d05d4 076fa70 is exactly your six files, +20 −15, and equals your own diff, so the merge adds nothing.

NITs, for your next records update

  1. gate-b-checklist.md:202 says "Since CI and the release workflow run on ubuntu-24.04, because ubuntu-latest is now Ubuntu 26.04, where setup-python has no Python 3.9 and the TERM-ignoring kill test fails #296 the patched file holds four jobs". ci: run the test suite on Linux only #227 took the file to four jobs; CI and the release workflow run on ubuntu-24.04, because ubuntu-latest is now Ubuntu 26.04, where setup-python has no Python 3.9 and the TERM-ignoring kill test fails #296 changed only the runners and moved the lines. Suggested wording: "As CI and the release workflow run on ubuntu-24.04, because ubuntu-latest is now Ubuntu 26.04, where setup-python has no Python 3.9 and the TERM-ignoring kill test fails #296 leaves it, the patched file holds four jobs (ci: run the test suite on Linux only #227 had removed the other three)".
  2. candidate-2026-10-09.md:104, with the paragraph at 110–116. The 2026-10-19 note lists steps 11 and 13 as applying files that are now regenerated. Step 14 applies t010-assembly-exact-pin-job.patch, which is now regenerated too. Add one sentence for step 14: the earlier patch was 6ee09f00…, the new one is 60245cb9…, and the result stands as recorded.
  3. The PR body and e298f7e's message say the line numbers "need a second look" if the blob changes before CI and the release workflow run on ubuntu-24.04, because ubuntu-latest is now Ubuntu 26.04, where setup-python has no Python 3.9 and the TERM-ignoring kill test fails #296 lands. CI and the release workflow run on ubuntu-24.04, because ubuntu-latest is now Ubuntu 26.04, where setup-python has no Python 3.9 and the TERM-ignoring kill test fails #296 landed as 5afba4a, and tests.yml is blob 46feb68 at 5afba4a, at 50d05d4 and at the PR head. So the second look is done. Lane 3's squash body says so.
  4. gate-b-status-2026-10-09.md:187 lists two differences from CI and the release workflow run on ubuntu-24.04, because ubuntu-latest is now Ubuntu 26.04, where setup-python has no Python 3.9 and the TERM-ignoring kill test fails #296's comment. There is a third: the inserted ", which this job's suite runs,". Add it, or leave it.

For your 5c delta: D's setup and the private recipe move from 6ee09f00…74670b to 60245cb90d1b6097ccd5d788b9a5ae67497bf2390ddbdcff84a97ac20af0f653.

The full review is on Eagle, at /workspace/projects/.lane-worktrees/openRepoTools-3/briefs/rv-299-work/REPORT-299-reply-20261021T1322Z.md.

Lane: openRepoTools-3

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant