-
v0.11.0 Stable
released this
2026-08-13 08:52:15 +00:00 | 12 commits to main since this releaseAdded
-
TAG-SIGNED— a release tag that names a signer, not just whoever could
write to the forge. The catalog pins plugins by tag, so this sits on the
same supply-chain axis asTAG-ANNOTATED: annotation makes a tag
immovable-without-a-trace, a signature makes it attributable.The check had been parked for a release as "blocked on an operator decision",
on the strength of 0 of 18 repos signing. That zero was never evidence against
it — it is what a practice nobody has adopted yet looks like, and reasoning
from it makes the gate ratify the status quo it exists to move. The rule that
settled it (operator, 2026-08-13) asks something else entirely: would a public
AAA+ repository do this? Yes. Unlike the two legitimate conventions that
killedVERSION-DRIFT, there is no second convention under which release tags
are better left unattributable.The policy is a DATE, and the date is what made the check shippable.
Measured across 20 clones before the rule was locked: 158v*tags, 144
annotated, 14 lightweight, 0 signed, and not one tag dated after 2026-08-12. A
boolean "this org signs" would have failed 20 correct repositories the day it
landed, with force-moving 144 published refs as its only remedy — the mechanism
that gets gates switched off.tags_signed_fromlives in the register, never
in the engine (the rule that keeps the org-profile exemption a flag rather than
a class name in a classifier); absent it, the check is anotRunSKIP, because
the gate never assumes a policy nobody recorded.Verified both directions: a sweep of 21 repos yields 18
TAG-SIGNED-PREPOLICY- 3
TAG-SIGNED-NONE, 0 ERROR, 0 WARN — then, against real git objects, an
unsigned post-policy newest tag does fireERROR. A sweep returning zero
proves nothing alone; a dead check returns zero too.
Two exclusions keep one defect from being counted twice under two codes: a
lightweight tag has no tag object to carry a signature at all
(TAG-SIGNED-LIGHTWEIGHT, abyDesignskip namingTAG-ANNOTATEDas the
owner), and a pre-policy tag was correct when it was cut
(TAG-SIGNED-PREPOLICY, anOK— said out loud, never as silence).It answers is this tag signed and never does the forge vouch for it: the
signature is read from the clone, while the forge's "Verified" badge needs a
key registered there. - 3
Changed
- The engine reads tag signature and creation date alongside the object type, in
the same singlefor-each-ref. The signature is read with
%(if)%(contents:signature)%(then)…rather than by printing the block, which
is multi-line and would break the line-oriented parser on exactly the tags the
check cares about. No new API call — this stays at three. - 241 tests, from 230.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-