Skip to content

Merge away shape/.gitignore with update-shape.py apply, which drops its pin row, fix the .gitignore comment, and note beside the curl one-liner that without gh it needs api.github.com and makes 6 GitHub API calls (part of opensoft/openRepoTools#186) - #345

Merged
brettheap merged 2 commits into
mainfrom
merge-away-shape-gitignore
Oct 31, 2026

Conversation

@brettheap

@brettheap brettheap commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

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

The in-place adoption found a .gitignore in this repository, so it
wrote openRepoShape's copy beside it as shape/.gitignore and pinned
that copy in contracts/shape-pin.yaml. The adoption plan's follow-up
at FP:440 asks for the copy to be merged into .gitignore and then
removed, with update-shape.py check reporting its pin row merged-away
and apply dropping the row. The merge itself was made at the cutover:
.gitignore already holds all four of the copy's lines.

Brett Heap's round 18 (1) ruling for #186 kept
the copy, its pin row and the .gitignore comment unchanged through the
cutover, and made FP:440 a root pull request after the root-split
merge, done with update-shape.py apply. So:

  • shape/.gitignore is removed with git rm;
  • update-shape.py check, at openRepoShape v1.1.0
    (190133d5e704e380c430f87ca9c4e31746de0012), reported the row
    merged-away, and apply dropped it from contracts/shape-pin.yaml and
    re-pinned the same commit, so the pin is not edited by hand; check
    then had nothing to do, and the root's validate-pins.py and
    validate-manifest.py passed;
  • the .gitignore comment no longer calls the copy pinned and left in
    place: it says the lines were merged from it and that it was removed
    once merged.

Brett Heap's round 20 (2) ruling put Ask 13's note in this pull request
too, beside the one-liner in README.md. It is the note his round 4
answer, "Accept and document it", asked for. On a host without gh, the
curl line makes 6 GitHub API calls per install, 2 in this root's
openRepoTools and 4 in the installer it hands over to, where it made
none before. It reads three of their answers with jq, which --install
already needed for the hook merges. With gh, every read goes through gh
api, as before the split, so the note is scoped to hosts without gh. It
extends the last line of the paragraph after the two install lines
rather than adding a line, because the code leg's
tests/test_repo_hygiene.py caps an assembly root's README.md at 529
lines, which it already has.

🤖 Generated with Claude Code

Summary by Sourcery

Merge the shape-specific ignore rules into the root configuration, remove the obsolete copy and pin, and document curl installation API usage.

Enhancements:

  • Remove the redundant shape/.gitignore copy and its shape pin after merging its contents into the root .gitignore.
  • Document the additional GitHub API requirements and request volume for curl-based installs on hosts without gh.

Documentation:

  • Update the README to explain the curl install path's GitHub API usage and jq dependency when gh is unavailable.

Chores:

  • Refresh shape pin metadata to reflect removal of the merged-away file.

…ts pin row, fix the .gitignore comment, and note beside the curl one-liner that it needs api.github.com and jq and makes 6 GitHub API calls (part of #186)

The in-place adoption found a .gitignore in this repository, so it
wrote openRepoShape's copy beside it as shape/.gitignore and pinned
that copy in contracts/shape-pin.yaml. The adoption plan's follow-up
at FP:440 asks for the copy to be merged into .gitignore and then
removed, with update-shape.py check reporting its pin row merged-away
and apply dropping the row. The merge itself was made at the cutover:
.gitignore already holds all four of the copy's lines.

Brett Heap's round 18 (1) ruling for #186 kept
the copy, its pin row and the .gitignore comment unchanged through the
cutover, and made FP:440 a root pull request after the root-split
merge, done with update-shape.py apply. So:
- shape/.gitignore is removed with git rm;
- update-shape.py check, at openRepoShape v1.1.0
  (190133d5e704e380c430f87ca9c4e31746de0012), reported the row
  merged-away, and apply dropped it from contracts/shape-pin.yaml and
  re-pinned the same commit, so the pin is not edited by hand; check
  then had nothing to do, and the root's validate-pins.py and
  validate-manifest.py passed;
- the .gitignore comment no longer calls the copy pinned and left in
  place: it says the lines were merged from it and that it was removed
  once merged.

Brett Heap's round 20 (2) ruling put Ask 13's note in this pull request
too, beside the one-liner in README.md. It is the note his round 4
answer, "Accept and document it", asked for: since the split the curl
line also needs api.github.com and jq, and makes 6 GitHub API calls per
install, 2 in this root's openRepoTools and 4 in the installer it hands
over to. It extends the last line of the paragraph after the two
install lines rather than adding a line, because the code leg's
tests/test_repo_hygiene.py caps an assembly root's README.md at 529
lines, which it already has.

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

sourcery-ai Bot commented Oct 28, 2026 •

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

Reviewer's Guide

The PR completes the shape/.gitignore cutover by deleting the redundant copy and workflow-managed pin entry, updates the migration comment, and documents the API host, request overhead, and jq requirement introduced by curl-based installs on systems without gh.

Sequence diagram for curl installation without gh

sequenceDiagram
    participant User
    participant Curl as curl
    participant GitHub as api.github.com
    participant Installer as Installer
    participant JQ as jq

    User->>Curl: Run install one-liner
    Curl->>GitHub: Make 6 GitHub API calls
    GitHub-->>Curl: Return repository and installer data
    Curl->>Installer: Hand over to installer
    Installer->>GitHub: Make 4 GitHub API calls
    GitHub-->>Installer: Return installer data
    Curl->>JQ: Read 3 API responses
    JQ-->>Curl: Provide values for hook merges
Loading

Flow diagram for the shape ignore-file cutover

flowchart LR
    ShapeCopy[shape/.gitignore] -->|contents already merged into| RootIgnore[.gitignore]
    RootIgnore -->|obsolete copy removed| Removed[shape/.gitignore deleted]
    Pin[contracts/shape-pin.yaml entry] -->|update-shape.py apply drops merged-away row| Repinned[shape pin re-pinned without copy]
Loading

File-Level Changes

Change Details Files
Remove the redundant shape ignore copy and reconcile the shape pin through the shape update workflow.
  • Delete shape/.gitignore after confirming its four entries are already present in the root .gitignore.
  • Remove the corresponding shape-pin.yaml row as generated by update-shape.py apply rather than editing the pin manually.
  • Update the root .gitignore migration comment to describe the merge and removal.
  • Retain validation of the updated pin and manifest state.
.gitignore
contracts/shape-pin.yaml
shape/.gitignore
Document the additional requirements and GitHub API traffic of curl-based installation after the repository split.
  • Clarify that hosts without gh must reach api.github.com for the curl install path.
  • Document the six GitHub API calls per install and the three responses read with jq.
  • Keep the guidance in the existing paragraph to preserve the README line-count constraint.
README.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

…he line makes 6 GitHub API calls and newly reads their answers with jq (part of #186)

Two reviews of this pull request found the wording of Ask 13's note, on
README.md line 261, wrong: lane 2's #186 comment
6481710910 (SHOULD 1) and lane 5's #186 comment
6481824359 (MUST 1). They agree on two facts:
- The 6 GitHub API calls hold only on a host without gh: there, and only
  since the split, the curl line makes 6 per install, 2 in this root's
  openRepoTools and 4 in the installer it hands over to. With gh, every
  read goes through gh api, as it did before the split.
- jq is not new since the split: --install has always needed it for the
  hook merges, which README.md says below the note. What is new is that
  the curl line, without gh, reads three of the API answers with it.

Lane 1's ruling 84, #186 comment 6481907160, takes
lane 2's wording on the same line, so the note now says that, on a host
without gh, the curl line also needs api.github.com, makes 6 GitHub API
calls per install where it made none before, and reads three of their
answers with jq, which the hook merges below already need. It stays on
its one line, so README.md stays at 529 lines, the cap that the code
leg's tests/test_repo_hygiene.py sets for an assembly root's README.md.

Cutover: #186
Lane: openRepoTools-1
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brettheap brettheap changed the title Merge away shape/.gitignore with update-shape.py apply, which drops its pin row, fix the .gitignore comment, and note beside the curl one-liner that it needs api.github.com and jq and makes 6 GitHub API calls (part of opensoft/openRepoTools#186) Merge away shape/.gitignore with update-shape.py apply, which drops its pin row, fix the .gitignore comment, and note beside the curl one-liner that without gh it needs api.github.com and makes 6 GitHub API calls (part of opensoft/openRepoTools#186) Oct 28, 2026
@sonarqubecloud

Copy link
Copy Markdown

@brettheap

Copy link
Copy Markdown
Contributor Author

LANDING — lane openRepoTools-1, session df82f553-7803-49c4-8ddf-3f9acdcb8ee0@Eagle, 2026-10-31T19:42:24Z, PR #345 into opensoft/openRepoTools main → into main; head 8866975; FP item 28's root PR (S18, #186), on Brett Heap's typed word 'merge 345'; squash

@brettheap
brettheap marked this pull request as ready for review October 31, 2026 19:43
@brettheap
brettheap merged commit f0d7306 into main Oct 31, 2026
4 checks passed
@brettheap

Copy link
Copy Markdown
Contributor Author

LANDED — lane openRepoTools-1, session df82f553-7803-49c4-8ddf-3f9acdcb8ee0@Eagle, 2026-10-31T19:44:07Z, PR #345 into opensoft/openRepoTools main → main f0d7306 (squash of 8866975; FP item 28's root PR, #186)

@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 ✨

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