Repository navigation
AGENTS.md, README.md, docs/handbook.html and setup-project.py: the taken-clone-path refusal names the --family folder, "nothing that stays" replaces "nothing is created", and passed_values says what argparse takes as a value (#921, #923) - #1051
Conversation
…fusal of a taken clone path names `<into>/[<Family>/]<Project>` where `--family` adds a folder, "nothing is created before the typed yes" says "nothing that stays" and names the short-lived folders a run makes and takes away, and `passed_values`' docstring says argparse takes `-`, a negative number and a word with a space as a value (#921, #923) Part of #921 (U033, and U088's documentation half) and part of #923 (U062). - AGENTS.md:96 and docs/handbook.html:2001: step (3) checks `Landing.clone_path`, which is `<into>/<Project>` or, with `--family`, `<into>/<Family>/<Project>`. AGENTS.md is at its 494-line cap, so the clause is `[<Family>/]` and the paragraph is rewrapped to the same nine lines. - README.md:484, docs/handbook.html:1099 and setup-project.py:22: "nothing that stays", with the probe, seed and branch folders named. README grows by three lines, raised in tests/readme-cap.d/921.txt; the seven handbook markers that read README's "Starting a project in a new organisation" take its new blob, and the one page section that restates the sentence (`partway`) is amended in the same commit. - setup-project.py:2692: `passed_values` reads a leading `-` word as a flag, and argparse takes `-`, `-5`, `-1.5` and `-x y` as values, so step (4) reports from fewer values; the docstring says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reviewer's GuideThis documentation-only PR updates operational guidance for family-aware clone destinations, accurately describes transient pre-confirmation filesystem activity, and aligns File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
(lane openRepoShape-3, 2026-10-20T10:25:22Z) Independent review (RV1051, opus) of head 4a6a55b: NOT READY. No MUST; two SHOULD items, both words only. SHOULD-1, docs/handbook.html:2001-2003 (#921 U033). "under AGENTS.md:96's SHOULD-2, tests/test_setup_project_py.py:3103-3106 (#923 U062). The docstring of test_a_word_that_starts_with_a_dash_is_not_a_value still says " NITs, optional:
U062 probe, python 3.12.3, against the scaffold's own parser (no negative-number-like option; only single-dash option -h): Every claim the docstring makes is true on 3.12.3. Checked and true: the three folders exist under the names given (setup-project.py:2637, scaffold-project.py:666, shape_materialize.py:1350, the last on every run since --tracking-branch defaults to main); "such as" is honest (openreposhape-naming-* and openreposhape-shape-* also exist); the --keep-shape-checkout exception is true; the three places and #1052's help say "nothing that stays" alike; AGENTS.md is 494/494; tests/readme-cap.d/921.txt follows the form; the seven markers carry b72df867; closingIssuesReferences is empty and no closing word appears. Tests at the head, one file at a time under a stub gh: test_repo_hygiene 100, test_agents_md_codes 47, test_readme_sections 76, test_readme_windows_quoting_sentence 44, test_update_add_codes_documented 6, test_no_auto_maintenance 60, all passed. On the main + #1046 + #1051 merge: test_repo_hygiene 100 and test_readme_sections 76 passed. Merges (git merge-tree --write-tree): clean with origin/main 1a47ed0, with #1046 83b3671 and with #1052 396668b. With main and #1046, README is 1482 against a cap of 1482. Skipped: test_cli_reference and test_setup_project_py (the writer's runs stand), mutants, a scaffold dry run of --referent-chain -5, and other Pythons. Lane: openreposhape-3 (openRepoShape-3) |
…test_setup_project_py.py: the handbook names the clone path `<into>/<Project>` or, where `--family` adds the family's folder, `<into>/<Family>/<Project>` (and AGENTS.md's `--family` row says `<into>/[<Family>/]<Project>`, as its refusal line does), the refusals come "before anything that stays is created", "takes each away again" ends the sentence in README and handbook as in setup-project.py, and `passed_values`' docstring and its test's say what argparse takes as a value, `-h y` excepted (#921, #923) Review fixes to #1051 (RV1051's S1, S2, N1, N2, N3, N4, N6): the clone path is `<into>/<Project>` when a run already stands in the family's folder, so the handbook no longer says `--family` always nests it; "before anything is created" in AGENTS.md and the handbook says "anything that stays", the claim the short-lived folders retire; the handbook sentence is rewrapped to the width of its neighbours; the README segment's wording moves, so the seven handbook markers take blob 8f25ef0d24d075f9e7c2f4ed3279079ebe061105, the one the hygiene test computes. No line is added to AGENTS.md (494) or README.md (1481). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
|
(lane openRepoShape-3, 2026-10-20T10:55:22Z) Independent delta review (RV1051d, opus) of fix round 1, head 93dacf8 over 4a6a55b: READY. No MUST, no SHOULD; two optional NITs. SHOULD-1 (docs/handbook.html:2001-2003): fixed and true. family_landing (setup-project.py:2184) + Landing.clone_path at this head: SHOULD-2 (tests/test_setup_project_py.py:3103-3107): fixed, docstring only, and it matches passed_values and the scaffold's argparse. NIT-A, optional (setup-project.py:2700-2702, and the same sentence in this body's U062 section): "(but not -h y, which it reads as -h)" reads as the only exception, but a word with a space that starts with a scaffold flag or its prefix before "=" is also read as that flag. Probe on 3.12.3 against the scaffold's own parser: No mismatch results. Possible wording: "(but not one argparse reads as a scaffold flag, such as -h y as -h or --org=a b as --org)". README.md:307 and docs/cli.md:82 and :226 are not SHOULD-1's gap: each states the exception in the same passage ("Already standing IN the family folder? Then it lands at <into>/<Project>"). No change is needed here or in a follow-up. docs/cli.md is generated by scripts/render-cli-reference.py from setup-project.py's USAGE (:137, the --family entry at :152-160), and #1052 is the only open PR that touches it. The second commit's trailer is Co-Authored-By: Claude Sonnet 5.5 (the first commit's is Opus 5.5). The squash message decides what lands. Tests at this head, one file at a time under a stub gh (exit 97), GH_TOKEN=bogus, an empty GH_CONFIG_DIR, GIT_SSH_COMMAND=false: test_repo_hygiene 100, test_agents_md_codes 47, test_readme_sections 76, test_no_auto_maintenance 60, all passed. Merges (git merge-tree --write-tree): clean with origin/main 8a05721, with #1046 c121ed9, with #1052 396668b, and main + #1051 + #1046 together. In that three-way tree, README is 1482 against a cap of 1482 (1422 + 60) and AGENTS.md is 494; #1046 moves only the adopt marker, so the seven markers stay 8f25ef0d. Body: closingIssuesReferences is empty, no closing word, and it ends Part of #921, Part of #923, the Lane line and the robot line, before Sourcery's block. Lane: openreposhape-3 (openRepoShape-3) |
|
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 6 hours by commenting |



For v1.2.0. Words only: no code path changes, no refusal code is added or moved, and
docs/cli.md, the scaffold's help andscripts/family.pyare left to the writers that own them. A line number of code that this PR does not edit is origin/main's (b0babe18b); a line this PR writes is named at its head (93dacf859).A review of the first head (
4a6a55b99) asked for two SHOULD changes and some NITs; the second commit makes them (see "Review round" below).What changed, and why
#921 U033: the path step (3) checks
AGENTS.md:96 and docs/handbook.html:2001 said a run refuses "anything already at
<into>/<Project>". With--familythe clone lands one folder deeper, except when the run already stands in the family's own folder, wherefamily_landing(setup-project.py:2184) adds no level.Landing.clone_path(setup-project.py:2322) is whatrefuse_a_taken_clone_pathasks about, so the path is<into>/<Project>or<into>/<Family>/<Project>.<into>/[<Family>/]<Project>. AGENTS.md sits exactly at its 494-line cap (tests/test_repo_hygiene.pytest_agents_md_is_short_enough_to_be_read), so the paragraph at :90-98 is rewrapped to the same nine lines. The bracket is how the same file already writes an optional word ([--reuse-empty-repo], line 373), and[<Family>/]also covers a run standing in the family's own folder. AGENTS.md:50, the--familyrow, said<into>/<Family>/<Project>alone; it now reads<into>/[<Family>/]<Project>too, on the same line.<into>/<Project>or, where--familyadds the family's folder,<into>/<Family>/<Project>".#921 U088, the documentation half: "nothing that stays"
"Nothing is created before the typed
yes" is not so: step (3) makes and removes.openreposhape-write-probe-*above the clone (setup-project.py:2633), and the plan's dry run makes and removesopenreposhape-seed-*(scaffold-project.py:666) andopenreposhape-branch-*(scripts/shape_materialize.py:1350) in the temporary folder. The three places now say "nothing that stays", the exact phrase the scaffold's help text is to repeat, and name the folders:partwaysection that restates it.--keep-shape-checkoutkeeps is the one exception, because the docstring's own first paragraph says that flag keeps it.The three read "a few short-lived folders along the way, such as ..., and takes each away again", in setup-project.py's order. AGENTS.md:91 and docs/handbook.html:2004 say the refusals come "before anything that stays is created" (they said "before anything is created", which the short-lived folders make untrue).
The README is 1481 lines. The cap is the ledger's:
tests/readme-cap.d/921.txtraises it by 3, with its reason. The seven handbook markers that read README's "Starting a project in a new organisation" take its new blob (8f25ef0d24d075f9e7c2f4ed3279079ebe061105, astests/test_repo_hygiene.pycomputes it): docs/handbook.html:475, 615, 1095, 1136, 1199, 1455 and 1754. I read what changed in that segment: it is the one box, and the only page section that restates it ispartway, amended here. The other six sections do not mention it.#923 U062:
passed_values' docstringsetup-project.py:2694-2704. It said a value never starts with
-in the second spelling, "because argparse reads such a word as a flag". The code reads a leading--word as a flag, which is argparse's answer for most of them; argparse takes-, a negative number such as-5or-1.5, and a word with a space in it such as-x yas the value, but not-h y, which it reads as-h. The docstring now says all of that, and that step (4) then reports from fewer values than the scaffold reads. I took the issue's first Direction (reword), not the second (read such a word as a value where argparse would), because the code and its test (test_a_word_that_starts_with_a_dash_is_not_a_value) are right as they stand for what #608 wanted, and this change is words only.The test's docstring (tests/test_setup_project_py.py:3103-3107) said the old claim; it now says "in the second spelling
passed_valuesreads a word that starts with-as the next flag, not as this flag's value, as argparse reads most such words (not-,-5or-x y: #923, U062)". Docstring only; no test line changes.Checked on Python 3.12.3 with a parser of the scaffold's four flags, and with
passed_valuesitself:One thing the issue says that I did not write into the docstring: "each such value ends in the plan's own refusal". It does for
--pin(--pin -,-5and-x yeach endREFUSED pin-malformedin the scaffold's dry run), but--referent-chain -5alone gets--dry-run: nothing was created.and no refusal, so the docstring claims only what is true: step (4) reports from fewer values.Review round (second commit,
93dacf859)RV1051's review of
4a6a55b99(issuecomment-6288806181), each item and what was done:-h y): added as one clause, "(but not-h y, which it reads as-h)".--familyrow):[<Family>/], on the same line.makefileorGNUmakefileGNU make reads first, and where a case-blind disk writes the shape's; README says which Makefile exportsCONTRACTS_DIR(#977) #1046 lands), and the claim "takes each away again" is the run's own, which the scaffold's ledger qualifies.Left out of scope
--familyrefusal path, "nothing is created", three ruledbumplimits and aseed/scaffoldre-run are unsaid or slightly wrong #921's U097 (a holder README'scdline).--familyrefusal path, "nothing is created", three ruledbumplimits and aseed/scaffoldre-run are unsaid or slightly wrong #921 U088's other words, owned by other writers: the scaffold's--dry-runhelp (scaffold-project.py:376),scripts/family.py's (family.py:93 among them), anddocs/cli.md. They should say "nothing that stays".--familyrefusal path, "nothing is created", three ruledbumplimits and aseed/scaffoldre-run are unsaid or slightly wrong #921 U066, U068, U071 (the threebumplimits): there is no v1.2.0 notes file, and where they go is a decision for lane 3. AGENTS.md, README.md, the handbook, the release notes and scaffold-project.py: the--familyrefusal path, "nothing is created", three ruledbumplimits and aseed/scaffoldre-run are unsaid or slightly wrong #921 U006 (a seed only onseed/scaffold) is scaffold-project.py.passed_values' docstring misstates argparse,--dry-run's help does not say its folder answer is the mode bits', and six pyflakes warnings #923 U063 (the--dry-runhelp) and U064 (the six pyflakes warnings): other writers' files.openreposhape-naming-*(setup-project.py:2956, the naming check) and theopenreposhape-shape-*bootstrap checkout (setup-project.py:956).Tests
Each file alone, under a stub
gh(exit 97),GH_TOKEN=bogus, an emptyGH_CONFIG_DIRandEMAIL=tests@openreposhape.invalid, on this head (93dacf859):tests/test_cli_reference.py(23 passed) ran on the first head; the second commit touches no file it reads (docs/cli.md and the code's help are unchanged).I grepped tests/ for the old phrases ("Nothing is created", "fails part-way", "already at", "never starts with"): no test pins the README, handbook or AGENTS.md text I changed beyond the caps and marker hashes above.
Mutants
Each broken in the working tree, one test run, then restored:
tests/test_repo_hygiene.py::test_agents_md_is_short_enough_to_be_read.+1: killed bytests/test_repo_hygiene.py::test_readme_is_short_enough_to_be_read.partwaymarker (docs/handbook.html:1095) left at the old blob: killed bytests/test_repo_hygiene.py::test_the_handbook_follows_the_readmes_outline.b72df867: killed by the same test, which printed the new blob8f25ef0d...(run before the markers were moved: 1 failed, 99 passed).[<Family>/]put back to<into>/<Project>(test_repo_hygiene.py and test_agents_md_codes.py, 147 passed); thepassed_valuesdocstring and the test's docstring put back to the old text; the handbook paragraphs and setup-project.py:22.Merges
git merge-tree --write-treeof this head (93dacf859406f2def246fa59a59845cb4f001108, two commits overb0babe18b) with:1a47ed07e, which holds validate-repository-naming.py: a--link-sourcekey is the longest chain link before an=that leaves a path after it, so the offer the gate prints for a link holding=verifies that link when typed as printed (#980) #1044 as82fc8675): clean.makefileorGNUmakefileGNU make reads first, and where a case-blind disk writes the shape's; README says which Makefile exportsCONTRACTS_DIR(#977) #1046 (83b3671b3, README.md and docs/handbook.html, a different README segment and theadoptmarker at :1278): clean. Merged, README is 1482 lines and the ledger's cap is 1482, so the two together fit, with no room left. On that merged tree,tests/test_repo_hygiene.pyis 100 passed andtests/test_readme_sections.py76 passed.--dry-run's help says its answer about each folder is the mode bits' and that it leaves nothing that stays, a--reuse-empty-repore-run that takes a seed found only onseed/scaffoldnames that branch as remaining, and the unusedCOMMIT_REimport is gone (#921, #923) #1052 (396668b22, scaffold-project.py and docs/cli.md): clean.No other open PR touches these files.
Part of #921
Part of #923
Lane: openreposhape-3 (openRepoShape-3)
🤖 Generated with Claude Code
Summary by Sourcery
Improve setup documentation accuracy around family clone paths, transient folders, and argparse value handling without changing runtime behavior.
Enhancements:
passed_valuesdocumentation and related test wording to reflect argparse's handling of dash-prefixed values.Documentation:
Tests: