From aeb0cd6989c800bbae6272bc34f1aaf675b3a34c Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 30 Sep 2026 12:54:31 +0200 Subject: [PATCH] outline: 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 26.7 s, check equal over 42 tables, the seeded document read back, 10-minute memory watch peak 48.9 % (anon), 0 kills, 0 restarts; - box 9202 (controller 0.283.1, the product's guarded Update, drill catalog): converted, done in 41.1 s, PG_VERSION 18, the document read back through the front door. Undo case on 9202 first: the load failing (adminpack) -> undone in 57.5 s, back on 16, the document read back. Target 18: Outline's official self-host compose (docs.getoutline.com, Docker) runs postgres:18 at /var/lib/postgresql (09 decision 42's rule); Outline documents PostgreSQL 14+. Evidence: felhom.eu/documentation/audits/pg-last-six-2026-09-30/ Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- templates/outline/.felhom.yml | 8 +++++++- templates/outline/docker-compose.yml | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/templates/outline/.felhom.yml b/templates/outline/.felhom.yml index 2e1033a..935956e 100644 --- a/templates/outline/.felhom.yml +++ b/templates/outline/.felhom.yml @@ -10,7 +10,7 @@ subdomain: "kb" slug: "outline" # 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: @@ -125,3 +125,9 @@ i18n: label: 'Encryption key' - env_var: UTILS_SECRET label: 'Utility 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": {"outline": "outlinewiki/outline:1.9.1", "outline-postgres": "postgres:16-alpine", "outline-redis": "redis:7-alpine"}, "to": {"outline": "outlinewiki/outline:1.9.1", "outline-postgres": "postgres:18-alpine", "outline-redis": "redis:7-alpine"}, "digest": {"outline": "sha256:9fe2cbdceccea0ffb82cbc8dc6f4c0d4ba1d377454e502d5d2bddececb34d4f1", "outline-postgres": "sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873", "outline-redis": "sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499"}, "verdict": "proven", "tested_at": "2026-09-30T10:40:04Z", "harness_version": 4, "evidence": "felhom.eu/documentation/audits/pg-last-six-2026-09-30/bench/apps/outline/bench/evidence/MV-outline/verdict.json", "box_evidence": "felhom.eu/documentation/audits/pg-last-six-2026-09-30/box/outline/box-verdict-outline.json", "memory_peak_pct": 48.9, "marks": {"files_may_change": false, "needs_person": null, "memory_tight": false}, "memory_basis": "anon", "memory_cgroup_peak_pct": 65.5, "engine_conversion": {"service": "outline-postgres", "engine": "postgres", "from": 16, "to": 18}} diff --git a/templates/outline/docker-compose.yml b/templates/outline/docker-compose.yml index 15415e4..6dab5a2 100644 --- a/templates/outline/docker-compose.yml +++ b/templates/outline/docker-compose.yml @@ -57,7 +57,7 @@ services: - "traefik.http.services.outline.loadbalancer.server.port=3000" outline-postgres: - image: postgres:16-alpine + image: postgres:18-alpine container_name: outline-postgres restart: unless-stopped environment: @@ -66,7 +66,7 @@ services: - POSTGRES_DB=outline - TZ=Europe/Budapest volumes: - - outline_postgres_data:/var/lib/postgresql/data + - outline_postgres_data:/var/lib/postgresql networks: - outline-internal deploy: