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

stacklok / toolhive / 31801575950
70%

Build:
DEFAULT BRANCH: main
Ran 14 Aug 2026 12:51PM UTC
Jobs 1
Files 876
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

14 Aug 2026 12:43PM UTC coverage: 70.362% (-0.04%) from 70.401%
31801575950

push

github

web-flow
Enforce recorded ref and runner on skill verification (#6315)

* Enforce recorded ref and runner on skill verify

The certificate signing a skill artifact carries the git ref the signing
workflow ran on and the runner class it executed in, but both were
discarded: core's SAN policy deliberately matches any ref, so provenance
recorded for "this workflow in this repository" was satisfied by the same
workflow run from any branch, or on a self-hosted runner.

Read both Fulcio extensions off the verified certificate, record them in
the lock entry, and enforce the recorded values after the Sigstore policy
has passed — on the OCI, git, and stored-bundle paths alike. An empty
recorded value stays unconstrained, so entries written before the fields
existed, and certificates that carry no such extension, keep verifying.

Upgrade relaxes the ref alone and re-pins the observed one: a tag-based
release workflow signs every version on a new ref, and rejecting that
would demand --allow-signer-change on every routine upgrade, disabling
the guard entirely. Install and sync keep the exact match, and a runner
class change is blocked at every operation.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Validate ref transitions on upgrade and fix multi-bundle diagnosis

Every upgrade cleared the pinned ref unconditionally before
re-verifying, so a candidate signed by the same identity, issuer, and
runner from a different branch passed and silently replaced the
locked ref — the exact substitution ref pinning exists to catch.
guardSignerChange now validates the transition itself: a recorded tag
ref may rotate to another tag (a release workflow signs each version
on its own tag), anything else must stay identical.

Separately, verifyKeylessBundles could lose a pinned-field mismatch
to a later bundle's plain policy failure by simple iteration order,
defeating classifyVerifyFailure's preference for the more specific
diagnosis. The per-bundle verification step is now ... (continued)

104 of 138 new or added lines in 6 files covered. (75.36%)

79 existing lines in 5 files now uncovered.

85162 of 121034 relevant lines covered (70.36%)

99.45 hits per line

Uncovered Changes

Lines Coverage ∆ File
12
59.02
-10.21% pkg/skills/verifier/offline.go
11
69.3
-2.52% pkg/skills/verifier/git.go
9
70.94
3.55% pkg/skills/verifier/oci.go
2
97.44
25.21% pkg/skills/verifier/types.go

Coverage Regressions

Lines Coverage ∆ File
62
61.48
-5.16% pkg/workloads/manager.go
6
20.11
-3.45% pkg/client/manager.go
5
0.0
-100.0% pkg/workloads/sysproc_unix.go
3
71.85
-1.11% pkg/ignore/processor.go
3
73.79
-2.91% pkg/state/local.go
Jobs
ID Job ID Ran Files Coverage
1 31801575950.1 14 Aug 2026 12:51PM UTC 876
70.36
GitHub Action Run
Source Files on build 31801575950
  • Tree
  • List 876
  • Changed 17
  • Source Changed 8
  • Coverage Changed 17
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31801575950
  • cfba5800 on github
  • Prev Build on main (#31791076470)
  • Next Build on main (#31817057745)
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