Status: published and independently verified 2026-09-03
Prepared: 2026-09-03
Tag: v1.9.0 at 6a4398661f361c03aa5da4ffb72aa098e6f9f6e1
Release pull request: #84
Publication-settlement pull request: #85
Trusted release workflow: 33717954236
This release adds a user-visible bounded-hotfix capability, one MCP tool, one
CLI command, and one bundled recipe. It also adds Outcome.delta and carries
explicit surprise through the existing reason, replay, and recipe paths. The
stable public surface remains source-compatible because the new field has an
empty default.
Outcome, NullRunner, reason, replay, and recipe-run;2a18adb04f4e25fac02a70f1c09e718ee24a01296a4398661f361c03aa5da4ffb72aa098e6f9f6e1 verified before taggingLocal candidate artifact SHA-256 digests:
| Artifact | SHA-256 |
|---|---|
cairntir-1.9.0-py3-none-any.whl |
a43b4d9d836d38f23adb61160e5d1c96509c39c7c701c9929f3d8b82a5155f5f |
cairntir-1.9.0.tar.gz |
c6d2c0a324e0a23ce3850df6878026c405b16eb69cd97ec039d794d3ebdde0c5 |
The trusted release workflow rebuilds these artifacts after tagging. Publication acceptance compares the workflow, GitHub Release, and PyPI copies to each other; it does not assume independent builds are byte-for-byte reproducible.
PR #84’s protected CI run 33717179408
passed on exact candidate head 2a18adb04f4e25fac02a70f1c09e718ee24a0129.
The PR merged as 6a4398661f361c03aa5da4ffb72aa098e6f9f6e1; post-merge
CI,
CodeQL,
documentation,
and Pages
all passed before tagging.
The immutable tag v1.9.0 points to that protected merge. Trusted release run
33717954236
verified, rebuilt, attested, and published both artifacts to
PyPI and the
GitHub Release.
Independent downloads from the workflow artifact, GitHub Release, and PyPI were
byte-for-byte identical:
| Published artifact | SHA-256 |
|---|---|
cairntir-1.9.0-py3-none-any.whl |
539bd2a5296515d2313516830108236de067829d45b4d317906b83e5a1efc900 |
cairntir-1.9.0.tar.gz |
2cb1d001828cc85a90395f12d4c5ef0e84fbcf108ea487b3f78ccf5a4c37cdda |
GitHub provenance verification passed for both published files. A fresh
Windows/Python 3.11 environment installed cairntir==1.9.0 from the public
PyPI index with no broken requirements. The import path came from the isolated
environment, cairntir version returned 1.9.0, reason, replay, and
recipe-run each exposed --delta, and all five bundled recipes loaded.
None. The database schema and embedding space are unchanged. Existing valid
Reason adapters remain compatible. Outcome.delta defaults to an empty string;
hosts may opt in to recording an explicit path-level surprise.
Patrick explicitly authorized publishing v1.9.0 to GitHub and PyPI after the candidate completed its local and protected-CI gates and merged. Publication used one immutable annotated tag on the protected merge, the existing trusted-publishing workflow, artifact attestations, independent workflow / GitHub / PyPI digest comparison, and a fresh public-PyPI install. Every gate passed; the authorization is fully settled.