62 lines
2.6 KiB
Markdown
62 lines
2.6 KiB
Markdown
<!-- file: docs/validation/001-VALIDATION_GATES.md -->
|
||
<!-- version: 5 -->
|
||
|
||
# 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 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.
|
||
|
||
La cible Web suit la même règle : aucune gate Web n'est inventée avant l'existence de son build réel.
|