105 lines
5.0 KiB
Markdown
105 lines
5.0 KiB
Markdown
<!-- file: docs/validation/001-VALIDATION_GATES.md -->
|
||
<!-- version: 8 -->
|
||
|
||
# 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 d’un delta Rust
|
||
|
||
Lorsqu’un delta modifie du code Rust, la validation commence par un formatage mutatif volontaire :
|
||
|
||
```bash
|
||
cargo fmt --all
|
||
cargo fmt --all -- --check
|
||
```
|
||
|
||
Les modifications exclusivement produites par `cargo fmt --all` n’imposent pas d’incré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 :
|
||
|
||
```bash
|
||
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 :
|
||
|
||
```bash
|
||
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` n’est demandé systématiquement qu’au démarrage d’une nouvelle version `X.Y.Z`, vers la fin d’une phase/version, après un changement transversal important ou lorsque l’impact 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 :
|
||
|
||
```bash
|
||
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 :
|
||
|
||
```bash
|
||
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
|
||
|
||
À l’entré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 :
|
||
|
||
```bash
|
||
cargo test --workspace --all-targets --all-features
|
||
```
|
||
|
||
Le témoin Desktop Snake est construit et fumé en release :
|
||
|
||
```bash
|
||
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 :
|
||
|
||
```bash
|
||
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 n’est pas requis à chaque beta si aucun chemin dev n’a changé.
|