Files
games/docs/validation/001-VALIDATION_GATES.md
2026-09-20 14:20:07 +02:00

5.0 KiB
Raw Permalink Blame History

Gates de validation

Responsabilité

Les audits Python peuvent être exécutés pendant la préparation d'un delta. Sauf demande explicite contraire, les commandes Cargo finales sont exécutées par l'utilisateur sur le workspace local.

Le générateur ne marque jamais une commande Cargo comme propre s'il ne dispose que du résultat d'un delta antérieur.

Gate normale dun delta Rust

Lorsquun delta modifie du code Rust, la validation commence par un formatage mutatif volontaire :

cargo fmt --all
cargo fmt --all -- --check

Les modifications exclusivement produites par cargo fmt --all nimposent pas dincrémenter // version: N, car elles font partie de la préparation du même état avant commit.

Les audits et gates de compilation restent ensuite :

python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android Web deltas history
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings

Les tests sont ciblés par défaut :

cargo test -p <crate-affectée> --all-targets --all-features

Le fichier delta énumère les crates à tester. cargo test --workspace --all-targets --all-features nest demandé systématiquement quau démarrage dune nouvelle version X.Y.Z, vers la fin dune phase/version, après un changement transversal important ou lorsque limpact réel ne permet pas de sélectionner avec confiance les tests ciblés.

Smokes Desktop

Lorsqu'un delta modifie la boucle exécutable, le runtime ou le comportement visible des runners Desktop, exécuter également :

cargo run -p game-reflex-poc-desktop
cargo run -p game-snake-poc-desktop

Les smokes cargo run ne remplacent pas la gate de tests.

Transition vers le delta suivant

Si toutes les commandes demandées sont propres, le delta courant est validé et le travail peut passer automatiquement au prochain delta de la roadmap, sauf avis contraire de l'utilisateur.

Si une commande échoue, ne pas avancer de prerelease. Produire un correctif du delta courant, par exemple 0.1.0-0-pre.3.fix.1, puis rejouer la gate demandée.

Android et Web

Le build Android n'est pas encore une gate : le projet Gradle exécutable et l'intégration SDL3/NDK restent planifiés pour une prerelease dédiée. Dès leur introduction, les tâches ciblées par module sont documentées avant d'être rendues obligatoires.

Le host navigateur direct Snake possède désormais une gate réelle. Lorsqu'il est touché, construire d'abord l'adapter WASM et ses bindings hors dépôt, puis le frontend :

cargo build -p game-snake-poc-wasm --target wasm32-unknown-unknown
wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/debug/game_snake_poc_wasm.wasm \
  --target web \
  --out-dir ../builds/sasedev-games/game-snake-poc-web/wasm \
  --out-name game_snake_poc_wasm
cd Web/game-snake-poc
npm install
npm run build

Le smoke direct utilise ensuite npm run dev et http://127.0.0.1:1434/main.html. Pour le POC Snake feature-complete, vérifier aussi : assets common + game chargés avant le statut Prêt, provenance Web/Wasm/Browser visible et mise à jour par l'input, pause sans rattrapage lors d'un masquage d'onglet, reprise propre, resize sans tick artificiel, SimpleBar, clavier et contrôles pointer/tactiles.

Lorsque 0-pre.5 touche la frontière plateforme du bridge WASM, exécuter également cargo test -p engine-v1-platform-api, cargo test -p game-snake-poc-wasm, puis un smoke cargo run -p game-snake-poc-desktop pour confirmer la non-régression SDL3. Les frontends Tauri restent pilotés par leurs hooks Tauri et ne reprennent pas cette gate manuelle.

Gate beta du POC Snake Web

À lentrée en 2-beta.1, le scope 0.3.0 est feature-complete. La gate de frontière de phase ajoute aux audits/check/Clippy la suite Cargo workspace complète :

cargo test --workspace --all-targets --all-features

Le témoin Desktop Snake est construit et fumé en release :

cargo build -p game-snake-poc-desktop --release
../builds/sasedev-games/target/release/game-snake-poc-desktop

Le host Web beta utilise également un module WASM release avant le build Vite :

cargo build -p game-snake-poc-wasm --release --target wasm32-unknown-unknown
wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_snake_poc_wasm.wasm \
  --target web \
  --out-dir ../builds/sasedev-games/game-snake-poc-web/wasm \
  --out-name game_snake_poc_wasm
(cd Web/game-snake-poc && npm install && npm run build && npm run preview)

Le smoke production ouvre http://127.0.0.1:4174/main.html et vérifie les mêmes contrats fonctionnels que le smoke vite dev : Canvas, inputs, SimpleBar, assets, provenance, lifecycle et resize. Le smoke vite dev déjà validé reste utile après un correctif touchant le plugin de dev, mais nest pas requis à chaque beta si aucun chemin dev na changé.