Skip to content

docs: bring the curriculum up to rhiza v1.7.1 / rhiza-claude v0.13.0 - #43

Merged
tschm merged 1 commit into
mainfrom
docs/refresh-rhiza-v1.7.1
Aug 29, 2026
Merged

tschm merged 1 commit into
mainfrom
docs/refresh-rhiza-v1.7.1

Conversation

@tschm

@tschm tschm commented Aug 29, 2026

Copy link
Copy Markdown
Member

The material was written against rhiza v1.3.3 and rhiza-claude v0.8.2. Four template minors and five plugin minors later, the largest claim in it was false: that core syncs a make layer into every consumer.

What actually changed upstream

Template v1.4.0 (ADR-0011) replaced the synced .rhiza/rhiza.mk and make.d/ — ~1,500 lines copied into every repo — with the pinned rhiza-task CLI, provisioned per invocation by uvx. v1.3.4 did the same for .rhiza/tests/ with the pytest-rhiza plugin. What core still ships is a 71-line shim that pins RHIZA_TASK and forwards to it.

The curriculum now teaches that split — a template distributes configuration; a package manager distributes code — and everything else follows from it.

Lesson by lesson

File What changed
L5, L7 Bundle model rebuilt from the live manifest: 26 bundles, and tests / marimo / paper are no longer names the template accepts. All five profile expansions were wrong; corrected against the source.
L10 Rewritten. custom-task.mk and custom-env.mk are gone; the extension points are local.mk, [tool.rhiza-task], the new local-setup.sh (v1.7.0) and .rhiza/.env. Every settings key and the six-layer precedence order verified against rhiza-task's Config.
L11 New sections for rhiza-task and pytest-rhiza; skills 8 → 10 (/rhiza:remote, /rhiza:completions); ecosystem diagram redrawn.
L9 The second Renovate custom manager, for the pytest-rhiza pin — including that it silently died when make.d/ retired, which is the failure mode worth teaching.
L8 What crossing v1.4.0 costs, since that update is not routine.
L1–L3, A1 make-layer wording, bundle attributions, and the project-layout tree.
A2 All five downstream configs refetched.
A3 Contribution counts refreshed from the API (tschm 1,910 → 2,338, across two new repos).

Two claims that had become false

  • rhiza-claude is not a rhiza-managed repo. It has no .rhiza/template.yml — it adopted the shim Makefile and RHIZA_TASK pin in v0.12.0 without being synced by the template. A2 said the opposite; it now uses this as the instructive partial case.
  • rhiza-task keeps its contributor guide at the root, not under .rhiza/. L12's link was dead.

The A2 refresh is worth a look

Three of the five real-world configs moved on in ways that teach something:

  • jquantstats dropped an exclusion for a fuzzing workflow the template retired in v1.5.0.
  • chebpy dropped book/marimo/notebooks/rhiza.py, an exclusion that had been there since v1.2.5 and never matched anything.
  • loman is still at v0.10.3 and names two bundles (marimo, tests) that v1.7.1 would reject — a sharper counter-example than it was a year ago.

Mutation testing, fuzzing, marimushka and rhiza-cli references are dropped throughout; all retired upstream.

Verification

  • 42 code-block tests pass (every YAML and TOML snippet parses).
  • All 100 external links resolve, bar one VS Code marketplace URL that rejects HEAD — pre-existing and untouched.
  • All local links resolve.
  • mkdocs build --strict reports the same 7 warnings as before this branch; confirmed by stashing and rebuilding. CI builds non-strict.
  • Both Marp decks rebuilt, so the committed HTML matches its source.

🤖 Generated with Claude Code

The material was written against rhiza v1.3.3 and rhiza-claude v0.8.2.
Four template minors and five plugin minors later, the largest claim in
it was false: that `core` syncs a make layer into every consumer.

Template v1.4.0 (ADR-0011) replaced the synced `.rhiza/rhiza.mk` and
`make.d/` -- ~1,500 lines copied into every repo -- with the pinned
`rhiza-task` CLI, provisioned per invocation by uvx. v1.3.4 did the same
for `.rhiza/tests/` with the `pytest-rhiza` plugin. What `core` still
ships is a 71-line shim that pins `RHIZA_TASK` and forwards to it.

The curriculum now teaches that split -- a template distributes
configuration, a package manager distributes code -- and everything else
here follows from it:

- L5, L7: bundle model rebuilt from the live manifest. 26 bundles, and
  `tests`, `marimo` and `paper` are no longer names the template accepts.
  All five profile expansions were wrong; corrected against the source.
- L10: rewritten. `custom-task.mk` and `custom-env.mk` are gone; the
  extension points are `local.mk`, `[tool.rhiza-task]`, the new
  `local-setup.sh` (v1.7.0) and `.rhiza/.env`. Settings keys and the
  six-layer precedence order verified against rhiza-task's Config.
- L11: sections for rhiza-task and pytest-rhiza; skills 8 -> 10
  (`/rhiza:remote`, `/rhiza:completions`); ecosystem diagram redrawn.
- L9: the second Renovate custom manager, for the `pytest-rhiza` pin --
  including that it silently died when `make.d/` retired, which is the
  failure mode worth teaching.
- L8: what crossing v1.4.0 costs, since that update is not routine.
- A2: all five downstream configs refetched. Three moved on in
  instructive ways -- jquantstats dropped a fuzzing exclusion the
  template retired, chebpy dropped one that had never matched anything,
  and loman's stale config names two bundles v1.7.1 would reject.
- A3: contribution counts refreshed (tschm 1,910 -> 2,338, two new repos).

Two claims that had become false: rhiza-claude is not a rhiza-managed
repo -- it has no `.rhiza/template.yml` and adopts the shim without being
synced -- and rhiza-task keeps its contributor guide at the root.

Mutation testing, fuzzing, marimushka and rhiza-cli references dropped;
they are retired upstream. Both decks rebuilt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tschm
tschm merged commit 949a25e into main Aug 29, 2026
4 checks passed
@tschm
tschm deleted the docs/refresh-rhiza-v1.7.1 branch September 9, 2026 09:54
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