Repository navigation
Résilience aux réseaux lents et aux micro-coupures (ADR 0085) - #112
Conversation
The full player state comes back with every command; on a slow train network its size adds latency. Tokens travel in the Authorization header, never in a cookie. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkYb6E3TzRejDQJxsqQ7ix
- Each attempt times out after 8 s; network errors, 502/504, non-API 503 and short 429 are retried for up to 15 s with the same body, hence the same idempotency key, so the server replays instead of double-applying. - One command key per gesture, reused by the new Retry button. - Three-level network state (online, unstable, offline) derived from requests, with a /sante probe and a 2 s debounce on browser offline. - Resync on reconnection and when the app comes back to the foreground; background token renewal, a single session opening at a time. - The table can be prepared offline; fusion and economy stay disabled. - Waiting tiers (bricks drawing closer after 1 s, slow-network notice after 4 s), network errors shown without shake, status pill in every screen header with last sync time. - Prefetch catalogue silhouettes and covers when idle; persistent storage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkYb6E3TzRejDQJxsqQ7ix
…ts plan Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkYb6E3TzRejDQJxsqQ7ix
…ories npm audit --audit-level=high started failing on new advisories for vite 8.3.0-8.3.2 and undici 8.0.0-8.12.1; the lockfile was unchanged by this branch, so master is affected too. Non-breaking npm audit fix: vite 8.3.7, undici 8.12.4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkYb6E3TzRejDQJxsqQ7ix
|
CI rouge sur « PWA (TypeScript) » : l’échec ne vient pas de cette PR. L’étape Correctif intégré à la PR (784c823) : Generated by Claude Code |
…EC advisories cargo audit started failing on advisories published after master's last run (same findings on master). Semver-compatible updates fix 8 of 9: ctutils, rustls, rustls-webpki, tokio, webpki-roots, webpki-root-certs, yoke-derive. libsqlite3-sys (RUSTSEC-2026-0459) remains: it is only in Cargo.lock through sqlx-sqlite, never compiled, and needs sqlx 0.9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkYb6E3TzRejDQJxsqQ7ix
|
CI rouge sur « API et tâches (Rust) » : l’échec ne vient pas de cette PR. L’étape Correctif intégré (908bee7) : mises à jour compatibles de Ce qui bloque encore : RUSTSEC-2026-0459 (
Generated by Claude Code |
…compiled libsqlite3-sys is only in Cargo.lock through sqlx-sqlite, referenced by sqlx-macros without being enabled, like rsa (RUSTSEC-2023-0071). The fix needs sqlx 0.9. Approved by the owner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkYb6E3TzRejDQJxsqQ7ix
Résumé
Pour jouer dans le train. Dépend de l’ADR 0085 (PR du dépôt Design, même branche), qui remplace partiellement l’ADR 0041.
Point d’appui côté serveur :
debuter_commanderetrouve une commande déjà traitée avant de contrôlerversion_etat. Renvoyer la même clé rejoue donc la même réponse, sans double effet.Technique
502,504,503qui ne vient pas de l’API,429dont leRetry-Afterne dépasse pas 5 s. Jamais un400,401,403ou409. Le corps est identique à chaque essai, donc la clé aussi.avecCledanspartie.ts), réutilisée par « Réessayer » jusqu’à une réponse du serveur.reseau.ts: état à trois niveaux (en ligne, instable, hors ligne) déduit des requêtes. Une réponse qui tarde plus de 3 s rend le réseau instable ; le passage hors ligne attend 2 s de coupure annoncée par le navigateur ; une sonde/santeguette le retour du réseau (de 2 à 30 s).saveData) ;navigator.storage.persist().CompressionLayer(gzip et brotli). Les jetons passent par l’en-têteAuthorization, jamais par un cookie : pas d’exposition à BREACH.Interface
animation-check; aucun mouvement en mode réduit) ; après 4 s, « Le réseau est lent, nous insistons… », sur la table comme pendant le rituel du pli.Vérification
cargo fmt --check,clippy -D warnings,cargo test --workspace(avec un nouveau test de compression) etcargo sqlx prepare --checkpassent.npm run lintpasse (un seul avertissement, qui existait déjà), ainsi quetypechecketnpm test(131 tests ; nouveaux : client de l’API,reseau, préchargement, table hors ligne, retour du réseau, « Réessayer » avec la même clé).check_identity: 0 erreur.Pas de changement de contrat. Une API compressée reste compatible avec les anciennes PWA.
Generated by Claude Code