Files
games/deltas/0.1.0/0-pre.4.md
2026-09-16 01:01:09 +02:00

128 lines
4.8 KiB
Markdown

<!-- file: deltas/0.1.0/0-pre.4.md -->
<!-- version: 1 -->
# Delta 0.1.0-0-pre.4
## Base
Base déclarée : `0.1.0-0-pre.3` validée par l'utilisateur le 2026-09-16.
## Validation du delta précédent
L'utilisateur a exécuté :
```bash
cargo fmt --all
cargo fmt --all -- --check
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
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets --all-features
cargo run -p game-reflex-poc-desktop
cargo run -p game-snake-poc-desktop
```
Résultat communiqué : toutes les gates sont propres. Les tests workspace ont validé les deux tests `engine-v1-common`, le test `engine-v1-platform-api`, les deux tests Reflex et les deux tests Snake. Les smokes ont produit :
```text
Reflex POC desktop runner: score=3 frames=3
Snake POC desktop runner: length=4 frames=3
```
`0.1.0-0-pre.3` est donc accepté comme base de ce delta.
## Objectifs
- sortir tous les corps de tests unitaires de `src/` selon le modèle KSP ;
- réserver `unit_tests/` aux tests unitaires rattachés aux modules et `tests/` aux tests d'intégration/environnement/smoke ;
- rendre cette séparation mécaniquement vérifiable ;
- rendre `cargo fmt --all` obligatoire lorsqu'un delta a modifié du Rust, avant la gate `--check` ;
- remplacer les tests workspace systématiques par une sélection ciblée par défaut ;
- introduire le socle de diagnostics structurés fondé sur `tracing`, `tracing-subscriber` et `tracing-appender` ;
- utiliser ce socle dans les runners et dans les tests sans initialisations globales concurrentes.
## Tests hors `src/`
Les tests unitaires existants sont déplacés vers les répertoires `unit_tests/` des crates concernées. Les modules de production utilisent désormais le pattern :
```rust
#[cfg(test)]
#[path = "../unit_tests/module.rs"]
mod tests;
```
Le nouvel audit projet refuse un corps `#[test]` sous `src/` et exige qu'un `#[cfg(test)]` de production référence un fichier externe sous `unit_tests/`.
## Tracing
La nouvelle crate `crates/common/game-logging-lib` fournit :
- `init_console_tracing()` pour les applications ;
- un writer non bloquant via `tracing-appender` ;
- `LoggingWorkerGuard` pour conserver le worker vivant ;
- `with_test_tracing()` pour installer un subscriber local au test sans conflit de subscriber global.
Les deux runners Desktop initialisent désormais le tracing et les tests unitaires utilisent le helper de test commun.
## Politique des tests
La suite suivante n'est plus requise à chaque delta :
```bash
cargo test --workspace --all-targets --all-features
```
Elle reste requise au démarrage d'une nouvelle version `X.Y.Z`, à la fin d'une phase/version, après un changement transversal important ou lorsqu'il existe un doute sur la portée des tests ciblés.
## Validation exécutée pendant la préparation
Les audits Python et contrôles de structure disponibles dans l'environnement de génération sont exécutés. Les commandes Cargo finales restent exécutées par l'utilisateur.
## Commandes de validation à exécuter par l'utilisateur
Le delta modifie du Rust ; commencer obligatoirement par le formatage mutatif puis sa vérification :
```bash
cargo fmt --all
cargo fmt --all -- --check
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
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
```
Tests ciblés requis pour ce delta :
```bash
cargo test -p game-logging-lib --all-targets --all-features
cargo test -p engine-v1-common --all-targets --all-features
cargo test -p engine-v1-platform-api --all-targets --all-features
cargo test -p game-reflex-poc --all-targets --all-features
cargo test -p game-snake-poc --all-targets --all-features
```
La suite workspace complète n'est pas demandée pour `0-pre.4`, car elle vient d'être exécutée proprement sur `0-pre.3` et l'impact de ce delta est borné par les tests ciblés ci-dessus.
Les runners ont changé pour initialiser le tracing ; rejouer également :
```bash
cargo run -p game-reflex-poc-desktop
cargo run -p game-snake-poc-desktop
```
Les lignes fonctionnelles finales attendues restent :
```text
Reflex POC desktop runner: score=3 frames=3
Snake POC desktop runner: length=4 frames=3
```
Des événements `tracing` supplémentaires peuvent apparaître autour de ces lignes.
## Règle de transition
Si les validations demandées sont propres, `0.1.0-0-pre.4` est accepté et le travail passe automatiquement à `0.1.0-0-pre.5`, consacré à l'intégration SDL3 Desktop réelle.
Si une validation échoue, ne pas passer à `0-pre.5` : produire `0.1.0-0-pre.4.fix.1`, puis incrémenter le suffixe de fix si nécessaire.