• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 33605177354
70%

Build:
DEFAULT BRANCH: main
Ran 02 Sep 2026 07:53AM UTC
Jobs 1
Files 904
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Sep 2026 07:45AM UTC coverage: 69.78% (+0.04%) from 69.745%
33605177354

push

github

web-flow
Honour a pinned cosign key on sync and upgrade (#6478)

* Classify a key-signed stored bundle

Back-filling provenance from a stored bundle assumed the bundle carried a
certificate. A key-signed one does not: the trust anchor lives outside the
artifact, which is the whole shape of the key-pair flow. Handed one, the
keyless verification underneath failed on the absent certificate and reported
a broken signature — for a bundle that is perfectly intact and verifies fine
against its key.

Report it as ErrKeySigned instead, decided from the bundle's own shape rather
than from a failed attempt to read an identity out of it. Callers that need to
treat "there is nothing here to observe" differently from "this signature is
damaged" can now tell the two apart, which the next change needs to explain
itself to the user.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Samuele Verzi <samu@stacklok.com>

* Verify key-pinned entries on sync and adopt

Sync re-verified every stored bundle through the keyless path, which refuses a
key-pinned entry outright. Sync reads that refusal as drift it can heal by
reinstalling, so a key-pinned skill reported as modified on every run and never
settled, and `--check` failed permanently on a project that was in fact intact.
The trust anchor was recorded correctly and simply never consulted.

Re-verify against the pinned key instead, reconstructing the signed payload
from the lock's reference rather than the install record's: the lock is the
authority on what the project is pinned to, and the install record is the thing
being checked against it. A missing bundle now names the key as the anchor it
could not satisfy — the keyless wording named an empty signer identity, since
a key entry records none.

Adoption refuses a key-signed install rather than attempting it. Adoption
back-fills trust from what the bundle reveals, and a key-pair bundle reveals no
identity and does not carry the key, so there is... (continued)

63 of 65 new or added lines in 3 files covered. (96.92%)

4 existing lines in 1 file now uncovered.

76788 of 110043 relevant lines covered (69.78%)

92.05 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
80.3
1.67% pkg/skills/skillsvc/sync.go

Coverage Regressions

Lines Coverage ∆ File
4
55.74
2.68% pkg/skills/verifier/offline.go
Jobs
ID Job ID Ran Files Coverage
1 33605177354.1 02 Sep 2026 07:53AM UTC 904
69.78
GitHub Action Run
Source Files on build 33605177354
  • Tree
  • List 904
  • Changed 8
  • Source Changed 3
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33605177354
  • ee527be7 on github
  • Prev Build on main (#33598353093)
  • Next Build on main (#33625521813)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc