A frozen spec is only meaningful if it's paired with the corpus
that was current at release time — otherwise a v0.1.0 reader
follows "see corpus/payloads/ack/" and lands on a file whose
test vectors may have changed since v0.1.0 was cut.
Three changes:
1. `cut-version` now copies BOTH src/ AND corpus/ into the
snapshot directory. A release is the pair, not just the text.
2. The corpus URL rewriting in cut-version now retargets
/tree/main/corpus -> /tree/main/versions/<v>/corpus (and the
blob variant). This lets the link resolve on GitHub from main
alone — no git tag required, since the frozen copy is a real
path under main. Downgrades the "tag is REQUIRED" message from
last commit back to "optionally tag the commit".
3. The frozen corpus's spec_ref fields get rewritten too: from
`src/04-payload-ack.md` to `versions/<v>/04-payload-ack.md`,
so a reader following a test vector lands on the spec text the
vector was paired with at release time.
versions/v0.1.0/ regenerated from scratch via `just cut-version v0.1.0`
to pick up the corpus snapshot + the new sed patterns. The release
is now self-consistent: v0.1.0 spec links go to v0.1.0 corpus, which
links back to v0.1.0 spec.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>