Skip to content

promote each component through the environments independently #290

Description

@joshua-temple

Problem / why

The runtime promoter walks one global Config.Environments and writes one global
latest_release (internal/promote/promote.go, internal/promote/finalize.go). For a
multi-component manifest, the env walk and the finalize must run per component and write into
that component's state subtree. For a single-component manifest, the single default component
keeps today's behavior.

Scope (firm intent, details to be refined after V3)

  • Make the promotion env walk a per-component loop; each component promotes through the
    environment ladder on its own version line.
  • Port the finalize overlay to component-major: into.State.Components[comp][env] = mine...Components[comp][env], a disjoint top-level assign with no merge logic, and write a
    per-component latest_release.components[comp].
  • CommitWithRetry stays unchanged; only the Mutate closure keys change. The serializer picks
    the single-component collapse or multi-component expand form per F3.

Files / areas touched

  • internal/promote/promote.go, internal/promote/finalize.go.

Tests and coverage required

  • Unit tests: promoting A does not alter B's state subtree or latest_release.
  • e2e: promote one component dev to prod while the other stays put.
  • A single-component regression test that promotion is unchanged.

Acceptance criteria

  • Each component promotes on its own version line and writes only its own state subtree.
  • Single-component promotion is unchanged.

Dependencies

Blocked by the independent versioning milestone (V1-V4).

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

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions