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

4.8 KiB

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é :

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 :

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 :

#[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 :

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 :

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 :

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 :

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

Les lignes fonctionnelles finales attendues restent :

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.