Skip to content

Planned upgrades (UPG) - #423

Merged
dannash100 merged 14 commits into
mainfrom
feature/upgrade-plans
Aug 2, 2026
Merged

Planned upgrades (UPG)#423
dannash100 merged 14 commits into
mainfrom
feature/upgrade-plans

Conversation

@dannash100

@dannash100 dannash100 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor
screen2-group-migration-tests upgrades-dashboard upgrades-edit-plan

Records where each deployment is going, so pre-upgrade testing aims at the version that will actually be applied instead of guessing.

Based on feature/tam-6884-pre-upgrade-migration-testing, not main. Review that first; this diff is the four commits on top.

Canopy knows what every server runs and every version that exists, but not which minor a site takes next, because that is a human call. So migration testing guessed newest, which is wrong for a deployment deliberately moving to an older minor and spends a full restore proving it. And nothing showed which deployments were mid-plan, late, or unplanned.

An operator records per group: target version, optional date, optional note. candidate_for then prefers the plan over newest, which is the whole point. Dashboard at /upgrades splits planned from nothing-recorded.

Four decisions worth arguing with:

"Plan", not "intent". intent already means restore-consumer intent here, and two meanings in one crate would confuse. Mechanical to rename if you disagree.

A date is not a deadline. Nothing schedules or blocks on it, and late is presentational. An upgrade slipping is normal operational reality, and a date someone typed is no basis for an incident.

Overshooting meets the plan. A deployment that jumped further than planned has done the upgrade and then some; holding the plan open would report it as outstanding.

One open plan per group, enforced by a partial unique index. A group goes one place next, so recording replaces rather than queues, and the retired plan is kept as history. That history is what makes "how long do our upgrades actually take to happen" answerable.

Canopy closes a met plan itself by watching what the group reports, so nobody ticks anything off. A target that is unpublished, or not ahead of the group, is refused.

Spec is UPG (.workhorse/specs/private-server/upgrade-plans.md); RST's candidate rule now points at it.

1074 Rust tests green plus 2 Playwright. server-reachability-silence.spec.ts:121 flaked once under full-suite load and passes in isolation; my branch touches nothing reachability-related, but I did not bisect it against main.

@passcod

passcod commented Jul 30, 2026

Copy link
Copy Markdown
Member

Looks awesome! One thing: can we edit a plan? I don't see an edit button on the screenshot

Base automatically changed from feature/tam-6884-pre-upgrade-migration-testing to main July 30, 2026 21:38
@dannash100

Copy link
Copy Markdown
Contributor Author

Looks awesome! One thing: can we edit a plan? I don't see an edit button on the screenshot

added and updated screenshots

@dannash100
dannash100 requested a review from passcod July 31, 2026 04:01
Comment thread .workhorse/specs/public-server/restore-replicas.md Outdated
@dannash100
dannash100 requested a review from passcod August 2, 2026 21:36

This spec covers what a plan records, who sets it, when Canopy considers it met, and what reads it.

It does not cover performing an upgrade.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yet! (don't add this to the spec tho haha)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100 haha

@dannash100
dannash100 added this pull request to the merge queue Aug 2, 2026
Merged via the queue into main with commit fd11c0e Aug 2, 2026
7 checks passed
@dannash100
dannash100 deleted the feature/upgrade-plans branch August 2, 2026 22:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants