Skip to content

Pin openRepoShape at v1.1.1, 5017830 on its main: four of the eight mounted files moved; no test expectation moved - #15

Merged
brettheap merged 3 commits into
mainfrom
chore/openreposhape-pin-v1.1.1
Nov 8, 2026
Merged

brettheap merged 3 commits into
mainfrom
chore/openreposhape-pin-v1.1.1

Conversation

@brettheap

@brettheap brettheap commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Lane: openRepoTools-1
Claim: opensoft/openRepoTools#186 (comment)

What changes

This PR moves the code leg's pin on openRepoShape from v1.1.0 to v1.1.1, in one commit:

  • contracts/openreposhape-pin.yaml:
    • commit: moves from 190133d5e704e380c430f87ca9c4e31746de0012 to 50178305e4229275d18e71c2152403b4e9d3004e.
    • digests.tree_sha256 moves from 7a66972c7de193c050f77f97bffa13d8543c28d74f61ea210644e65aa3f37912 to 204d73aabf2379554600234d4b36dc08d3c3a1da422395dec44637b5ca7a5184.
  • The gitlink upstream/openRepoShape moves from 190133d5e704 to 50178305e422, together with the pin file.
  • tests/test_install_payload_source.py, one docstring line:
    • The citation of openRepoShape's --install pointer changes from openRepoShape:547 at 190133d to openRepoShape:745 at 5017830.
    • The line's bytes are unchanged at the new commit (cmp equal).
    • The test's pipeline string is untouched.

Nothing else moves in this commit.

  • Two comments go stale, because they say in the present tense that the pin is 190133d: .github/workflows/release.yml:6-7 and tests/test_release_workflow.py:144-145.
    • The comment-only commit 7e1df87e on this branch fixes both (review finding S2): they now say that the pin moved to 5017830 (v1.1.1).
    • It keeps the 190133d that tests/test_release_workflow.py's HEADER_SECTIONS check needs in release.yml's header.
  • These stay as they are, as dated provenance:
    • the two release requirement locks;
    • that header check;
    • the notes on v1.1.0's parse_yaml and layout.

Why

Two rulings of Brett Heap's govern this, on opensoft/openRepoTools#186:

This PR moves the code leg's mounted pin. opensoft/openRepoTools#348 moves the root's shape copies.

v1.1.1 is the annotated tag fd9316bb8e4f99d13a678b4bfc3846b4759ecbb7. It peels to 50178305…, which is an ancestor of openRepoShape's main (bd3e9c1485d3, 121 commits later). The pinned-standard rule allows only a commit on main, and this one is.

How the values were made

The bump follows the procedure in the pin file's header, with the edit before the git add:

  1. Check out 50178305… in upstream/openRepoShape.
  2. Recompute the digest with the pinned checkout's own repo_shape.tree_digest.
  3. Write the two values.
  4. Stage the pin file and the gitlink together.

The digest is recomputed, never adjusted:

  • v1.1.0's helper and v1.1.1's helper print the same two numbers on both trees (366 records at v1.1.1). So sorted-ls-tree-r-v1 means the same on both sides.
  • A research read of the forge's recursive tree listing on 2026-11-02 gave the same 204d73aa… independently.

Four of the eight files the suite mounts change at v1.1.1:

  • scripts/repo_shape.py
  • templates/assembly-root/scripts/bootstrap.py
  • templates/family-root/scripts/bootstrap.py
  • templates/family-root/scripts/siblings.py

The two Makefiles and the two .gitignore files are byte-identical at both commits.

Order

PR C waits for this PR. The root's PR C points the assembly's code gitlink and contracts/code-pin.yaml at the commit this PR leaves on main. C's exact-pins job then runs the composed suite at that commit, with upstream/openRepoShape at v1.1.1. That run also covers the nine composed-acceptance tests that skip below.

The order on the code leg:

No release

Nothing here is tagged or published. The leg's release/v1.1 branch and its tag v1.1.0 stay at 2a057a6d.

This PR would still ship in v1.2.0 if it lands before that tag (review finding S3).

Local tests

Setup:

  • a fresh clone of main at 2a057a6d, with this commit on top and the submodule checked out at 50178305. These ran before the merge of 577110e4; the PR's CI runs on the merge, ce266b1d;
  • standalone mode (OPENREPOTOOLS_COMPOSED=0), in a clean environment;
  • Python 3.12.3, pytest 8.3.4.

Results:

  • tests/test_upstream_pin.py: 15 passed in 0.07s. It checks:
    • the lockstep of pin and gitlink;
    • the digest, recomputed with the pinned helper;
    • the checkout at the pinned commit;
    • all eight mounted files present.
  • tests/test_install_payload_source.py: 100 passed, 9 skipped in 167.96s.
    • All nine skips are composed-acceptance tests that need an assembly root, at lines 917, 951, 974, 1387, 1921, 2014 and 2023.
    • The test whose docstring moves is one of them.
  • tests/test_park_resume_commands.py: 223 passed in 45.79s. It builds real estates from the four changed mounted files.

The rest of the suite is CI's job.

CI

The four required tests.yml jobs are guard-launch-mode, tests, tests-no-submodule and package.

This PR touches no shell file: it changes one YAML file, one Python test file and the gitlink. So SonarCloud's charge on lanes-edit.sh does not apply to it.

Landing

This PR lands only on Brett Heap's word.

🤖 Generated with Claude Code

…ounted files moved; no test expectation moved

Brett Heap ruled openRepoShape v1.1.1 on 2026-10-22 (opensoft/openRepoTools#186).
This is the code leg's pin, the one the suite mounts. The assembly root then
points its `code` gitlink at the commit this change leaves on main.

What moves, and nothing else:

  contracts/openreposhape-pin.yaml
    commit:      190133d5e704e380c430f87ca9c4e31746de0012
              -> 50178305e4229275d18e71c2152403b4e9d3004e
    tree_sha256: 7a66972c7de193c050f77f97bffa13d8543c28d74f61ea210644e65aa3f37912
              -> 204d73aabf2379554600234d4b36dc08d3c3a1da422395dec44637b5ca7a5184
  upstream/openRepoShape (gitlink, 160000)
                 190133d5e704 -> 50178305e422
  tests/test_install_payload_source.py (one docstring line)
                 openRepoShape:547 at 190133d -> openRepoShape:745 at 5017830

v1.1.1 is an annotated tag, dereferenced locally:
  git rev-parse v1.1.1 'v1.1.1^{commit}'
    -> fd9316bb8e4f99d13a678b4bfc3846b4759ecbb7 (tag)
    -> 50178305e4229275d18e71c2152403b4e9d3004e

On openRepoShape's main, as the pinned standard's rule 2 requires:
  git merge-base --is-ancestor 50178305e422 origin/main   # exit 0
  main is bd3e9c1485d3, 121 commits past it; v1.1.0..v1.1.1 is 70 commits.

Bump run as contracts/openreposhape-pin.yaml states, the edit before the add:
  git -C upstream/openRepoShape fetch origin 50178305e4229275d18e71c2152403b4e9d3004e
  git -C upstream/openRepoShape checkout 50178305e4229275d18e71c2152403b4e9d3004e
  python3 -c "...from repo_shape import tree_digest; print(tree_digest('upstream/openRepoShape', 'HEAD'))"
    -> 204d73aabf2379554600234d4b36dc08d3c3a1da422395dec44637b5ca7a5184
  git add contracts/openreposhape-pin.yaml upstream/openRepoShape

The digest is recomputed, not adjusted, with the pinned checkout's own
scripts/repo_shape.py. 190133d's helper and 5017830's helper print the
same two numbers on both trees (7a66972c... for 190133d, 204d73aa... for
5017830, 366 records), so sorted-ls-tree-r-v1 means the same on both
sides, and v1.1.1's change to repo_shape.py touches no tree_digest line.
A reading of the forge's recursive tree listing on 2026-11-02 gave the
same 204d73aa... independently. Only `commit:` and
`digests.tree_sha256` change in the pin file. Nothing under
upstream/openRepoShape was edited.

Four of the eight files the suite mounts change at v1.1.1:
  scripts/repo_shape.py
  templates/assembly-root/scripts/bootstrap.py
  templates/family-root/scripts/bootstrap.py
  templates/family-root/scripts/siblings.py
The two Makefiles and the two .gitignore files are byte-identical at both
commits, and so is every file under templates/workspace-root/.

The docstring of
test_r01_composed_the_documented_one_liners_resolve_through_the_root_entry_point
cited openRepoShape's --install pointer as openRepoShape:547 at 190133d.
At the pinned 5017830 the same line is 745, and its bytes are unchanged:

  cmp <(git show 190133d:openRepoShape | sed -n 547p) \
      <(git show 5017830:openRepoShape | sed -n 745p)     # equal

So only the citation moves with the pin, in the form
opensoft/openRepoTools#233 used for 280 -> 547; the test's pipeline
string is untouched. Every line that names 190133d or v1.1.0 as dated
provenance (release.yml, the two release requirement locks,
test_release_workflow.py, and the notes on v1.1.0's parse_yaml and
layout) stays as it is.

Part of opensoft/openRepoTools#186.

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

sourcery-ai Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

Reviewer's Guide

Configuration

Update the openRepoShape pin’s commit and tree digest together so the mounted revision and its recorded identity stay in sync.

  • contracts/openreposhape-pin.yaml L54, L60

Revise the release workflow’s provenance comments to describe the current pin while retaining the v1.1.0 adaptation history.

  • .github/workflows/release.yml L7-10

Tests

Update the source citation for openRepoShape’s unchanged install-pointer line at the new pinned revision.

  • tests/test_install_payload_source.py L922

Clarify that the release-workflow test models the workflow at the commit currently named by the pin.

  • tests/test_release_workflow.py L144-147

Lock files and vendored code

Move the mounted openRepoShape submodule gitlink to the pinned v1.1.1 commit.

  • upstream/openRepoShape L1

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

sourcery-ai[bot]
sourcery-ai Bot previously approved these changes Nov 8, 2026

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

@brettheap

Copy link
Copy Markdown
Contributor Author

Lane openRepoTools-1, 2026-11-08T13:32:45Z: independent review of this PR, a check of the tree, not a landing word. The verdict is LAND after fixes, and the fixes are to text only.

The review was run by a separate agent with no part in writing this PR. It ran on Sonnet 5.5 and worked only from fresh clones and from GitHub.

What it checked, on the head 187991ffc4fadcb66b1eb750e44f7c425d5331f1:

  • The diff: exactly three paths. The gitlink is at 50178305…, which is the peeled v1.1.1 (tag object fd9316bb…), and it is an ancestor of openRepoShape's main.
  • The digest 204d73aabf2379554600234d4b36dc08d3c3a1da422395dec44637b5ca7a5184 was matched five ways, and the same methods give 7a66972c… on 190133d:
    • the pinned checkout's own helper, by the pin header's exact command;
    • 190133d's helper;
    • an independent re-implementation that walks tree objects with git cat-file (366 records);
    • git ls-tree -r -z | sort -z | sha256sum;
    • the forge's recursive tree listing.
  • The docstring: line 745 of the launcher at 50178305 is byte-equal to line 547 at 190133d (cmp 0), and that line occurs once in each.
  • tests/test_upstream_pin.py: 15 passed with the submodule, and 5 passed with 10 skipped without it. As a negative control, putting the old digest back makes it fail.
  • The commit: the identity is Brett Heap's noreply address, with Lane: and Co-Authored-By: trailers. The body's facts were confirmed.

Findings and what was done with them:

  • S1, the ruling's dates. The body now names both rulings: 2026-10-22 (Triad migration (feature 004-migrate-to-triad): execution tracking under Brett Heap's word of 2026-10-07 openRepoTools#186 comment 6342293150, item 16) and 2026-11-08 ("v1.1.1 b", confirmed at 13:06:02Z). The commit message's shorter line stays as it is, because nothing here is force-pushed.
  • S2, two present-tense comments. They are .github/workflows/release.yml:6-7 and tests/test_release_workflow.py:144-145. A comment-only follow-up commit fixes them, and it is pushed together with the re-test after the T017 landings, so it costs no extra CI run.
  • S3, which release it ships in. The body now says that this PR ships in v1.2.0 if it lands before that tag, so Brett's word to land it is also that decision.
  • N2: a bot's summary was appended to the body, and the edit removed it.

Not yet checked: CI. tests and tests-no-submodule were still running at 13:28Z. guard-launch-mode, package and SonarCloud passed.

Lane: openRepoTools-1

brettheap and others added 2 commits November 8, 2026 13:39
…eader keeps its v1.1.0 provenance

Review finding S2, in #15 comment 6722132903:
two comments still said, in the present tense, that
`upstream/openRepoShape` is pinned at 190133d (v1.1.0), which stopped being
true when this PR moved the pin to 50178305 (v1.1.1). Comments only.

.github/workflows/release.yml, the header's first paragraph. The header was
adapted from openRepoShape v1.1.0's own release.yml at 190133d, and that stays
as dated provenance in the past tense: the commit `upstream/openRepoShape`
"was pinned at when this was adapted". It now adds, as a dated fact, that the
pin moved to 5017830, v1.1.1, whose release.yml differs from 190133d's in
comment lines only. "190133d" and "openRepoShape v1.1.0" stay in the header,
where HEADER_SECTIONS and HEADER_CARRIES in tests/test_release_workflow.py
require them, the first one before every other section.

tests/test_release_workflow.py, the comment above MODEL. It now says what the
test reads: openRepoShape's own release.yml, in the pinned submodule, at
whatever commit contracts/openreposhape-pin.yaml names. 5017830 (v1.1.1) is
named as the commit the pin moved to from 190133d (v1.1.0), a dated fact that
needs no edit at the next bump.

The claim that the two upstream workflows differ in comment lines only was
checked, not assumed:
  git -C upstream/openRepoShape diff 190133d 50178305 -- .github/workflows/release.yml
shows 40 changed lines, every one a comment, and the file parses to the same
data at both commits.

Nothing else moves. In both files every changed line starts with `#` after its
indent; the Python module's AST, docstrings included, is equal before and
after; release.yml parses to the same data before and after.

Part of opensoft/openRepoTools#186.

Lane: openRepoTools-1
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t would land on (part of opensoft/openRepoTools#186)

Brett's answer of 16:21Z, relayed by lane 3 in opensoft/openRepoTools#165 (comment 6723967774), lands code#15 now, in v1.2.0, with the code leg's order first ready, first landed. The merge is clean, and B's change stays its five paths.

Lane: openRepoTools-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

sonarqubecloud Bot commented Nov 8, 2026

Copy link
Copy Markdown

@brettheap

Copy link
Copy Markdown
Contributor Author

LANDING — lane openRepoTools-1, session df82f553-7803-49c4-8ddf-3f9acdcb8ee0@Eagle, 2026-11-08T19:29:21Z, PR #15 into opensoft/openRepoTools-code main → into main; head ce266b1; openRepoShape v1.1.1's code-leg pin (B, #186), on Brett Heap's dialog answer 'Land B now (Recommended)' (19:26:48Z); merge commit

@brettheap
brettheap merged commit e393958 into main Nov 8, 2026
6 checks passed
@brettheap

Copy link
Copy Markdown
Contributor Author

LANDED — lane openRepoTools-1, session df82f553-7803-49c4-8ddf-3f9acdcb8ee0@Eagle, 2026-11-08T19:30:50Z, PR #15 into opensoft/openRepoTools-code main → main e393958 (merge commit of ce266b1 into 577110e; tree 625b7ba4 equals the head's; openRepoShape v1.1.1's code-leg pin, B, #186)

brettheap pushed a commit that referenced this pull request Nov 8, 2026
….1's pin) into the code-leg slice 1a (opensoft/openRepoTools#198)

Main moved from 577110e to e393958 when #15 landed
at 19:30:50Z: the pin of upstream/openRepoShape moved from 190133d (v1.1.0)
to 5017830 (v1.1.1). The merge brings five files, +12 -8:
- upstream/openRepoShape: the submodule pointer, 190133d -> 5017830;
- contracts/openreposhape-pin.yaml: the pinned commit and its tree_sha256;
- .github/workflows/release.yml: the header says the pin moved, and keeps its
  v1.1.0 provenance (comment lines only);
- tests/test_release_workflow.py: the MODEL comment says the same (comment
  lines only);
- tests/test_install_payload_source.py: one docstring names the pointer as
  openRepoShape:745 at 5017830.

Why: this slice lands alone, by merge commit, as #16.
Its landed tree must equal a tree CI tested green, so the slice takes the new
main in place and is tested there. Slice 1a stood on 577110e, the previous
main, and would otherwise be tested on a main that is no longer the one it
lands on.

The merge is clean: no hunk was resolved by hand. git merge-tree of e393958
into 903d751 gave tree 14d48cf before the
merge was made.

Lane: openreposhape-2 (openRepoShape-2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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