Repository navigation
docs(umami): plan the Postgres 18 migration - #1671
Merged
Merged
Conversation
Covers the Postgres 18 image's data-directory move, layout and SCRAM gates, the retention timer, workstation staging, and the point of no return for rollback.
Encrypts dumps in transit to the workstation, adds content checksums and a decrypt test before the restore, cancels queued deploys for the freeze, uses throwaway staging secrets, and runs supervised retention on Postgres 18 before re-arming the timer.
fro-bot
approved these changes
Oct 24, 2026
fro-bot
left a comment
Collaborator
There was a problem hiding this comment.
Verdict: PASS
Reviewed the diff against the current Umami compose, deploy implementation, retention procedures, and integration tests. The plan covers the PG18 volume layout, fresh quiesced recovery point, restore integrity gates, deploy freeze, retention re-enablement, and rollback's data-loss boundary.
Blocking issues
None
Non-blocking concerns
None
Missing tests
None. This documentation-only change requires no automated test execution; staging and PG18 integration evidence remain explicit prerequisites for the migration.
Risk assessment (LOW) + rationale
This PR changes only the migration plan and cannot directly alter production or the deploy pipeline. Execution remains gated on a reviewed runbook, staging evidence, and operator approval.
Run Summary
| Field | Value |
|---|---|
| Event | pull_request |
| Repository | marcusrbrown/infra |
| Run ID | 40057614634 |
| Cache | hit |
| Session | ses_e9415f44bffe0ZCH73fEQg1KbT |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This updates the Umami Postgres 15 → 18 plan so it's ready to run. Only the plan doc changes; no code or compose changes yet.
Changes
PGDATAto/var/lib/postgresql/18/dockerand declaresVOLUME /var/lib/postgresql. The new volume therefore mounts at/var/lib/postgresql. A mount left at/datawould bring up an empty cluster that still passes its health checks. Gates now check thePGDATAvalue, the mount, and that each table's row count and content checksum match the source before umami starts.linux/amd64with throwaway secrets. The droplet has about 245 MB free and no swap, so it can't run a second stack.age -r <recipient>on the workstation. Plaintext never reaches either disk, and nothing is installed on the droplet. The cutover dump is decrypt-tested before PG15 stops.deploy.tsre-uploadsmain's PG15 compose on every deploy.The runbook (Unit 2) and the compose/Renovate pin change (Unit 3) come in later PRs.