1.9 KiB
1.9 KiB
Issue #188 Artifact — SPA cutover hardening (asset versioning + rollback)
Scope
Acceptance for [READY][SPA][P11] Cutover hardening:
- Dokumenteret strategi for cache-busting/versionering af SPA assets i Django staticfiles/reverse proxy setup.
- Konfigurerbar rollback-procedure for
USE_SPA_UI(trin-for-trin, target <10 min). - Smoke-artefakt for både SPA on/off i samme release-vindue.
- 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.pyinjicererspa_asset_versiontil template-context.lobby/templates/lobby/spa_shell.htmlappender?v={{ spa_asset_version }}på:styles.cssmain.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:
- Sæt
USE_SPA_UI=false. - Sæt
WPP_SPA_ASSET_VERSIONtil sidste stabile release-token. - Deploy/reload app-processer.
- Verificér legacy routes (
/lobby/ui/host+/lobby/ui/player). - Kør hurtig smoke sanity.
- 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.