Commit 93288ff
* docs(backlog,adr): record #332's shipped mechanism, raise the sigstore version discrepancy (BACKLOG #332)
Docs only. No build change.
The #332 row said "not started". The mechanism shipped in a935480
(2026-08-29). Verified at 46ea10a on a clean tree, reading the working
tree rather than piping git show: group at pyproject.toml:294, tracked
lock (193 hashes), export + diff gate at security.yml:107-108, resync at
dependabot-lock-resync.yml:140,152,156, --require-hashes install at
release.yml:391, guard re-pointed at tests/test_ci_venv_pinning.py:204
and :994. Steps 2, 3 and 5 are done.
Raised, NOT resolved: the row records an owner ruling of 2026-08-22
pinning sigstore==4.4.0, "NOT 4.5.0"; the shipped code pins 4.5.0
(pyproject.toml:295) and release.yml:385-390 argues the cooldown
objection is spent. Both citations are live and they disagree. It needs
an owner ruling, so both are recorded with the timeline and left alone.
Also recorded: step 4's contamination risk did not materialise (measured
with the CI-pinned uv==0.12.0, control-first); step 6 not started; and
one new residual -- nothing pins release-tools.lock INTO the DEP-1 set,
since the lockstep test is satisfied by set equality.
ADR 0034's sigstore residual said the lock omits sigstore. That is now
false, so the row is marked superseded rather than deleted.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(release): hold the signing toolchain at sigstore 4.4.0, per owner ruling (BACKLOG #332)
Owner ruling 2026-08-22, re-affirmed 2026-09-03 with the full history in
hand: pin sigstore==4.4.0, NOT 4.5.0.
a935480 (2026-08-29) landed the hashed-lock mechanism but authored the
pin as 4.5.0, reasoning that dependabot.yml's 5-day cooldown had expired.
That argument was published on PR 531 at 2026-08-26T23:46:18Z and
RETRACTED BY ITS OWN AUTHOR at 2026-08-27T02:45:36Z, two days before it
shipped. The retraction's own words: "I checked whether the ADR's premise
had expired. I never checked whether the question had since been
answered."
The cooldown never reached the ruling in either direction. It expired
2026-08-02; the first ruling came twenty days later, and the 2026-09-03
re-affirmation had the expiry in the packet.
Neither version has a patch line, so patch availability does not
discriminate. Measured against PyPI 2026-09-03: 4.x is 4.0.0, 4.1.0,
4.2.0, 4.3.0, 4.4.0, 4.5.0 and nothing else. The 3.x series did ship
patches, so a future 4.4.1 is possible.
Re-export measured with the CI-pinned uv==0.12.0, control first (the
unchanged tree re-exported byte-identically, so the instrument matches
CI's): uv.lock moves one line, release-tools.lock three, and all six
pre-existing DEP-1 artifacts stay byte-identical. No contamination.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix(ci): make the sigstore 4.4.0 ruling stick, and audit the lock that backs it (BACKLOG #332)
Two changes that only work together.
1. dependabot.yml gains `ignore: sigstore >=4.5.0`, so a routine weekly
PR cannot re-propose the version the owner twice declined. Without it
the ruling survives only until the next bot PR is merged, which is how
it was undone the first time.
2. security.yml's audit step gains `pip-audit -r ci/locks/release-tools.lock`.
This resolves the stated conflict at dependabot.yml's "NOT IGNORED,
deliberately" policy rather than stepping over it. That policy keeps the
`==` pins moving so an unattended pin cannot rot into "pinned, stale,
unpatched". Its reason is about versions NOBODY HAS DECIDED, so it does
not reach a version under an owner ruling -- there the weekly PR does not
refresh neglect, it re-litigates a decision. The carve-out is recorded at
the policy, with the condition for lifting it.
The STALENESS half of the policy still binds, so it is honoured rather
than waived. An `ignore` also suppresses the security track for the named
range, which the file already accepts for annotated-types and ruff on the
grounds that pip-audit still detects a withheld fix and reds a required
gate. That backstop did not exist here: a935480 added release-tools.lock
to the export and byte-diff set but not to the audit set, leaving the
release signing closure the only committed lock nothing audited. Change 2
closes that. Each side's comment names the other, so removing one without
the other is caught by reading either.
Scoped to >=4.5.0, not to the package. sigstore 4.x has shipped zero patch
releases but 3.x did, so a 4.4.1 is possible; this range leaves the 4.4.x
patch track open.
Also corrected: the exported-artifact count in the same file said SIX; it
has been seven since a935480.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* docs(backlog,adr,release): correct every record that argued for sigstore 4.5.0 (BACKLOG #332)
The pin moved back to 4.4.0 in the two commits before this one. This
commit fixes the records that still argue the other way, so a reader does
not find the case for 4.5.0 sitting unmarked beside the 4.4.0 pin.
release.yml's "ON THE VERSION" comment restated the cooldown argument. It
now records the ruling, names the retraction, and says plainly not to
re-derive the argument.
ADR 0034 had two false assertions, both that sigstore is absent from every
lock: the section 3 register row at :206 and the residuals row at :358,
read at 46ea10a. Both are marked in place rather than deleted, per that
table's own rule. A 2026-09-03 amendment records the sequence, the
discharged re-evaluation clause, and the pip-audit gap this work closed.
The backlog row cited :350 for that residual in four places. :350 is a
blank line and was wrong at every commit; the citations now name the row
and give the line with the commit they were read at.
The #332 row records the ruling, the retraction timeline, the packet
measurement showing the ruling never rested on the cooldown, the PyPI
measurement showing neither version has a patch line, and the audit gap.
It stays OPEN: step 6 is now the only thing left in it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------
Co-authored-by: wshallwshall <mefordev@messagefoundry.org>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent aa11f21 commit 93288ff
8 files changed
Lines changed: 196 additions & 35 deletions
File tree
- .github
- workflows
- ci/locks
- docs
- adr
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
59 | 87 | | |
60 | 88 | | |
61 | 89 | | |
62 | 90 | | |
63 | 91 | | |
| 92 | + | |
| 93 | + | |
64 | 94 | | |
65 | 95 | | |
66 | 96 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
375 | 375 | | |
376 | 376 | | |
377 | 377 | | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
385 | | - | |
386 | | - | |
387 | | - | |
388 | | - | |
389 | | - | |
390 | | - | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
391 | 395 | | |
392 | 396 | | |
393 | 397 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
146 | 161 | | |
147 | 162 | | |
148 | 163 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
235 | 235 | | |
236 | 236 | | |
237 | 237 | | |
238 | | - | |
239 | | - | |
240 | | - | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
241 | 241 | | |
242 | 242 | | |
243 | 243 | | |
| |||
0 commit comments