-
Require CDN_BASE_URL everywhere so no cover URL can expire
-
server: adopt lint block, fix clippy, fmt
-
Format the tree with rustfmt and add the lint + supply-chain gates
-
Decompose AppState Phase 2: migrate storage to slices
-
server: split public image content into a separate CDN bucket (S1)
-
Scan-then-promote uploads to immutable content keys (C1)
-
server: gallery N+1 + ImageId, de-truncate aggregates, keyset paginator
-
Type the S3 bucket noun and harden multipart/delete (ultra-fuzz Run 11 Storage)
-
server: seal S3 keys behind a typed builder; close storage A+ gaps (ultra-fuzz Run #1 --deep Phase 3)
-
server: make gallery confirm idempotent (STOR-S1)
-
server: Tier 0 creator theming + fold in Run 18 storage work
-
server: fold in outstanding working-tree changes
-
Run #14 remediation: governor sweeper, scan/storage/payments hardening
-
server: gallery/carousel, promo-validator, fuzz #11/#12 remediations, embed port, observability