Skip to content

Starters CI does not see a MinVersion bump, and ADR-0016 does not mention the published artifact #621

Description

@viniciusdc

Follow-up to @dcmcand's review on #617 (approved, merged as 35ac7bd7). Both
points were non-gating there and belong in their own change.

1. A MinVersion bump can change published starters without CI seeing it

#617 made the generated pixi.toml derive its opentofu constraint from
pkg/tofu.MinVersion and MaxVersionExclusive. That removed the stale-literal
drift, but it created a dependency .github/workflows/starters.yml does not
watch. Its paths lists (both the pull_request and push ones) are:

starters/**
cmd/starters/**
examples/local-config.yaml
examples/aws-config.yaml
.github/workflows/starters.yml

So the PR that raises the floor changes what gets published to quay.io while
validate-starters never runs.

Adding pkg/tofu/** to both lists is only half the fix. validate-starters
checks token substitution, TOML parseability and nic validate behaviour - none
of which look at a version constraint. The only step that would catch a floor
conda-forge cannot satisfy is pixi lock, and that runs solely in
publish-starters at starters.yml:219, behind
if: startsWith(github.ref, 'refs/tags/v') at :139.

Net effect: the bump PR goes green, and the tag build fails inside the
credentialed publish job. That is still better than the silent download-fallback
#617 removed, which is why it was not gating - but the failure lands in the worst
place to debug it.

The workflow already half-acknowledges this at :68-70:

"a malformed pixi.toml would not surface until the publish job runs pixi lock"

Proposed:

  • Add pkg/tofu/** to both paths lists in .github/workflows/starters.yml
  • Add a pixi lock against dist/starters/aws to validate-starters, so an
    unsatisfiable constraint fails in the PR that causes it

This is also the test that earns its place for #617 in a way an assertion on the
Sprintf would not: it exercises whether the constraint is satisfiable, not
whether the string was formatted.

2. ADR-0016's maintenance policy does not mention the published artifact

docs/adr/0016-opentofu-runtime-version-policy.md is where someone raising the
floor will look. Its maintenance policy covers the MinVersion <= Version
invariant and the CI lockfile workflow's independence, but predates the starters
deriving their constraint from these constants.

Nothing in the ADR is false - this is a gap, not drift.

  • Add a bullet recording that raising the floor now also changes the starter
    workspaces published to quay.io, and that pixi lock must be able to
    satisfy the new floor from conda-forge

Note on the prerelease caveat

@dcmcand confirmed the caveat #617 added to MaxVersionExclusive's doc comment
is accurate and currently unreachable: compatibleVersion("2.0.0-rc1") rejects
because it compares Core(), while conda's <2.0.0 would accept 0.14.0-style
2.0.0rc1 - but conda-forge has published 39 opentofu versions and zero
prereleases. No action; recorded so the next reader does not re-derive it.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Size

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions