Skip to content

[Tech Debt]: Golden image blueprint.toml and Fedora version drift from codebase #206

Description

@mrhillsman

Category

Hardcoded values

Description

The golden container disk image (build/golden-image/) had drifted from the codebase in two ways:

  1. 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.

  2. Fedora version mismatchbuild.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:

  1. Added the 4 missing packages to blueprint.toml
  2. Updated DefaultContainerDiskImage to fedora:42 in constants.go and all test assertions
  3. Updated the golden-image README diagram and pre-installed tools list
  4. Updated Containerfile description label
  5. Updated all live docs and deploy/configmap.yaml to fedora:42
  6. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority/backlogHigher priority than priority/awaiting-more-evidence.size/SDenotes a PR that changes 10-29 lines, ignoring generated files.tech-debtTechnical debt, code quality, or maintenance concerntriage/acceptedIndicates an issue or PR is ready to be actively worked on.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions