blumeops/docs/changelog.d
Erich Blume 3c7967e445 C1: deploy shower v1.1.0 (phases + guest memories) (#354)
## Summary

Deploys `adelaide-baby-shower-app` **v1.1.0** to ringtail k3s.

### App changes (since v1.0.2)

- **Four-phase `ShowerState`** replaces the boolean `locked` flag — `pre_event` → `party` → `prizes_locked` → `event_locked` — with a backfill migration that maps `locked=True → pre_event`, `locked=False → party`.
- **Guest memories**: append-only photos + comments panel where guests can leave notes for the baby. Adds `GuestPhoto` + `GuestComment` models with file-extension validators and a max-size validator; new `shower.imaging` module for thumbnail generation.
- **Admin + QR polish**: configurable host link, fixed "View Site" URL, guest-facing QR copy improvements, contest tweaks.

Three Django migrations run automatically in the entrypoint against the SQLite PV:
- `0009_shower_phase`
- `0010_guest_memories`
- `0011_book_description`

No ConfigMap / env-var changes. The deploy uses `strategy: Recreate` with a single replica, so the old pod releases the data PVC before the new one mounts it and runs migrations.

### Container build changes

The v1.1.0 tag exposed a latent issue with the Forgejo PyPI install path:

- The recent commit [2d38418e](2d38418e) closed the forge package leak at the Fly edge by blocking `/api/packages/*` publicly.
- Forgejo's PyPI simple index returns absolute file URLs hardcoded to its public `ROOT_URL` (`forge.eblu.me`), so pip-installing from the tailnet index URL still tries to download from `forge.eblu.me` → 403.
- Previous shower builds escaped this because their FOD outputs were already in the nix store; bumping to a new version forced a fresh pip run that hit the block.

Fix mirrors what we already do for the sdist: both wheel and sdist are pulled via direct `fetchurl` against `forge.ops.eblu.me`, then the wheel is copied to TMPDIR under its clean filename (nix store path's hash prefix breaks pip's wheel-filename parser) and handed to pip as a local path. The forge `--extra-index-url` is no longer needed.

FOD outputHash pinned to `sha256-kTNOswobtkgyQmmqbQM8XO4vvaGg57nCuuZGbNXb0NM=` from run 547. Image: `registry.ops.eblu.me/blumeops/shower:v1.1.0-444ff91-nix`.

### Adjacent finding (already handled)

The ringtail `gitea-runner-nix_container_builder` systemd unit was left `inactive` after the recent `provision-ringtail` (matches the known `sshd-restart-hangs-mux` lesson — the rebuild changed the unit's PATH closure + config.yaml, systemd stopped it, then the playbook hung before the activation could restart it). Manually started; the existing memory `lesson_provision_ringtail_ssh_hang.md` was extended to mention the runner as the canary service to check after provisions.

## Test plan

- [ ] `argocd app diff shower --revision shower-v1.1.0` — review the manifest change
- [ ] `argocd app set shower --revision shower-v1.1.0 && argocd app sync shower`
- [ ] `kubectl --context=k3s-ringtail logs -n shower deploy/shower` — confirm migrations 0009/0010/0011 applied, no errors
- [ ] Hit `https://shower.ops.eblu.me/` (tailnet) — splash page renders, phase indicator visible
- [ ] Hit `https://shower.ops.eblu.me/host/` — host console loads, phase dropdown shows the four states
- [ ] Hit `https://shower.eblu.me/` (public via Fly) — splash page still served
- [ ] After merge: `argocd app set shower --revision main && argocd app sync shower`

Reviewed-on: #354
2026-05-11 20:08:03 -07:00
..
+agent-file-neutralization.ai.md C0: adopt AGENTS.md as canonical agent config 2026-04-18 20:15:30 -07:00
+alloy-main-sha-rebuild.infra.md C0: alloy — bump kustomization tags to main-branch SHA 2026-05-01 08:31:27 -07:00
+alloy-native-macos-v1.16.0.infra.md C0: alloy native macOS on indri — upgrade to v1.16.0 2026-05-01 10:36:38 -07:00
+argocd-resource-limits.infra.md Add resource limits to ArgoCD pods to prevent unbounded consumption 2026-04-18 13:04:27 -07:00
+blumeops-tasks-due-recurrence.feature.md C0: blumeops-tasks — replace ambiguous due:+N with "Nd overdue" 2026-04-27 11:49:46 -07:00
+claude-md-import-agents.ai.md C0: CLAUDE.md — import AGENTS.md instead of redirecting to it 2026-04-27 11:41:13 -07:00
+compliance-mute-categories.doc.md C0: docs — explanation article on compliance mute categories 2026-05-04 18:19:53 -07:00
+container-build-suggest-runner-logs.misc.md C0: suggest mise run runner-logs in container-build-and-release 2026-04-21 10:12:00 -07:00
+fix-forge-static-assets.bugfix.md Fix forge.eblu.me static assets by adding missing Host header 2026-04-18 16:00:56 -07:00
+frigate-notify-local.infra.md Add frigate-notify nix container build (#339) 2026-04-21 09:28:02 -07:00
+homepage-config-perms-fix.bugfix.md C0: fix homepage container /app/config write permissions 2026-05-10 20:49:22 -07:00
+prowler-rebuild-on-main.infra.md C0: prowler — rebuild image against main HEAD 2026-04-29 10:49:27 -07:00
+remove-devpi-container-build.misc.md C0: remove containers/devpi/ build artifact 2026-04-29 13:40:45 -07:00
+review-cc-ephemeral-privileged-jobs.misc.md C0: review CC ephemeral-privileged-jobs 2026-04-29 11:09:34 -07:00
+review-cc-init-container-isolation.misc.md C0: review CC init-container-isolation — defer retirement to post-ringtail 2026-05-04 18:31:13 -07:00
+review-cc-trusted-ci-only.misc.md C0: review compensating control trusted-ci-only 2026-05-01 10:49:22 -07:00
+review-compliance-image-iac.feature.md C0: review-compliance-reports — summarize image and IaC scans 2026-04-27 12:18:06 -07:00
+review-contributing-doc.doc.md Review contributing tutorial: add last-reviewed, .ai.md fragment type, prek provenance 2026-04-21 08:53:41 -07:00
+review-index-doc.doc.md C0: doc review — index.md, add ringtail to infra overview 2026-05-06 06:14:40 -07:00
+review-navidrome-doc.doc.md C0: review navidrome reference doc 2026-04-18 20:25:19 -07:00
+review-ollama-doc.doc.md C0: review ollama doc — refresh image, models, last-reviewed 2026-05-01 10:42:33 -07:00
+ringtail-sway-fuzzel.bugfix.md C0: ringtail — restore sway default keybindings, fix fuzzel border config 2026-04-23 12:16:02 -07:00
+rotate-fly-deploy-token-shell-examples.doc.md C0: rotate-fly-deploy-token — fish+bash one-shot, op validator gotcha 2026-05-04 13:42:57 -07:00
+runner-logs-auth.feature.md Fetch job logs via SSH to indri instead of Forgejo web endpoint 2026-04-18 17:08:46 -07:00
+shower-main-sha-rebuild.infra.md C0: shower — rebuild from main SHA (post-PR-349 retag) 2026-05-11 13:55:25 -07:00
+tailscale-main-sha-rebuild.infra.md C0: tailscale main-SHA rebuild for ringtail proxyclass 2026-05-06 06:52:39 -07:00
+transmission-doc-review.doc.md C0: transmission doc — review and correct storage/monitoring details 2026-04-29 11:00:01 -07:00
+valkey-main-tag-bump.infra.md C0: valkey — bump kustomization tags to main-branch SHA 2026-05-01 17:47:16 -07:00
+zot-v2.1.16.infra.md C0: zot — upgrade indri registry to v2.1.16 2026-05-04 17:41:07 -07:00
.gitkeep Add towncrier changelog system (#86) 2026-02-03 11:48:13 -08:00
alloy-v1.16.0.infra.md Alloy V1.16.0 (#345) 2026-05-01 08:05:37 -07:00
cleanup-cv-docs-minikube-artifacts.misc.md C1: clean up cv + docs minikube artifacts (#343) 2026-04-29 15:18:39 -07:00
dagger-0-20-6-runner-image-alpine.infra.md Bump Dagger to 0.20.6 and migrate runner-job-image to Alpine container.py 2026-04-21 08:28:18 -07:00
doc-review-replicating-blumeops.doc.md C1: doc review — replicating-blumeops tutorial (#350) 2026-05-11 16:11:35 -07:00
forgejo-runner-v12-8-server-connections.infra.md Upgrade forgejo-runner to v12.8, adopt server.connections, and clean up docs (#338) 2026-04-20 09:03:54 -07:00
homepage-to-ringtail.infra.md C1: migrate homepage dashboard to ringtail k3s 2026-05-10 20:37:03 -07:00
migrate-cv-docs-to-indri.infra.md C1: migrate cv + docs from minikube to indri-native (#342) 2026-04-29 14:55:11 -07:00
migrate-devpi-to-indri.infra.md Migrate devpi from minikube to indri (launchd) (#341) 2026-04-29 13:38:36 -07:00
mirror-tailscale-container.infra.md C1: mirror tailscale container locally for ringtail proxyclass (#347) 2026-05-06 06:50:31 -07:00
prowler-iac-mutelist.infra.md Address 6 critical Prowler IaC findings (mute + grafana RBAC tighten) (#340) 2026-04-29 10:43:32 -07:00
review-cc-observability-stack-audit-2026-05-11.infra.md C1: review CC observability-stack-audit (extend to k3s) (#353) 2026-05-11 16:10:39 -07:00
review-ringtail-flake-2026-05-11.infra.md C1: ringtail — weekly flake.lock update (#352) 2026-05-11 16:13:07 -07:00
service-review-mealie-2026-05-11.infra.md C1: service review — mealie (v3.12.0 deployed; upstream v3.17.0) (#351) 2026-05-11 16:12:36 -07:00
shower-app-deploy.bugfix.md C1: deploy adelaide-baby-shower-app to ringtail k3s (#349) 2026-05-11 13:47:18 -07:00
shower-app-deploy.feature.md C1: deploy adelaide-baby-shower-app to ringtail k3s (#349) 2026-05-11 13:47:18 -07:00
shower-app-deploy.infra.md C1: deploy adelaide-baby-shower-app to ringtail k3s (#349) 2026-05-11 13:47:18 -07:00
shower-v1.1.0.feature.md C1: deploy shower v1.1.0 (phases + guest memories) (#354) 2026-05-11 20:08:03 -07:00
update-tooling-deps-2026-04.doc.md C1: SHA-pin tooling dependencies (2026-04 cycle) (#344) 2026-04-30 16:51:43 -07:00
update-tooling-deps-2026-04.infra.md C1: SHA-pin tooling dependencies (2026-04 cycle) (#344) 2026-04-30 16:51:43 -07:00
valkey-mirror.infra.md Mirror valkey 8.1 locally for paperless and immich (#346) 2026-05-01 17:40:03 -07:00