# BACKLOG — phase `redfix` ## Build backlog ### M1 — investigate + isolate + classify (all six) - [ ] discourse — reproduce cold-deploy timeout/wedge in isolation; root-cause (headroom vs convergence bug vs upstream compose defect `sidekiq.depends_on: discourse`); classify. - [ ] mattermost-lts — `test_restore.py::test_restore_returns_state` in isolation: green→load flake, red→diagnose restore (recipe vs test). - [ ] mumble — `custom/test_protocol_handshake.py::test_handshake_completes_with_channel_presence` in isolation (canonical already present from today → likely flake; confirm). - [ ] bluesky-pds — warm-canonical promote routing: why `warm-bluesky-pds…` → 000 over HTTPS while container healthy internally + cold-test domain routes. Find cc-ci warm-machinery defect. - [ ] gitea — `3.5.3→3.6.0` warm advance crash (`app.ini` read-only, JWT save). Recipe vs harness. - [ ] keycloak — de-enrolled (live-warm OIDC collision). Design collision-free warm domain/namespace. ### M2 — FIX + verify all six (recipe PR or harness improvement) - [ ] discourse — fix (timeout/serialization tuning and/or recipe convergence/upstream compose PR); converges in time. - [ ] mattermost-lts — fix (stabilize if flake; diagnose+fix restore if real); green. - [ ] mumble — fix (stabilize if flake; fix recipe/test if real); green. - [ ] bluesky-pds — fix warm-routing (cc-ci branch PR); promotes. - [ ] gitea — fix so it promotes 3.6.0 (recipe PR making app.ini writable OR harness clean-redeploy fallback); promotes 3.6.0. - [ ] keycloak — harness improvement: collision-free warm domain/namespace; enroll + promote. ## Adversary findings (Adversary-owned — do not edit.)