rallly: PostgreSQL 16 -> 18, converted by the box (R-463)

The ONLY image move in this commit. Written by upgrade-test.py --write-ladder from both venues:
- bench LXC 9401 (harness v4): converted 16 -> 18 in 21.4 s, check equal over 31 tables, the seeded
  poll read back, 10-minute memory watch peak 61.6 % (anon), 0 kills, 0 restarts;
- box 9202 (controller 0.283.1, the product's guarded Update, drill catalog): converted, done in
  32.8 s, PG_VERSION 18, the poll read back through the front door. Undo case on 9202 first: the
  load failing (adminpack, which 18 lacks) -> undone in 57.5 s, back on 16, the poll read back.
Target 18: rallly's own upstream compose runs postgres:18-alpine at /var/lib/postgresql at
v4.11.1 (09 decision 42's rule). The data mount moves with the image (pg_mounts_for).
Evidence: felhom.eu/documentation/audits/pg-last-six-2026-09-30/

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-30 12:54:11 +02:00
parent e6f3ec2087
commit 25ffd89ea6
2 changed files with 9 additions and 3 deletions
+7 -1
View File
@@ -10,7 +10,7 @@ subdomain: "poll"
slug: "rallly"
# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that
# changes an image: line must set this to the same day (see CLAUDE.md).
catalog_since: "2026-07-18"
catalog_since: "2026-09-30"
# --- Resource hints (displayed on deploy screen) ---
resources:
@@ -121,3 +121,9 @@ i18n:
label: 'Database password'
- env_var: SECRET_PASSWORD
label: 'Encryption key'
# update_ladder — the test record: one tested step per line, oldest first (JSON flow mappings,
# `09-update-architecture.md` §6.4 part 4). WRITTEN BY scripts/upgrade-test.py, never by hand;
# gated by scripts/check-test-record.py. An image: move without a proven entry here is refused.
update_ladder:
- {"from": {"rallly": "lukevella/rallly:4.11.1", "rallly-postgres": "postgres:16-alpine"}, "to": {"rallly": "lukevella/rallly:4.11.1", "rallly-postgres": "postgres:18-alpine"}, "digest": {"rallly": "sha256:b2acb78afb1e2e88445e78cec4393cd8b8cc63f9268cf1defe19f96d0db945b0", "rallly-postgres": "sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873"}, "verdict": "proven", "tested_at": "2026-09-30T10:40:06Z", "harness_version": 4, "evidence": "felhom.eu/documentation/audits/pg-last-six-2026-09-30/bench/apps/rallly/bench/evidence/MV-rallly/verdict.json", "box_evidence": "felhom.eu/documentation/audits/pg-last-six-2026-09-30/box/rallly/box-verdict-rallly.json", "memory_peak_pct": 61.6, "marks": {"files_may_change": false, "needs_person": null, "memory_tight": false}, "memory_basis": "anon", "memory_cgroup_peak_pct": 68.5, "engine_conversion": {"service": "rallly-postgres", "engine": "postgres", "from": 16, "to": 18}}
+2 -2
View File
@@ -60,7 +60,7 @@ services:
- "traefik.http.services.rallly.loadbalancer.server.port=3000"
rallly-postgres:
image: postgres:16-alpine
image: postgres:18-alpine
container_name: rallly-postgres
restart: unless-stopped
environment:
@@ -69,7 +69,7 @@ services:
- POSTGRES_DB=rallly
- TZ=Europe/Budapest
volumes:
- rallly_postgres_data:/var/lib/postgresql/data
- rallly_postgres_data:/var/lib/postgresql
networks:
- rallly-internal
deploy: