Files
weirsoe-party-protocol/docs/ISSUE-188-SPA-CUTOVER-HARDENING-ARTIFACT.md
Asger Geel Weirsoee a4c0d0603d
All checks were successful
CI / test-and-quality (push) Successful in 2m55s
CI / test-and-quality (pull_request) Successful in 2m56s
feat(cutover): harden SPA asset cache busting and rollback playbook (#188)
2026-03-01 20:52:04 +00:00

48 lines
1.9 KiB
Markdown

# Issue #188 Artifact — SPA cutover hardening (asset versioning + rollback)
## Scope
Acceptance for `[READY][SPA][P11] Cutover hardening`:
1. Dokumenteret strategi for cache-busting/versionering af SPA assets i Django staticfiles/reverse proxy setup.
2. Konfigurerbar rollback-procedure for `USE_SPA_UI` (trin-for-trin, target <10 min).
3. Smoke-artefakt for både SPA on/off i samme release-vindue.
4. Ingen gameplay-ændringer.
## 1) Asset versioning/cache-busting strategi
Implementeret i SPA shell render-path:
- Konfiguration i `partyhub/settings.py`:
- `WPP_SPA_ASSET_BASE` (eksisterende)
- `WPP_SPA_ASSET_VERSION` (ny)
- `lobby/ui_views.py` injicerer `spa_asset_version` til template-context.
- `lobby/templates/lobby/spa_shell.html` appender `?v={{ spa_asset_version }}` på:
- `styles.css`
- `main.js`
Effekt:
- Ny release-version (fx SHA/tag) kan tvinge cache-miss i browser/proxy uden ændring af route.
- Rollback kan pege på tidligere stabil version-token med samme mekanisme.
## 2) Rollback playbook (`USE_SPA_UI`) — target <10 min
Dokumenteret i `docs/spa-cutover-flag.md`:
1. Sæt `USE_SPA_UI=false`.
2. Sæt `WPP_SPA_ASSET_VERSION` til sidste stabile release-token.
3. Deploy/reload app-processer.
4. Verificér legacy routes (`/lobby/ui/host` + `/lobby/ui/player`).
5. Kør hurtig smoke sanity.
6. Log trigger/timestamp/resultat i smoke artifact.
## 3) Smoke artifact for SPA OFF/ON i samme release-vindue
Dokumenteret i:
- `docs/UI_SMOKE.md` (sektion: "Samme release-vindue: SPA OFF + ON verifikation")
- `docs/STAGING_GAMEPLAY_SMOKE_ARTIFACT.md` (template udvidet med release-window check + `WPP_SPA_ASSET_VERSION`)
Krav:
- OFF-pass (legacy) og ON-pass (SPA) køres i samme deploy/release-vindue.
- Begge passes logges i samme artifact med UTC timestamps og version-token.
## Non-goals bekræftet
- Ingen gameplay-regler ændret.
- Ingen API-kontrakter ændret.
- Ingen UX-redesign; kun drift/cutover-hardening.