Skip to content

feat: reserve components schema shape for per-component versioning - #222

Merged
joshua-temple merged 1 commit into
mainfrom
feat/reserve-components-shape
Jun 18, 2026
Merged

joshua-temple merged 1 commit into
mainfrom
feat/reserve-components-shape

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

Problem

schema_version is a monotonic int. Adding a per-component versioning dimension after the v1.0.0 freeze would force a breaking schema bump. Closes #176.

Fix

Reserve the shape only, before the freeze, as a purely additive change:

  • Optional components map on the trunk config, per-env state, and latest-release state (all omitempty, absent by default).
  • New ComponentConfig/ComponentState/ComponentReleaseState types.
  • Structural validation (validateComponents) rejects unsafe component names and ../absolute paths.
  • No generator output and no behavior attached. schema_version stays at 1; implementation is reserved for later.
  • versioning doc records the reservation so future work is additive.

Verification

  • New tests assert: the reserved shape parses and validates structurally; it round-trips through parse and marshal; omitting it changes nothing; existing manifests still generate byte-identical output (the generate golden suite is untouched).
  • go build ./... && go test ./... && golangci-lint run ./... all green.
  • Independent review: APPROVE.

@joshua-temple
joshua-temple enabled auto-merge (squash) June 18, 2026 16:49
@joshua-temple
joshua-temple disabled auto-merge June 18, 2026 16:51
Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple
joshua-temple force-pushed the feat/reserve-components-shape branch from eac78da to 1fdd331 Compare June 18, 2026 17:01
@joshua-temple
joshua-temple enabled auto-merge (squash) June 18, 2026 17:01
@joshua-temple
joshua-temple merged commit 3273bef into main Jun 18, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: independently versioned components in a single manifest

1 participant