Skip to content

README: five naming families in the Layout block, and the rehearsal flag's Windows spelling (#68) - #70

Merged
brettheap merged 2 commits into
mainfrom
docs/readme-two-lines
Sep 6, 2026
Merged

brettheap merged 2 commits into
mainfrom
docs/readme-two-lines

Conversation

@brettheap

@brettheap brettheap commented Sep 6, 2026 •

Copy link
Copy Markdown
Contributor

Lane: xfactory-2 (xFactory-2)
Claim: #68 (claim in the issue body)

Closes #68.

What this changes

Two README lines a designed reading of the page surfaced. Brett Heap, 2026-09-06, in session: "fix the two readme lines and merge on green too".

README hygiene cap moved by the exact lines added, rationale beside it. Nothing else.

Evidence

Linux: python3 -m pytest tests -q — 621 passed, 1 skipped (main at c093813; the skip is the MedxEHR-backed plan test, SHAPE_MEDXEHR_CLONE unset). README 967 → 970, cap moved with the rationale beside it. macOS and Windows: the tests-macos and tests-windows jobs on this PR. Docs only; no script changes.

Merge word: Brett Heap, 2026-09-06, "fix the two readme lines and merge on green too".

🤖 Generated with Claude Code

Summary by Sourcery

Align the README with the current repository layout and provide complete Windows instructions for rehearsing project setup.

Enhancements:

  • Update the README to accurately describe the repository’s five naming families and document the Windows rehearsal workflow for setup-project.py, including its network behavior.

Documentation:

  • Clarify cross-platform rehearsal instructions and correct the Layout block’s naming-family count.

Tests:

  • Raise the README length safeguard to accommodate the documentation updates while retaining hygiene coverage.

…lag's Windows spelling (#68)

Brett Heap, 2026-09-06: "fix the two readme lines and merge on green too",
after a designed reading of the README surfaced both.

The Layout block's line for contracts/repository-naming.yaml still said four
naming families; the naming section has said five since the FAMILY shape
(v0.4, #16). One word.

"Rehearse first, creating nothing" documented --local-remote-dir only on
openRepoShape and setup.sh, so a Windows reader had no rehearsal. One
sentence gives `py setup-project.py Atlas --org <your-org> --local-remote-dir
.\rehearsal` and says what it still does over the network: run from a
download it self-bootstraps a temporary clone of the standard first (checked
in setup-project.py: is_shape_checkout false -> self_bootstrap), from a
checkout nothing. The hygiene test that collects every `py <file>` run still
holds: all three name setup-project.py.

README 967 -> 970; cap moved with the dated rationale. 621 passed, 1 skipped.

Lane: xfactory-2 (xFactory-2)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 6, 2026 10:12
@brettheap

Copy link
Copy Markdown
Contributor Author

@codex review

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

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

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@sourcery-ai

sourcery-ai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Reviewer's Guide

This documentation-only change updates the README to accurately describe five naming families and adds the Windows spelling and behavior of the rehearsal flag for setup-project.py, with the README line-length guard raised by the exact three added lines and rationale recorded.

File-Level Changes

Change Details Files
Document the Windows rehearsal workflow for the Python entry point while preserving the existing network-behavior caveats.
  • Add the py setup-project.py ... --local-remote-dir command using Windows path spelling.
  • Explain that downloads self-bootstrap a temporary clone, while checkouts avoid cloning and network access.
  • Retain the cleanup guidance and existing Unix entry-point documentation.
README.md
Correct the repository Layout block to reflect the five naming families defined by the naming contract.
  • Change the Layout description from four naming families to five.
README.md
Adjust the README hygiene test cap to accommodate the documented additions and record the rationale.
  • Raise the line limit from 967 to 970.
  • Document the issue, date, and reasons for the three-line increase in the test comment.
tests/test_repo_hygiene.py

Assessment against linked issues

Issue Objective Addressed Explanation
#68 Correct the README Layout block to state that repository-naming.yaml contains five naming families. ✅
#68 Document the Windows spelling of the rehearsal command using setup-project.py, including the behavior of the rehearsal run from a download versus a checkout. ✅
#68 Update the README hygiene cap by exactly the number of added README lines, with a dated rationale referencing the issue, while keeping the relevant hygiene checks intact. ✅

Possibly linked issues


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

Copilot AI 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.

🟡 Changes recommended

The new Windows command is formatted as an inline code span that crosses a newline, which breaks Markdown rendering and undermines the documentation change.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Updates repository documentation to match current naming/layout concepts and to document the Windows spelling of the rehearsal flag, with a corresponding README length-cap adjustment in hygiene tests.

Changes:

  • README: fix “four” → “five” naming families in the Layout block.
  • README: document Windows usage of --local-remote-dir via py setup-project.py ....
  • Tests: bump the README line-count cap and add dated rationale.
File summaries
File Description
README.md Corrects naming-family count and adds Windows rehearsal command documentation.
tests/test_repo_hygiene.py Raises README length cap with rationale tied to the README edits.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread README.md Outdated
Comment on lines +209 to +213
checkout instead and nothing touches the network at all. On Windows the same
flag goes on the Python entry point — `py setup-project.py Atlas --org
<your-org> --local-remote-dir .\rehearsal` — which, run from a download, still
clones the standard into a temporary directory first, and from a checkout
clones nothing. What it leaves behind is `./Atlas` and three bare repositories

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Taken, in 604bcf2: the command now sits on a line of its own inside one code span. (CommonMark does render a span across a soft line break — line endings become spaces — but a command a reader copies is better whole.) README 970 -> 971, cap moved.

Lane: xfactory-2 (xFactory-2)

Copilot's one finding on PR #70: the inline code span for the Windows
rehearsal command broke across a soft line break. CommonMark renders a span
across a soft break, but a command a reader copies belongs on one line, so
the paragraph is reflowed to put the span on a line of its own. README
970 -> 971; cap moved.

Lane: xfactory-2 (xFactory-2)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings September 6, 2026 10:21
@sonarqubecloud

sonarqubecloud Bot commented Sep 6, 2026

Copy link
Copy Markdown

Copilot AI 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.

🟡 Changes recommended

The new Windows-focused rehearsal paragraph still references ./Atlas and ./rehearsal, which is inconsistent/confusing for Windows readers and should be made platform-neutral or Windows-appropriate.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread README.md
`py setup-project.py Atlas --org <your-org> --local-remote-dir .\rehearsal` —
which, run from a download, still clones the standard into a temporary
directory first, and from a checkout clones nothing. What it leaves behind is
`./Atlas` and three bare repositories in `./rehearsal`, both of which you can
@brettheap
brettheap merged commit 4d2a8bc into main Sep 6, 2026
6 checks passed
@brettheap
brettheap deleted the docs/readme-two-lines branch September 6, 2026 10:31
brettheap added a commit that referenced this pull request Sep 10, 2026
…he family workstation layout, --family, park/resume and the user commands, the workspace form; a guard that the page follows the README's outline (#89) (#90)

* docs/handbook.html: the designed reading of the README at cbca5b4 — the family workstation layout, --family, park/resume and the user commands, the workspace form; a guard that the page follows the README's outline (#89)

The page was cut from README.md at `c093813` (#69, PR #71) and #88 fixed one
word in it. Everything the README gained in between was missing, so the
designed page told a newcomer less than the file it is a reading of. This is
the regeneration, at `cbca5b4`, in the page's own design and voice.

WHAT THE PAGE GAINED

- `#park`, a new section between "Keeping shape current" and "The degrade
  rule" — the whole of `## Carrying in-flight work to another workstation`
  (#80): the two root verbs and `ARGS=--dry-run`; `### park <Name>` and
  `resume <Name>`, from anywhere (#83) with the estate resolution, `--repo`,
  the fresh-machine `resume --workspace`, and what the two leave behind
  (including READ THE LINES, not the exit code); `### Who implements it, and
  what the record is` — the Speckit git extension rather than this
  repository, the person's record named once in `~/.agents/workspace.yaml`,
  `<user>-wip` with the home-org default and the opt-in `orgs:` map (#86),
  nothing under `worktrees/` ever committed, `resume` refusing on divergence,
  the family holder's dispatch into the WORKING clones, and native Windows
  parking nothing. One rail entry, `Park and resume`.
- `#families` gained two `<h3>`s: "The workstation layout: a plain folder,
  and two copies of every member" (#79) — the plain `<Family>/`, the holder
  at `<Family>/<Family>`, `--into` as the PARENT and `--work-dir` as the
  override, `make siblings`, which copy you work in, and that nothing ever
  moves a checkout — and "The InkRouter example", whose five `family.py`
  commands and two trees are the README's current ones (the block it
  replaced still named `../InkRouter` as the holder). Plus the holder's own
  `make validate` and its COPY pin.
- `#start` gained "Joining a family" (`--family <Family>`, and that standing
  in the folder needs no flag at all — AGENTS.md) and "What setup.sh actually
  runs", the seven-command flow including `mkdir -p <into>/<Family>` (#78),
  with the developer path from a checkout. The install step and the
  masthead's fastest path now say THREE commands, `unchanged` per file, and
  what `park` and `resume` are (#83). The rehearsal flag's Windows spelling
  is the README's own `py setup-project.py … --local-remote-dir .\rehearsal`
  (#70), replacing an aside that told the reader to go and read `--help`.
- `#legs` links `<user>-wip` to where such a repository lives, and gained the
  paragraph a reader of `openDox` needs: a neutral product may elect the
  shape and be its own assembly root, `also_matches` recorded rather than
  thrown away. `#layout` lists `park` and `resume`. `#agents` gained the rule
  that a refused `park` or `resume` is never worked around with a reset, a
  stash or a force-push, and that `--workspace` is nobody else's flag to
  pass.

FIDELITY. 39 code blocks on the page: 31 byte-identical to a README block
(whole, or a contiguous run of its lines), 0 re-wrapped, 5 quoted from README
prose, 2 from README inline code, 1 assembled by the page from three quoted
commands (the masthead). Every one of the 13 GitHub anchors resolves to a
real README or AGENTS.md heading, all 27 in-page hrefs resolve to an id on
the page, and the file still parses with `html.parser` with every tag
balanced: one file, inline CSS and one inline script, one Google Fonts link
with real fallback stacks, no images and no other network call.

THE GUARD. `tests/test_repo_hygiene.py::test_the_handbook_follows_the_readmes_outline`
ties the two files together, because nothing did: an explicit
`README_HEADING_TO_HANDBOOK_ID` maps every `## ` heading of README.md to the
id of the page element that carries it, so a new README section with no entry
fails NAMING THE HEADING and a heading deliberately folded into a neighbour
is a named decision; `HANDBOOK_SECTION_WITHOUT_A_README_H2` accounts for the
four page sections that are not a README `## ` at all, so a page section
cannot become unexplained. And the page names the README commit it is a
reading of, exactly once, whose README must be byte-identical to the one in
the tree — `git diff <sha> -- README.md`, against the working tree, so the
page goes stale the moment the README changes rather than one commit later.
That last check is skipped, and only that one, when the named commit is not
in the clone: a `fetch-depth: 1` CI checkout has one commit and the object is
absent there, while the outline checks are tree-only and run everywhere.

Evidence: `python3 -m pytest tests/test_repo_hygiene.py -q` 46 passed;
`python3 -m pytest tests -q` 889 passed, 1 skipped (`SHAPE_MEDXEHR_CLONE` is
unset — pre-existing and unrelated). The five ways the new guard can fail
were each exercised in a throwaway clone. Docs and one test only; no README,
script, template or workflow change, and both size caps are untouched.

Lane: xfactory-2 (xFactory-2)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* tests.yml: fetch full history so the handbook's staleness check bites in CI (#89)

Ruled by Brett Heap on 2026-09-10: *set fetch-depth 0 so the staleness check
bites in CI.*

`test_the_handbook_follows_the_readmes_outline` compares README.md against
the commit `docs/handbook.html` says it is a reading of, which needs that
commit's OBJECT present. `actions/checkout`'s default `fetch-depth: 1`
fetches one commit, so the object was absent and that one check skipped
itself: green in CI, red only on the machine where the page would be
regenerated, which is the wrong way round. All three jobs — `tests`,
`tests-windows`, `tests-macos`, the only three `actions/checkout` steps in
the file — now check out with `fetch-depth: 0`, and each says why in a
comment naming the test.

The test's BEHAVIOUR is unchanged: the "skipped when the named commit is not
in this clone" branch stays, because a `git clone --depth 1` still hits it
and a failure about the clone is not a failure about the page. Only its
docstring moves, to say that CI is no longer such a clone.

Evidence: `python3 -m pytest tests/test_repo_hygiene.py -q` 46 passed (with
tests/test_windows_paths.py, 84 passed). The workflow parses under PyYAML and
compares equal to HEAD's parse with the three checkout `with:` blocks removed
— nothing else in the file moved. No actionlint on this machine; CI's own
actionlint step lints `templates/assembly-root/.github/workflows/validate.yml`
only, which is untouched.

Lane: xfactory-2 (xFactory-2)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <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.

README: the Layout block counts four naming families where there are five, and the rehearsal flag has no Windows spelling

2 participants