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.
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
updates installcannot initiate an assisted upgrade.Acceptance criteria
updates.channel, and credentials remain unchanged.Out of scope