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

stacklok / toolhive / 30087972278
69%

Build:
DEFAULT BRANCH: main
Ran 24 Jul 2026 11:04AM UTC
Jobs 1
Files 831
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

24 Jul 2026 10:57AM UTC coverage: 69.223% (-0.02%) from 69.241%
30087972278

push

github

web-flow
Add thv skill upgrade: re-resolve pinned skills to newer content (#5896)

* Add thv skill upgrade: re-resolve pinned skills to newer content

RFC THV-0080 needs a controlled way to pull newer content for
skills pinned by source, without silently drifting the lock file
on every install. This adds the full upgrade vertical slice:
service logic, HTTP endpoint, client, and CLI command.

- Upgrade re-resolves each targeted entry's Source (via the same
  git/OCI/registry dispatch order Install uses, stopping short of
  extraction — resolveLatestState) and installs newer content when
  the digest changed; Source itself is never rewritten
- Entries pinned to an immutable reference (an OCI digest or full
  git commit hash) report not-upgradable — there's nothing newer to
  resolve to
- --preview reports what would change without persisting it;
  --allow-ref-change permits the resolved reference itself
  changing; --fail-on-changes gives CI a freshness gate
- var _ skills.SkillLockService = (*service)(nil) lands here now
  that both Sync and Upgrade exist; SkillsRouter widens from the
  narrow skillSyncer interface (PR4) to the full interface
- `thv skill upgrade [name...]` CLI

Part of the production stack for #5715 (RFC THV-0080). Stack: 5/6.

* Make --fail-on-changes a true no-mutate CI gate

Upgrade installed each target in sequence and only checked
FailOnChanges after each one returned, so a multi-skill upgrade
would install the first changed skill for real before reporting the
conflict — a partial mutation a read-only CI gate must never
produce. Split into a resolve-only planning pass (also reused to
avoid re-resolving Source a second time when applying) and an apply
pass that only runs once every target has been checked. Upgrade also
now preserves a skill's existing clients instead of expanding to
every detected client, matching Sync's behavior.

* Fix broken OCI upgrade path and make fail-on-changes report-only

Two panel-review majors left the OCI upgr... (continued)

168 of 278 new or added lines in 6 files covered. (60.43%)

4 existing lines in 2 files now uncovered.

78466 of 113352 relevant lines covered (69.22%)

80.42 hits per line

Uncovered Changes

Lines Coverage ∆ File
52
69.41
pkg/skills/skillsvc/upgrade.go
43
25.86
cmd/thv/app/skill_upgrade.go
15
69.23
-5.04% pkg/skills/client/client.go

Coverage Regressions

Lines Coverage ∆ File
2
93.94
-6.06% pkg/foreach/foreach.go
2
71.38
-0.24% pkg/transport/proxy/streamable/streamable_proxy.go
Jobs
ID Job ID Ran Files Coverage
1 30087972278.1 24 Jul 2026 11:04AM UTC 831
69.22
GitHub Action Run
Source Files on build 30087972278
  • Tree
  • List 831
  • Changed 10
  • Source Changed 5
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30087972278
  • 8d00a6b0 on github
  • Prev Build on main (#30085604672)
  • Next Build on main (#30094849518)
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