Category
Hardcoded values
Description
The golden container disk image (build/golden-image/) had drifted from the codebase in two ways:
-
Missing packages — Four packages required by built-in and catalog workloads were not listed in blueprint.toml:
procps-ng (chaos-process workload, internal/workloads/chaos_process.go:171)
curl (tps client role, internal/workloads/tps.go:393)
sysbench (catalog entry catalog/sysbench/workload.yaml)
redis (catalog entry catalog/redis-bench/workload.yaml)
Without these in the golden image, VMs using it still fall back to cloud-init package installation at boot, defeating the purpose of the pre-built image.
-
Fedora version mismatch — build.sh defaulted to fedora-42 but DefaultContainerDiskImage in internal/constants/constants.go pointed to quay.io/containerdisks/fedora:41. The README diagram and all live docs also referenced Fedora 41. This inconsistency means the golden image is built on a different Fedora version than the default VM base image.
Risk if unaddressed: As new workloads or catalog entries are added, the blueprint will continue to drift silently. There is no automated check that ensures blueprint.toml covers all packages declared by workloads in the codebase.
Severity
Medium — increases maintenance burden or risk of future bugs
Affected Files
build/golden-image/blueprint.toml — was missing procps-ng, curl, sysbench, redis
build/golden-image/build.sh — defaulted to fedora-42
internal/constants/constants.go:25 — defaulted to fedora:41
build/golden-image/README.md:12 — diagram said Fedora 41
build/golden-image/Containerfile:14 — description label incomplete
deploy/configmap.yaml:11 — referenced fedora:41
docs/configuration.md:49,86,275 — referenced fedora:41
docs/guide/01-overview.md, 02-deploying-workloads.md, 03-adding-a-workload.md — referenced fedora:41
Proposed Fix
All fixes have been applied locally:
- Added the 4 missing packages to
blueprint.toml
- Updated
DefaultContainerDiskImage to fedora:42 in constants.go and all test assertions
- Updated the golden-image README diagram and pre-installed tools list
- Updated Containerfile description label
- Updated all live docs and
deploy/configmap.yaml to fedora:42
- Left frozen/historical docs under
docs/plans/ untouched per project policy
Future prevention: Consider adding a CI check or test that extracts all Packages: declarations from internal/workloads/*.go and catalog workload.yaml files, then verifies they are a subset of blueprint.toml. This would catch drift automatically.
Area
Build / CI, Workloads
Architecture Layer
Layer 0 - Definitions (constants)
Additional Context
The 14 changed files all pass tests (go test ./... — 14/14 packages OK). Frozen docs under docs/plans/archive/, docs/plans/engineering-journals/, docs/plans/darcy/, and docs/plans/presentation/ were intentionally not updated per CLAUDE.md policy.
Category
Hardcoded values
Description
The golden container disk image (
build/golden-image/) had drifted from the codebase in two ways:Missing packages — Four packages required by built-in and catalog workloads were not listed in
blueprint.toml:procps-ng(chaos-process workload,internal/workloads/chaos_process.go:171)curl(tps client role,internal/workloads/tps.go:393)sysbench(catalog entrycatalog/sysbench/workload.yaml)redis(catalog entrycatalog/redis-bench/workload.yaml)Without these in the golden image, VMs using it still fall back to cloud-init package installation at boot, defeating the purpose of the pre-built image.
Fedora version mismatch —
build.shdefaulted tofedora-42butDefaultContainerDiskImageininternal/constants/constants.gopointed toquay.io/containerdisks/fedora:41. The README diagram and all live docs also referenced Fedora 41. This inconsistency means the golden image is built on a different Fedora version than the default VM base image.Risk if unaddressed: As new workloads or catalog entries are added, the blueprint will continue to drift silently. There is no automated check that ensures
blueprint.tomlcovers all packages declared by workloads in the codebase.Severity
Medium — increases maintenance burden or risk of future bugs
Affected Files
build/golden-image/blueprint.toml— was missingprocps-ng,curl,sysbench,redisbuild/golden-image/build.sh— defaulted tofedora-42internal/constants/constants.go:25— defaulted tofedora:41build/golden-image/README.md:12— diagram saidFedora 41build/golden-image/Containerfile:14— description label incompletedeploy/configmap.yaml:11— referencedfedora:41docs/configuration.md:49,86,275— referencedfedora:41docs/guide/01-overview.md,02-deploying-workloads.md,03-adding-a-workload.md— referencedfedora:41Proposed Fix
All fixes have been applied locally:
blueprint.tomlDefaultContainerDiskImagetofedora:42inconstants.goand all test assertionsdeploy/configmap.yamltofedora:42docs/plans/untouched per project policyFuture prevention: Consider adding a CI check or test that extracts all
Packages:declarations frominternal/workloads/*.goand catalogworkload.yamlfiles, then verifies they are a subset ofblueprint.toml. This would catch drift automatically.Area
Build / CI, Workloads
Architecture Layer
Layer 0 - Definitions (constants)
Additional Context
The 14 changed files all pass tests (
go test ./...— 14/14 packages OK). Frozen docs underdocs/plans/archive/,docs/plans/engineering-journals/,docs/plans/darcy/, anddocs/plans/presentation/were intentionally not updated per CLAUDE.md policy.