0.1.0-0-pre.4
This commit is contained in:
127
deltas/0.1.0/0-pre.4.md
Normal file
127
deltas/0.1.0/0-pre.4.md
Normal file
@@ -0,0 +1,127 @@
|
||||
<!-- 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.
|
||||
Reference in New Issue
Block a user