v0.10.3 — a help you can actually read
Re-cut: the first v0.10.3 tag pointed at a commit that SyntaxErrored on Python
3.10/3.11 (f-string backslash, PEP 701 — see #41). The tag-gated publish caught it
and refused to ship, so nothing ever reached PyPI; this tag replaces it on the
fixed tree. All four matrix jobs (3.10–3.13) are green.
forge --help was a wall: argparse spelled its 16-name brace blob twice (usage
line + positional header), then listed every command flat. models and setup —
the first-run path — sat at the bottom. --model, --dir, --name, --verbose
carried no help text at all. And bare forge, the most common invocation of all,
was never mentioned.
Help is now grouped by what you're trying to do, first-run first:
Start here models, setup
Work run, bench
The fleet up/down, status, send
What happened trace, receipts, learnings/forget, passport
Data out export, corpus, replay
It opens with the three invocations people actually type, every option is
described, and colour is TTY-gated so piping --help stays plain text. The
subparsers got a metavar too — argparse had been spelling all 16 names
into every usage line, including the one printed on an error, where it buried the
actual message.
Hand-grouped help can drift from the parser in a way a generated list cannot, so
TestGroupedHelp pins the groups against the real subcommand set (read back out of
argparse's own invalid-choice error) and fails both ways.
Also adds CLAUDE.md — the repo rules an agent can't infer: stdlib-only is
load-bearing; a merge is not the finish line (merge → release → verify the curl
one-liner actually serves it); never tag a merge commit; Python 3.10 is the floor
and a green run on a newer interpreter proves nothing; and why the site's grid
needs minmax(0,1fr).
719 tests, green on 3.10 / 3.11 / 3.12 / 3.13.