Skip to content

Release 0.8.0, the 1.0 release candidate - #21

Merged
0xLeif merged 5 commits into
mainfrom
claude/hi-1-0-readiness-dxwhz0
Sep 18, 2026
Merged

0xLeif merged 5 commits into
mainfrom
claude/hi-1-0-readiness-dxwhz0

Conversation

@corvid-agent

Copy link
Copy Markdown
Contributor

What this is

The 0.8.0 release commit, plus the four follow-ups from the third readiness review of #20, plus the 1.0 plan itself under docs/.

Follow-ups to #20

  • hi: "1", hi: '1' and hi: 1 # comment are HI/1. They were refused as unknown versions, which locked the whole repository over YAML punctuation owner: already tolerated. Tested.
  • hi seed rewrites hi/AGENTS.md through write_atomically. A truncating write that died halfway left a file no longer identical to a shipped template, which hi seed then refused forever (FILE-8).
  • Windows still_at compares file identity (volume serial + file index via GetFileInformationByHandle) the way unix compares dev/ino, so the promise no longer rests on the delete-pending argument §34 said nothing tested. Type-checked and clippy-clean against x86_64-pc-windows-gnu locally; the Windows CI job on this PR is the real run.
  • HI-1.md's id grammar names family digits, a-z letter levels and the 32-bit number bound. CLAUDE.md names Report::notes.

Release prep

  • Cargo.toml 0.8.0. CHANGELOG Unreleased becomes [0.8.0] 2026-09-18 with a paragraph saying what the release is. README Status and CLAUDE.md Releasing updated.
  • docs/1.0-plan.md: the readiness assessment, the freeze table, the promise, and a status section after Add: the blocking items two 1.0 readiness reviews agreed on #20.

Gate

fmt, clippy, 149 unit + 67 cli + 3 promise tests, hi check, index-is-current.sh, cargo publish --dry-run: all green. specsync check and fledge plugins validate were not runnable in this environment.

After merge (not done here)

git tag v0.8.0 && git push origin v0.8.0     # tagging is the release
cargo publish                                # from a clean tree, then check the registry

Before tagging, grep the adopter repositories for two things this release turns red: a family declared in two files, and a hi: value other than 1.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Dq3PAm1hpECvuNcjsCdHga


Generated by Claude Code

Verdict: not yet. 1.0 after six blocking items shipped as a 0.8.0 release
candidate, an eight-week soak with no change to the write path, and one more
external review run against the candidate rather than before it.

The blocking items are the ones that cannot be added after the tag: the `hi:`
version key is parsed and read by nothing, so a file marked `hi: 2` is loaded
and written into as HI/1; `hi check --json` packs its notes into one string
with terminal indentation inside it; a family declared by two files is silently
resolved to whichever sorts first; the format has no written text to freeze;
and the Windows lock rests on an argument nothing tests. Plus a property test
of the one promise, because all nine P1 defects were found by a reviewer and
none by the suite.

Also records what 1.0 freezes and what stays free, the compatibility sentence
for the README, what it refuses to promise, and the adoption evidence as it is:
twelve repositories in one organisation, mostly agent-captured.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dq3PAm1hpECvuNcjsCdHga
Five of six blocking items are on prep-0.8.0. The Windows identity check is
not. The first-wins recommendation for a family declared by two files is
withdrawn in favour of the seventh kind, for the reason DECISIONS §39 gives.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dq3PAm1hpECvuNcjsCdHga
- `hi: "1"`, `hi: '1'` and `hi: 1 # comment` are HI/1, not unknown versions.
  The refusal locked a whole repository over YAML punctuation `owner:`
  already tolerated. Tested alongside the existing version cases.
- `hi seed` rewrites hi/AGENTS.md through write_atomically. A truncating
  write that died halfway left a file no longer identical to a shipped
  template, which `hi seed` would then refuse forever (FILE-8).
- Windows `still_at` compares file identity (volume serial + file index via
  GetFileInformationByHandle) the way unix compares dev/ino, so the promise
  no longer rests on the delete-pending argument §34 said nothing tested.
  Type-checked and clippy-clean against x86_64-pc-windows-gnu; the Windows
  CI job is what runs it.
- HI-1.md's id grammar now names family digits, a-z letter levels and the
  32-bit number bound. CLAUDE.md names Report::notes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dq3PAm1hpECvuNcjsCdHga
Cargo.toml to 0.8.0, CHANGELOG's Unreleased becomes [0.8.0] 2026-09-18 with
a paragraph saying what the release is: everything three readiness reviews
called blocking, HI-1.md as the contract, and 1.0 as this build after a soak
with only the version changed. README Status and CLAUDE.md's Releasing
section say the same.

Gate: fmt, clippy, 149 + 67 + 3 tests, hi check, index-is-current,
cargo publish --dry-run, all green.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dq3PAm1hpECvuNcjsCdHga
…d first

Windows CI failed three seed tests. The runner checks src/seed/*.md out
with CRLF, so include_str! carried CRLF bytes; two tests then built their
own CRLF case from those bytes and doubled the carriage return, and one
compared a file whose endings were correctly kept against the LF current
text. The product code classified correctly throughout.

.gitattributes pins the seed files to LF, so the bytes in every build,
including the Windows release binary, equal what older releases wrote.
The three tests also fold before they compare, so a checkout that ignores
the attribute still passes. Reproduced locally by converting the seed
files to CRLF (3 failures), then green with the fix under both endings.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dq3PAm1hpECvuNcjsCdHga
@0xLeif
0xLeif merged commit 45258e6 into main Sep 18, 2026
9 checks passed
@0xLeif
0xLeif deleted the claude/hi-1-0-readiness-dxwhz0 branch September 18, 2026 14:46
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.

3 participants