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

stacklok / toolhive / 33420391085
70%

Build:
DEFAULT BRANCH: main
Ran 31 Aug 2026 05:42PM UTC
Jobs 1
Files 903
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

31 Aug 2026 05:35PM UTC coverage: 69.738% (+0.05%) from 69.685%
33420391085

push

github

web-flow
Record a pinned cosign key in the lock schema (#6444)

* Record a pinned cosign key in the lock schema

Verifying a key-signed artifact needs a trust anchor, and a lock entry
could previously express only a keyless certificate identity. Entries
may now pin a cosign public key instead.

The full key is stored rather than a digest of it, because the key is
recoverable from neither the artifact nor the stored bundle: cosign's
signature manifest defines no annotation carrying it, so a digest would
have nothing to hash at verification time. It is held as base64 DER
SPKI because a lock value may not contain whitespace, which rules out
PEM armor.

The two anchors are mutually exclusive. They are checked by different
policies against different trust roots, so an entry carrying both would
not say which applies, and one carrying neither pins nothing.
Certificate-derived fields are refused on a key-pinned entry as well:
read from a certificate a key-pair signature does not have, they would
pin constraints no verification could check.

That exclusivity is also why no schema version bump is needed. A build
predating this field sees an entry with no signer identity, reports it
as required, and fails the lock file closed rather than treating the
entry as unpinned. Bumping instead would be actively harmful, since the
version check is an equality comparison and would reject every existing
lock file.

Nothing writes a key-pinned entry yet. Until the install path lands,
handing one to a keyless verification path is refused up front: its
certificate fields are empty by construction, which Sigstore rejects
for want of subject alternative name criteria — closed already, but
with a message that names neither the entry nor the mismatch.

Skill info and install output render a key-pinned entry distinctly,
since an empty signer identity would otherwise read as an untracked
install.

Refs #6442

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Signed-off-by: ... (continued)

74 of 77 new or added lines in 8 files covered. (96.1%)

12 existing lines in 5 files now uncovered.

76505 of 109704 relevant lines covered (69.74%)

92.0 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
11.76
-0.48% cmd/thv/app/skill_info.go
1
19.64
-0.36% cmd/thv/app/skill_install.go

Coverage Regressions

Lines Coverage ∆ File
4
64.1
4.47% pkg/workloads/manager.go
3
96.18
-0.57% pkg/authz/authorizers/cedar/core.go
3
61.43
-4.29% pkg/state/runconfig.go
1
94.96
0.0% pkg/authserver/storage/memory.go
1
96.77
-3.23% pkg/foreach/foreach.go
Jobs
ID Job ID Ran Files Coverage
1 33420391085.1 31 Aug 2026 05:42PM UTC 903
69.74
GitHub Action Run
Source Files on build 33420391085
  • Tree
  • List 903
  • Changed 17
  • Source Changed 10
  • Coverage Changed 17
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33420391085
  • d1d76c3b on github
  • Prev Build on main (#33385151207)
  • Next Build on main (#33511308889)
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