16 KiB
Prompt de démarrage 0.3.6 — consolidation des POC plateforme/réseau et baseline 0.4.x
1. Base exacte et cible
Partir uniquement de la version stable/taggée :
v0.3.5
Ce prompt accompagne la stable 0.3.5. Il doit être utilisé uniquement après validation du delta stable, commit de release et publication effective du tag v0.3.5. L'archive ZIP téléchargée depuis ce tag devient alors la baseline autoritaire de la session 0.3.6.
Une archive annoncée comme téléchargement ZIP du tag Gitea est autoritaire conformément à CMD-GIT-003 et CMD-GIT-004; l'absence de .git n'est pas un défaut.
Version cible :
0.3.6
Première tranche attendue :
0.3.6-alpha.1
alpha.1 est obligatoirement le gate de cadrage : audit de la stable 0.3.5, inventaire des résultats réellement validés de 0.3.0 à 0.3.5, identification des duplications/abstractions encore injustifiées, sizing, risques, validations et création du plan actif 0.3.6 avant toute consolidation lourde.
2. Sources de vérité
Lire intégralement, dans cet ordre :
RULES.md
ROADMAP.md
CHANGELOG.md
docs/000-README.md
Puis au minimum :
docs/rules/RULES_GENERAL.md
docs/rules/RULES_RUST.md
docs/rules/RULES_PROJECT.md
docs/rules/RULES_DOCUMENTATION.md
docs/rules/FILE_CONTRACTS.md
docs/rules/VERSION_WORKFLOW.md
docs/rules/RULES_COMMANDS.md
docs/rules/RULES_VALIDATION_MATRIX.md
docs/rules/RULES_SESSION_PLANNING.md
docs/rules/PROMPT_STRUCTURE.md
Architecture et résultats POC :
docs/architecture/012-MODULAR_LAYERING_AND_OWNERSHIP.md
docs/architecture/013-NETWORK_AND_SERVER_ARCHITECTURE.md
docs/architecture/014-UROBURAS_TARGET_ARCHITECTURE.md
docs/architecture/015-PLATFORM_POC_ARCHITECTURE.md
docs/architecture/016-V0_2_0_CONSOLIDATED_BASELINE.md
docs/studies/012-PLATFORM_POC_SEQUENCE.md
docs/studies/019-UROBURAS_FUNCTIONAL_OWNERSHIP_CLASSIFICATION.md
docs/studies/020-UROBURAS_CRATE_DECOMPOSITION_STUDY.md
docs/studies/022-UROBURAS_IMPLEMENTATION_DEPENDENCY_ORDER.md
docs/studies/023-V0_3_0_PLATFORM_POC_AUDIT.md
docs/studies/024-V0_3_1_TAURI_ANDROID_SNAKE_AUDIT.md
docs/studies/025-V0_3_3_ANDROID_NATIVE_MULTI_ABI_AUDIT.md
docs/studies/026-V0_3_5_WEBTRANSPORT_QUIC_STACK_AUDIT.md
docs/studies/027-V0_3_5_REALTIME_TRANSPORT_MEASUREMENT.md
Plans et preuves :
docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md
docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md
docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md
docs/plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md
docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md
history/0.3.0/
history/0.3.1/
history/0.3.3/
history/0.3.4/
history/0.3.5/
0.3.6-alpha.1 crée docs/plans/006-V0_3_6_POC_CONSOLIDATION_PLAN.md; ce plan devient ensuite l'autorité prévisionnelle active de la version.
3. État hérité attendu de 0.3.5
La stable 0.3.5 doit fournir la fin de la vague POC plateforme/réseau sans avoir commencé Uroburas.
Décisions plateforme attendues :
- Desktop natif SDL3 comme runner de référence ;
- Web direct sous Vite/TypeScript + Rust/WASM validé avec Snake ;
- Tauri Android conservé comme POC de référence/comparaison, pas comme voie Android productive par défaut ;
- Android productif orienté SDL3 natif + Java/JNI ;
- pipeline Android natif multi-ABI piloté par Cargo/Gradle, sans script Python de build ;
minSdk 21conservé et compatibilité 16 KB 64 bits déjà prouvée dans0.3.3;- Tauri Desktop
0.3.2toujours différé tant qu'aucun bénéfice produit/monétisation explicite ne justifie cette distribution.
Décisions réseau attendues :
game-realtime-transport-lib
reliable + ordered binary contract
├── game-realtime-websocket-lib
│ baseline/fallback
└── game-realtime-webtransport-lib
retained second backend
- WebSocket/Tokio/tokio-tungstenite reste la baseline et le fallback de référence ;
- WebTransport/QUIC est retenu comme second backend fiable ;
- le client navigateur/WASM WebTransport a été prouvé contre le serveur Rust natif ;
- le backend WebTransport cross-compile pour Android ARM64/API 21 ;
- cette preuve Android ne vaut pas smoke runtime WebTransport sur appareil ;
- les datagrams WebTransport restent backend-spécifiques, non fiables et non ordonnés ;
- le fallback WebTransport -> WebSocket appartient à la composition, pas au gameplay ni au backend WebTransport ;
- les mesures loopback caractérisent les wrappers mais ne constituent pas un classement général ni une prédiction Internet/mobile.
Toujours hors de la baseline : codec wire métier final, protocole session joueur/room, reconnect/resync, snapshots/deltas gameplay, prediction/reconciliation, matchmaking et simulation authoritative.
4. Mission 0.3.6
Réconcilier les POC 0.3.x en une baseline technique claire et minimale prête à accueillir Uroburas 0.4.x, sans transformer cette version en développement du jeu lui-même.
La version doit répondre à quatre questions :
- quelles décisions des POC sont désormais des choix durables du projet ?
- quelles crates/apps restent utiles comme composants, références ou outils de validation ?
- quelles abstractions/duplications peuvent réellement être consolidées parce qu'au moins deux consommateurs conservés le justifient ?
- quelle baseline précise doit être transmise à
0.4.xpour commencer Uroburas Mode 1 sans réouvrir les POC déjà tranchés ?
La consolidation ne signifie pas « factoriser tout ce qui se ressemble ». Une duplication observée peut rester volontaire lorsque les consumers ont des lifecycles ou plateformes différents.
5. Invariants à préserver
Architecture modulaire
Conserver la séparation :
engine kernel
technical capabilities
game-systems
game-specific
platform adapters
providers
server services
tooling
Aucune crate Uroburas monolithique n'est introduite dans 0.3.6.
Réseau
Conserver :
transport
↓
wire codec
↓
session protocol
↓
synchronization
↓
authoritative simulation
0.3.6 peut documenter ou consolider les frontières déjà prouvées, mais ne doit pas profiter de la consolidation pour implémenter les couches supérieures.
Plateformes
Ne pas rouvrir automatiquement Tauri Desktop, Tauri iOS, Windows/macOS/iOS natifs ou un nouveau host uniquement parce qu'ils figurent dans des études anciennes. Une nouvelle cible demande encore un environnement réel et une question technique ouverte.
6. Scope inclus
Le scope candidat comprend :
- audit exhaustif des résultats
0.3.0à0.3.5; - matrice « retained/reference/deferred/remove » des POC et composants techniques ;
- réconciliation de l'architecture durable avec les décisions réellement validées ;
- revue des duplications Web/WASM, Android, runners et realtime ;
- extraction/factorisation uniquement lorsqu'au moins deux consumers conservés et un besoin partagé réel la justifient ;
- suppression d'une abstraction ou d'un artefact POC uniquement lorsque son absence de valeur durable est démontrée et que les preuves/historiques restent conservés ;
- clarification des capacités nécessaires avant Uroburas Mode 1 ;
- préparation d'une baseline
0.4.xsans implémenter le gameplay Uroburas ; - documentation des décisions différées et de leurs conditions de réouverture ;
- préparation du prompt de la première version
0.4.xretenue lorsque la cible est suffisamment connue.
7. Hors scope
Sauf défaut bloquant découvert pendant la consolidation, ne pas introduire :
- gameplay Uroburas ;
- Mode 1, Mode 2 ou Mode 3 jouable ;
- simulation authoritative ;
- protocole session joueur/room ;
- matchmaking ;
- auth complète ;
- persistence gameplay ;
- snapshot/delta définitif ;
- prediction/reconciliation/rollback ;
- Redis/NATS/Kafka ;
- orchestration Kubernetes ;
- nouvelle stack Web/API ;
- nouveau backend realtime ;
- remplacement de WebSocket ou WebTransport ;
- nouveau framework générique de plugins/transports ;
- nouvelle plateforme non nécessaire à la consolidation.
8. Questions de consolidation obligatoires
alpha.1 doit produire une matrice couvrant au minimum :
engine-v1-*: quelles responsabilités sont réellement stables ?- Snake/Reflex : quels POC restent utiles comme tests de régression ou références ?
- Web direct : quelles parties sont réellement réutilisables ?
- Tauri Android : référence à conserver telle quelle ou surface à isoler davantage ?
- Android SDL3/Java/JNI : quelle baseline productive exacte transmettre à
0.4.x? - assets/logging : duplication restante justifiant une extraction ?
- realtime : contrat commun, deux backends, fallback et datagrams sont-ils placés au bon niveau ?
- tooling/smokes : lesquels doivent rester comme preuves durables ?
- documentation : quelles études POC sont historiques et quelles décisions doivent être promues vers architecture/règles ?
0.3.2différée : les conditions de réouverture ont-elles changé ?
Chaque proposition de refactor doit nommer les consumers réels qu'elle sert.
9. Baseline 0.4.x attendue
La fin de 0.3.6 doit rendre explicite, sans encore l'implémenter :
- la première version
0.4.xà ouvrir ; - le mode Uroburas concerné, actuellement Mode 1 Challenge sauf révision justifiée ;
- les capabilities techniques déjà disponibles ;
- les capabilities manquantes réellement nécessaires à cette première tranche produit ;
- l'ownership attendu de ces capabilities ;
- les POC conservés comme témoins de non-régression ;
- les plateformes réellement visées par la première version produit ;
- les points volontairement reportés à Mode 3/Mode 2 ou à une version ultérieure.
Ne pas réserver de nouvelles possibilités spéculatives « au cas où ».
10. Documentation README/USAGE
Relire DOC-CRATE-* pour chaque composant conservé ou consolidé.
La consolidation doit corriger les documentations devenues fausses ou historiques, mais ne crée pas de README/USAGE vides par cérémonie.
Pour chaque crate/app durable :
- README si responsabilité/frontière/points d'entrée ont une valeur durable ;
- USAGE si préconditions/commandes/API sont non triviales ;
- simple référence au document central si une documentation locale supplémentaire serait redondante.
11. Validation et responsabilité
Les audits statiques peuvent être exécutés par le générateur. Les builds, tests et smokes finaux restent côté utilisateur conformément à CMD-BUILD-005 et ne sont jamais déclarés réussis sans sortie réelle.
Dès qu'un fichier Rust ou Cargo change :
cargo fmt --all
cargo fmt --all -- --check
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
Les tests restent ciblés par défaut. cargo test --workspace --all-targets --all-features est réservé aux jalons larges prévus dans le plan ou à un changement transverse qui le justifie.
Toute commande nécessitant un cd reste dans un sous-shell (cd ... && ...).
Ne pas utiliser npm run build comme gate manuelle d'une app Tauri : les hooks Tauri possèdent leurs builds frontend. Les hosts Web directs non-Tauri conservent leur workflow Vite/npm propre lorsque la tranche les touche réellement.
12. Deltas, history, changelog et roadmap
Conserver :
0.3.6-alpha.N
0.3.6-alpha.N.fix.M
0.3.6-beta.N
0.3.6-beta.N.fix.M
0.3.6-rc.N
0.3.6-rc.N.fix.M
0.3.6
Chaque delta indique sa base, son scope, ses fichiers et ses validations attendues.
history/0.3.6/<jalon>.md est créé uniquement par la tranche suivante ou son fix après validation réelle du jalon précédent.
CHANGELOG.md reste normalement silencieux avant la RC. ROADMAP.md reste macroscopique ; le plan 0.3.6 porte le découpage fin.
Un défaut fermé produit .fix.N. Une validation propre permet de poursuivre vers la tranche planifiée suivante. La session doit fermer au minimum 0.3.6 jusqu'à sa stable.
13. Cadrage alpha.1 obligatoire
Avant tout refactor ou suppression :
- auditer la stable
v0.3.5et ses historiques ; - inventorier les composants introduits/conservés dans
0.3.0à0.3.5; - produire une matrice retained/reference/deferred/remove avec justification ;
- inventorier les duplications observées et les consumers concernés ;
- vérifier les frontières des dépendances actuelles avec
cargo treeseulement là où cela éclaire une décision ; - identifier les documents d'architecture à promouvoir/réconcilier ;
- établir la baseline
0.4.xattendue ; - définir les gates proportionnelles à chaque consolidation ;
- créer
docs/plans/006-V0_3_6_POC_CONSOLIDATION_PLAN.md; - produire un forecast souple jusqu'à la stable et redécouper avant tout delta trop lourd.
Aucune suppression ou factorisation transverse n'est autorisée avant cette matrice.
14. Forecast initial non contraignant
Le plan alpha.1 peut fusionner, scinder ou supprimer ces tranches selon l'audit réel.
0.3.6-alpha.1 — audit global et plan de consolidation
- audit stable
0.3.5; - matrice des POC/composants ;
- duplications et abstractions à challenger ;
- baseline
0.4.xcandidate ; - plan actif et validations.
0.3.6-alpha.2 — consolidation plateforme/documentation
Si justifié par alpha.1 :
- réconcilier Web direct, Tauri de référence, SDL Desktop et Android productif ;
- promouvoir les décisions plateforme vers architecture durable ;
- retirer uniquement les généralisations réellement inutiles ;
- conserver les POC nécessaires comme témoins.
0.3.6-alpha.3 — consolidation réseau/capabilities
Si nécessaire :
- réconcilier les décisions WebSocket/WebTransport dans l'architecture durable ;
- vérifier les frontières backend/contrat/composition ;
- supprimer ou déplacer uniquement une abstraction dont le mauvais ownership est démontré ;
- ne pas implémenter wire/session/synchronization.
Cette tranche peut disparaître si 0.3.5 laisse déjà la documentation et l'ownership suffisamment consolidés.
0.3.6-alpha.4 — baseline 0.4.x
Si un delta séparé reste justifié :
- synthèse technique prête pour Uroburas ;
- capabilities disponibles/manquantes ;
- ownership initial ;
- plateformes produit candidates réellement justifiées ;
- aucune fonctionnalité Uroburas jouable.
0.3.6-beta.1 — validation large
- workspace complet si du code/build a été consolidé ;
- smokes représentatifs des chemins conservés ;
- graphes de dépendances pour les frontières modifiées ;
- vérification que les POC conservés restent fonctionnels.
0.3.6-beta.2 — consolidation finale pré-RC
- documentation durable ;
CHANGELOG.mdseulement selon les règles de transition vers RC ;ROADMAP.mdsi le statut macro change ;- historique beta ;
- prompt de la première version
0.4.xsi la cible est figée.
0.3.6-rc.1 — candidate gelée
- aucun nouveau scope ;
- gate RC proportionnelle à la consolidation réellement effectuée ;
- vérification du prompt
0.4.x; - corrections uniquement selon
VER-RC-*.
0.3.6 — stable
Promotion mécanique autant que possible : version stable, historique RC, changelog stable, clôture du plan, roadmap, delta final et ajustement mécanique du prompt 0.4.x.
15. Critère de réussite de 0.3.6
La version est réussie si 0.4.x peut commencer sans ambiguïté sur :
- les plateformes réellement retenues ;
- les POC conservés comme références ;
- les transports realtime et leur ownership ;
- les abstractions réellement justifiées ;
- les capabilities déjà disponibles ;
- les capabilities manquantes à développer avec le premier jeu réel ;
- les décisions différées et leurs conditions de réouverture.
Le succès n'exige pas une factorisation maximale. Une baseline plus petite, explicite et prouvée est préférable à un framework général construit à partir d'hypothèses.