From b601c062bdfecf944f3163848088a2cfd57e4f7d Mon Sep 17 00:00:00 2001 From: fabi Date: Tue, 28 Jul 2026 21:28:11 +0200 Subject: [PATCH] fix(audit-2): video playback, role identity, keepsake EXIF, recover ceiling, WebKit CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Second round: the two regressions the first round introduced, the remaining gaps it left, and the CI change that makes the iOS guarantees actually gate a change rather than being asserted. Squashed from 9 commits, original messages preserved below. ──────── docs(deploy): document the update path — `up -d` alone ships nothing The README only ever described a fresh install. There was no update section anywhere, and `--build` appeared nowhere in the docs. That matters because `app` and `frontend` are `build:` services with no published image tag, and Compose has no source-change detection: if an image by that name exists it is reused. So the natural `git pull && docker compose up -d` reports "Container app-1 Running", rebuilds nothing, and exits 0. A deploy that shipped none of the new code is indistinguishable from a successful one — which is how eleven merged fixes can sit in the repo and never reach the box. Verified both halves against a real stack rather than asserting them: with a source change staged, `up -d` left the image ID untouched; `up -d --build` produced a new image ID and a healthy /health. Adds an "Updating an existing deployment" section covering backup-before-migrate, pull, rebuild, health check, and an image-ID comparison to prove a build actually happened. Also spells out the rollback trap: migrations run on boot and are not undone by checking out an older commit, so rolling back code without restoring the snapshot leaves the schema ahead of the binary and the app refusing to start. ──────── fix(video): play the actual video, and answer Range requests Every video in the app was unplayable. Two independent defects, either one sufficient on its own, and nothing in the suite covered either — no test anywhere played media or asserted a `