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

stacklok / toolhive / 26576157773
66%

Build:
DEFAULT BRANCH: main
Ran 28 May 2026 01:05PM UTC
Jobs 1
Files 738
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

28 May 2026 12:58PM UTC coverage: 65.958% (+0.08%) from 65.883%
26576157773

push

github

web-flow
Freeze MCPServer generation per pod via downward API (#5364)

* Add tests for MCPServer generation freeze invariant

Lock-in test in pkg/container/kubernetes/client_test.go documenting
the gate's blind spot when two callers pass equal MCPServerGeneration
with different images.

TDD test in cmd/thv-proxyrunner/app/run_test.go for the env-var override
(THV_MCPSERVER_GENERATION) that the fix in #5360 will introduce. Fails
today; goes green when the override is implemented.

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

* Freeze proxyrunner MCPServerGeneration via env var

The /etc/runconfig ConfigMap volume mounts live (no subPath), so a
restarted old-RS proxyrunner pod re-reads runconfig.json after a helm
upgrade and picks up the new MCPServer generation. Both old and new
pods then call DeployWorkload with the same ourGen, defeating the
strict-greater-than gate at shouldSkipStatefulSetApply.

Honor THV_MCPSERVER_GENERATION (sourced via downward API in a
follow-up operator change) as an override on the file value, freezing
the generation per pod at creation time. Parallel to how the image is
already frozen via the CLI positional arg.

Part of #5360.

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

* Project MCPServer generation into proxyrunner via downward API

Stamp the MCPServer generation as a pod-template annotation on the
proxy Deployment, and project that annotation into the proxyrunner
container as the THV_MCPSERVER_GENERATION env var via the downward
API. The env var is bound to the pod's own annotations at creation
time, so a restarted old-RS pod cannot acquire the new generation by
re-reading the live-mounted RunConfig ConfigMap.

The proxyrunner already honors this env var as an override on the
file value (see prior commit). With both sides wired, two coexisting
proxyrunner pods during a rolling update carry distinct generations
again and the strict-greater-than gate at shouldSkipStatefulSetApply
... (continued)

64 of 64 new or added lines in 2 files covered. (100.0%)

12 existing lines in 4 files now uncovered.

65482 of 99278 relevant lines covered (65.96%)

63.22 hits per line

Coverage Regressions

Lines Coverage ∆ File
6
72.35
-1.93% pkg/runner/config.go
2
93.94
-6.06% pkg/foreach/foreach.go
2
82.29
-0.21% pkg/vmcp/composer/workflow_engine.go
2
56.68
-0.18% pkg/workloads/manager.go
Jobs
ID Job ID Ran Files Coverage
1 26576157773.1 28 May 2026 01:05PM UTC 738
65.96
GitHub Action Run
Source Files on build 26576157773
  • Tree
  • List 738
  • Changed 8
  • Source Changed 3
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26576157773
  • 164c2519 on github
  • Prev Build on main (#26563713844)
  • Next Build on main (#26603308953)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc