projectbluefin/common/lab-testing

Claude Code and agent skill by projectbluefin/common

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

KubeVirt lab testing for common. Use when testing a common PR against bluefin, bluefin-lts, or dakota on ghost.

Install

npx vskill@latest install projectbluefin/common/lab-testing

SKILL.md

Lab Testing — common layer on KubeVirt

projectbluefin/common is the shared OCI layer consumed by every downstream variant. A regression in system_files/shared/ breaks bluefin, bluefin-lts, AND dakota simultaneously. Lab testing on ghost catches what GitHub Actions E2E cannot: KVM-backed full boots, real systemd unit activation, services that need device nodes, and cold-start timing.

When to use lab testing vs. GitHub Actions E2E

Signal you wantUse
Pre-merge: does this common change compose correctly?pr-e2e.yml (PR gate)
Post-merge: does the shared layer regress any variant?e2e.yml (post-merge E2E)
Real systemd journal — any service failures?Lab: `log-scan-*` workflows
Boot time, startup ordering, GNOME session smokeLab: bluefin-qa-pipeline suites=smoke
System contract (bootc, read-only /usr, staged deploy)Lab: bluefin-qa-pipeline suites=system
Hardware-only bugs (suspend, USB-C, GPU PM)Physical machines (exo-1 etc.)

GitHub Actions E2E (e2e.yml) uses QEMU on ubuntu-latest runners. The lab uses KubeVirt on ghost (Ryzen AI MAX+ 395, 64GB RAM, full KVM). Neither replaces the other. Lab tests run on demand; E2E runs on every push.

Scope by changed path

Changed pathLab variants to test
system_files/shared/**bluefin + lts + dakota (all three)
system_files/bluefin/**bluefin + lts
dconf / GNOME settingsbluefin + lts (dakota GNOME stack is BST-sourced)
just/, Justfile, *.justall three (ujust ships to all variants)
Containerfile changesall three

Posting lab results

When you verify a PR through the ghost cluster, the result must be posted as a Vanguard Lab Strike Report PR comment. This is the canonical evidence format for cluster verification. Copy the template from `projectbluefin/lab/docs/vanguard-report-template.md`, fill every field with real CLI evidence (workflow name/phase, argo logs, pod/VMI state), and update an existing report comment from you rather than stacking duplicates.

This report is an explicit exception to the normal "don't post comments describing your actions" convention — it is the lab result, not a status update.

Lab infrastructure

ItemValue
Clusterk3s on ghost (192.168.1.102)
VM compute hostghost — all KubeVirt VMs pinned here
Argo UIhttp://192.168.1.102:32746
WorkflowTemplatesprovision-bluefin-vm, bib-build-and-push, teardown-bluefin-vm, dakota-bst, toggle-testing-rebase, bluefin-qa-pipeline, dakota-qa-pipeline, bluefin-migration-test
SSH key secretbluefin-test-ssh-key in argo namespace
SSH userbluefin-test

Critical networking rule: log-collection and test pods MUST set nodeSelector: kubernetes.io/hostname: ghost. KubeVirt masquerade NAT iptables rules live in the virt-launcher pod netns. A pod on exo-1 cannot reach VM IPs.

Detailed references

This skill was split on 2026-07-29 to stay under the 200-line soft budget (it was 910 lines). Core when/scope/posting/infra guidance stays above; the rest moved to references/:

NeedReference
Golden disk status, live toggle-testing methodology, firing up all three variants, reading journal output, submit smoke+system quick-start`references/methodology.md`
Baseline vs delta methodology for reviewing a PR that touches systemd units/timers`references/pr-review-baselines.md`
Known issues and operational gotchas (SSH hangs, Argo template resolution, BIB build failures, capacity checks, VMI namespaces, etc.)`references/known-issues.md`

Relationship to GitHub Actions E2E

Lab tests and GitHub Actions E2E are complementary, not redundant:

common PR
│
├─► pr-e2e.yml ──────── PR gate: common suite on composed image
│ (QEMU, ubuntu-latest, ~12 min)
│
├─► [merge to main]
│
├─► e2e.yml ─────────── post-merge: smoke+common on all 3 tags
│ (QEMU, ubuntu-latest, ~15 min)
│
└─► lab (on demand) ───── real KVM boot, systemd journal, system suite
(KubeVirt on ghost, full OS boot)

The lab catches:

  • Services that fail silently in QEMU but crash with real KVM hardware topology
  • Boot ordering regressions (After=, Wants= wiring in unit files)
  • ublue-system-setup.service or ublue-user-setup.service failures
  • Any service that reads /sys or /proc paths absent in QEMU
  • First-boot setup regressions (libsetup.sh version-script failures)

Filing bugs from lab results

For each failed unit or journal error found:

  1. Identify which system_files/ path owns the unit or config
  2. Determine affected variants (shared → all three; bluefin/ → bluefin+lts)
  3. File in the owning repo with label bug:
  • common if the unit/config ships from system_files/
  • bluefin/bluefin-lts/dakota if it's variant-specific
  1. Include: variant name, kernel version, exact journal lines, workflow name

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/projectbluefin/common/lab-testing/badge)](https://verified-skill.com/skills/projectbluefin/common/lab-testing)

Something wrong with this skill or its page? Tell us.