Found by the new pull-request build gate (#42), which is the first thing in this repo's history to actually build and just verify lab-runner before merge.
lab-runner now measures 497,245,531 bytes uncompressed against a 320MB budget. Composition, measured directly from the upstream release artefacts:
| Binary |
Uncompressed |
argo v4.0.8 |
181.2 MB |
kubectl v1.36.3 |
56.8 MB |
plus python3, git, openssh, curl, jq, nginx, and the shell-enabled base.
How it got here: #22 bumped argo from v3 to v4.0.8 and was merged on 2026-07-31 by mergeraptor. Renovate was running with GITHUB_TOKEN at the time, so the PR triggered no workflows at all, and lab-runner was independently broken (just.bst, nginx.bst) so no build on main ever reached the size gate either. Both causes are fixed in #42.
#42 raises the ceiling to 544MB so the gate reflects reality rather than staying red on a pre-existing condition. That is a stopgap, not an endorsement — this repo's standard is ~150MB uncompressed (docs/skills/container-standards.md), and lab-runner is 3x that.
Options to evaluate:
- Is argo v4 required, or would the v3 line (~100MB smaller) still satisfy the Argo Workflows templates that consume this image?
- Can the Go binaries be stripped?
strip-binaries: "" is deliberately disabled for these elements to avoid corrupting them; confirm whether that is still necessary for these specific artefacts.
- Should
argo and kubectl live in a separate image from the general shell-enabled runner, so workflow steps pull only what they use?
Found by the new pull-request build gate (#42), which is the first thing in this repo's history to actually build and
just verifylab-runnerbefore merge.lab-runnernow measures 497,245,531 bytes uncompressed against a 320MB budget. Composition, measured directly from the upstream release artefacts:argov4.0.8kubectlv1.36.3plus python3, git, openssh, curl, jq, nginx, and the shell-enabled base.
How it got here: #22 bumped argo from v3 to v4.0.8 and was merged on 2026-07-31 by mergeraptor. Renovate was running with
GITHUB_TOKENat the time, so the PR triggered no workflows at all, andlab-runnerwas independently broken (just.bst,nginx.bst) so no build onmainever reached the size gate either. Both causes are fixed in #42.#42 raises the ceiling to 544MB so the gate reflects reality rather than staying red on a pre-existing condition. That is a stopgap, not an endorsement — this repo's standard is ~150MB uncompressed (docs/skills/container-standards.md), and
lab-runneris 3x that.Options to evaluate:
strip-binaries: ""is deliberately disabled for these elements to avoid corrupting them; confirm whether that is still necessary for these specific artefacts.argoandkubectllive in a separate image from the general shell-enabled runner, so workflow steps pull only what they use?