Skip to content

Gate releases on a pinned cross-version bundle upgrade smoke test #99

Description

@Staphylococcus

Parent: #91

Depends on: #95, #96, #98, #100

Outcome

Prove the supported upgrade contract against a real previous updater-capable release bundle and make regressions block stable release promotion.

Scope

  • Add a dedicated cross-version upgrade smoke script with explicit previous and candidate archive inputs.
  • Use the first publicly released updater-capable prerelease as the pinned baseline once it exists; v1.3.0 and other versions without updates install cannot initiate an assisted upgrade.
  • Install the supported baseline into an isolated root and user home and verify that its host layout passes the initial compatibility preflight.
  • Populate non-default configuration, prerelease update preference, native credentials, and representative installed integration state.
  • Apply the candidate upgrade path and verify runtime, manifest, units, hooks, desktop files, config pointer, and service policy.
  • Prove configuration and credentials are preserved across the supported version boundary.
  • Add negative controls that make the baseline layout incompatible and prove refusal before network or mutation.
  • Run the archive-driven cross-version smoke test in CI before candidate publication.
  • Run a production-GitHub prerelease canary after publication and before stable promotion.
  • Document that versions predating the updater require a normal manual installation of an updater-capable version before assisted upgrades become available.

Acceptance criteria

  • The test uses a pinned updater-capable previous artifact and verifies its digest before extraction.
  • The previous installation passes the runtime compatibility checks.
  • The supported baseline upgrades to the candidate without interactive configuration or pairing.
  • Candidate identity and all owned integration files match the new bundle.
  • Configuration, updates.channel, and credentials remain unchanged.
  • Incompatible-layout controls are refused without network, sudo, or mutation.
  • Stable release promotion depends on successful automated cross-version coverage and a production-path prerelease canary.

Out of scope

  • Making versions without updater support initiate an assisted upgrade.
  • Supporting arbitrary historical versions.
  • Host- or distribution-specific upgrade behavior.
  • Treating the initial compatibility check set as permanent or exhaustive.
  • General installer rollback testing beyond the partial-failure contract.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions