From 16d31e99b27fa5e3c4ae8fb2e2a2f3c4b6df3e68 Mon Sep 17 00:00:00 2001 From: Brett Heap <1513478+brettheap@users.noreply.github.com> Date: Wed, 28 Oct 2026 21:37:32 +0000 Subject: [PATCH 1/2] 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) 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 opensoft/openRepoTools#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: opensoft/openRepoTools#186 Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 --- .gitignore | 2 +- README.md | 2 +- contracts/shape-pin.yaml | 2 -- shape/.gitignore | 4 ---- 4 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 shape/.gitignore diff --git a/.gitignore b/.gitignore index 2d04abf..fbbdde0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ __pycache__/ *.py[cod] .pytest_cache/ -# Merged from the shape's copy, `shape/.gitignore` (pinned, left in place). +# Merged from the shape's copy, `shape/.gitignore`, removed once merged. .venv/ .DS_Store # Paired feature worktrees, `worktrees//{spec,code}/`: linked diff --git a/README.md b/README.md index 6344b31..2240b4c 100644 --- a/README.md +++ b/README.md @@ -258,7 +258,7 @@ gh api repos/opensoft/openRepoTools/contents/openRepoTools \ Both lines are unchanged by the split: the `openRepoTools` they fetch is this root's entry point, which hands over to the installer `code/openRepoTools` at -the commit this root pins. +the commit this root pins. Since the split the `curl` line also needs `api.github.com` and `jq`, and makes 6 GitHub API calls per install. A workstation uses ONE install route or the other, never both — pipx's `openrepotools` or workBenches' `./setup.sh` — until opensoft/workBenches#165 lets its diff --git a/contracts/shape-pin.yaml b/contracts/shape-pin.yaml index 9e86a52..6791108 100644 --- a/contracts/shape-pin.yaml +++ b/contracts/shape-pin.yaml @@ -48,8 +48,6 @@ files: sha256: "d2bd1cfc8515088980df66c8adda3fdaea908e7e2eba6f94062c1b9e65610995" - path: Makefile sha256: "6d65dd06e12564a7c018a72a5a2e3c80b999d7026ce5643e77ca8dd6e9254dfa" - - path: shape/.gitignore - sha256: "00256b4fddd74373bd31f7726469936deee31f171515a2e0e1b2364a5c543223" - path: shape/.gitattributes sha256: "e2b88cf25928c5a58bb2acaae1779d934c262273db708d0aa6dfb01591b15baa" - path: .github/workflows/validate.yml diff --git a/shape/.gitignore b/shape/.gitignore deleted file mode 100644 index eedaeaf..0000000 --- a/shape/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -__pycache__/ -*.py[cod] -.venv/ -.DS_Store From 8866975c2409fae54c0e07b54d70b92302c69c38 Mon Sep 17 00:00:00 2001 From: Brett Heap <1513478+brettheap@users.noreply.github.com> Date: Wed, 28 Oct 2026 22:14:28 +0000 Subject: [PATCH 2/2] Scope the note beside the curl one-liner to hosts without gh, where the line makes 6 GitHub API calls and newly reads their answers with jq (part of opensoft/openRepoTools#186) Two reviews of this pull request found the wording of Ask 13's note, on README.md line 261, wrong: lane 2's opensoft/openRepoTools#186 comment 6481710910 (SHOULD 1) and lane 5's opensoft/openRepoTools#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, opensoft/openRepoTools#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: opensoft/openRepoTools#186 Lane: openRepoTools-1 Co-Authored-By: Claude Sonnet 5.5 Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2240b4c..1f73cb3 100644 --- a/README.md +++ b/README.md @@ -258,7 +258,7 @@ gh api repos/opensoft/openRepoTools/contents/openRepoTools \ Both lines are unchanged by the split: the `openRepoTools` they fetch is this root's entry point, which hands over to the installer `code/openRepoTools` at -the commit this root pins. Since the split the `curl` line also needs `api.github.com` and `jq`, and makes 6 GitHub API calls per install. +the commit this root pins. Since the split, on a host without `gh`, the `curl` line also needs `api.github.com`: it 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. A workstation uses ONE install route or the other, never both — pipx's `openrepotools` or workBenches' `./setup.sh` — until opensoft/workBenches#165 lets its