Skip to content

Land v0.11's release docs on main, which two stacked PRs never reached - #39

Merged
arpanghoshal merged 6 commits into
mainfrom
docs/land-v011-release
Sep 14, 2026
Merged

arpanghoshal merged 6 commits into
mainfrom
docs/land-v011-release

Conversation

@arpanghoshal

Copy link
Copy Markdown
Member

The docs site describes 0.10.0 while PyPI has 0.11.0. That is live right now, and this closes it.

#36 and #37 were stacked on their predecessors rather than on main, so merging them landed their commits in v0.11/3-retention and v0.11/3a-retention-review and main never saw them. #28 records the same trap for #26 and #27. It is easy to miss because both PRs go green and both report MERGED.

Stranded, and landed here:

Commit What main was missing
e704dd0 the retention page after the review found the checkpoint launderable, and the two prune receipts
c6f078f ROADMAP.md marked shipped, with the reconciliation block for the four sentences that did not survive the build
436d869 operations.mdx (anchoring and pruning, the two things an operator now schedules), three verify transcripts still headed ctrlrun 0.10.0, the README allow-list, readiness

Folded in, deliberately

Kernel main already carries ctrlrun#208, and these pages are generated from it, so leaving them out would keep the kernel's docs job red on main:

  • ARCHITECTURE.md §6, the cycle broken and the rule now a test
  • 83 API reference pages and 38 CLAIMS.md citations, which moved when Decision and POLICY_UNAPPROVED went to decision.py

That supersedes #38, which can be closed.

Gate

all checks passed             (ruff, ruff format, 1727 passed)
api 83 pages 0 drifted · cli matches · schemas match · capabilities 0 drifted
readiness 0 drifted · cookbook 19 recipes 0 drifted · badges 0 drifted
probe matches · soak matches
links 192 documents 0 broken · lint 198 documents 0 findings · snippets 98 blocks 0 failed

🤖 Generated with Claude Code

kernel then found seven defects in it, and two of them are things this
page asserts.

**The checkpoint.** The page said a forged checkpoint is narrowed by the
anchor. It was not: supersession was decided from the union of what the
provider returned and what the store's own `anchors` table held, so one
INSERT beside the forged checkpoint row bought it, and the hash in that
row never had to be a hash. Supersession now comes from the provider
alone, and the anchor's `(seq, hash)` must be the pair the checkpoint
claims. The paragraph says that, including the half that is still true:
anyone who can write receipts can write both rows.

**The receipts.** A refused prune and a successful one left byte
identical records, and `--older-than` was not among them, so the record
of a refusal was worth nothing. The prune now leaves two, a request and
its outcome, and the page has a short section saying so.

The "verified by" line moves to the tests that actually bind. `T547b`
passed throughout the laundering hole, because it writes the checkpoint
row and no anchors row beside it; `T550` and `T559` are the ones that
fail when supersession is decided locally.

`CLAIMS.md`'s line numbers follow the CLI's new lines, and the readiness
block is re-measured, not incremented: 6,210 against a checkout with the
extras CI installs.

Signed-off-by: arpan <contact@arpanghoshal.com>
…the build

Exit criteria against what actually ran, not against what the line promised:
five released wheels rather than fixtures, the released 0.10.0 from PyPI rather
than a store this build wrote and called 0.10.0's, and two prunes racing under
the multi-process standard against a real Postgres server.

Three sentences are reconciled rather than quietly edited. The anchor does not
detect an append, and the bullet said "erased or appended" until today. Coverage
does not come from events, because `ACTION_PROPOSED` carries an `action_hash`
and nothing that maps it back to a name. And `CONTROL-MAPPING.md` is still not
written, which the v0.11 line cited in the present tense.

Readiness re-measured, and the version moves to 0.11.0.

Signed-off-by: arpan <contact@arpanghoshal.com>
…nscripts

`operations.mdx` is the page this milestone most changes and said nothing about
either new command. Anchoring and pruning are the two things v0.11 gives an
operator to run, and both are runs **their** scheduler makes: nothing sweeps,
nothing reaps, and no hold expires, which is the same rule about a timer that
`SPEC-v0.9.md` §4 applied to a budget hold.

The interval is the claim. An anchor freezes a prefix, so the window you are
exposed to is `(last anchored seq, current head]`, and that number is what to
quote rather than any sentence about tamper-evidence.

Three pages quoted a verify transcript headed `ctrlrun 0.10.0`. The guard that
runs verify and compares caught all three.

`ROADMAP.md` gains the line about retention shipping twice: the review the build
order required for the prune found seven defects, and the merge did not wait for
it. `SPEC-v0.11.md` §13.4 has all seven.

Readiness re-measured at 6,221 against a checkout carrying the extras CI
installs, and `CLAIMS.md` needed no repointing.

Signed-off-by: arpan <contact@arpanghoshal.com>
**The docs site described 0.10.0 while PyPI had 0.11.0.** ctrlrun-docs #36 and
#37 were stacked on their predecessors rather than on `main`, so merging them
landed their commits in `v0.11/3-retention` and `v0.11/3a-retention-review` and
`main` never saw them. #28 records the same trap for #26 and #27; it is easy to
miss because both PRs go green and both report merged.

Three commits were stranded: the retention page after the review found the
checkpoint launderable, the ROADMAP marked shipped with its reconciliation
block, and the release pass (operations.mdx, three verify transcripts still
headed `ctrlrun 0.10.0`, the README allow-list, readiness).

Folded in with them, because kernel main already carries ctrlrun#208 and the
pages are generated from it: `ARCHITECTURE.md` §6, and the 83 API reference
pages plus 38 `CLAIMS.md` citations that moved when `Decision` and
`POLICY_UNAPPROVED` went to `decision.py`. Leaving those out would keep the
kernel's `docs` job red on `main`.

    all checks passed             (ruff, ruff format, 1727 passed)
    api 83 pages 0 drifted · cli matches · schemas match · capabilities 0
    readiness 0 drifted · cookbook 19 recipes 0 drifted · badges 0 drifted
    links 192 documents 0 broken · lint 198 documents 0 findings
    snippets 98 blocks 0 failed

Signed-off-by: arpan <contact@arpanghoshal.com>
@mintlify

mintlify Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
ctrlrun 🟢 Ready View Preview Sep 14, 2026, 9:38 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 34 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 4af44e12-6a9c-41a6-bb0f-5e7ea7d7d2db

📥 Commits

Reviewing files that changed from the base of the PR and between 08a2b05 and e4a1d4c.

⛔ Files ignored due to path filters (4)
  • generated/readiness.full.mdx is excluded by !**/generated/**
  • generated/readiness.json is excluded by !**/generated/**
  • generated/readiness.mdx is excluded by !**/generated/**
  • generated/readiness.readme.md is excluded by !**/generated/**
📒 Files selected for processing (19)
  • docs.mdx
  • docs/CLAIMS.md
  • docs/ROADMAP.md
  • docs/cookbook/verify-in-github-actions.mdx
  • docs/guides/verify-in-ci.mdx
  • docs/production/index.mdx
  • docs/production/operations.mdx
  • docs/production/retention.mdx
  • docs/reference/api/Condition.mdx
  • docs/reference/api/Decision.mdx
  • docs/reference/api/Event.mdx
  • docs/reference/api/EventSink.mdx
  • docs/reference/api/JSONLEventSink.mdx
  • docs/reference/api/Policy.mdx
  • docs/reference/api/Receipt.mdx
  • docs/reference/api/jwt_identity-JWTIdentityProvider.mdx
  • docs/reference/api/parse_conditions.mdx
  • docs/verify.md
  • tests/test_release_documents.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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