Files
games/deltas/0.1.0/0-pre.5.fix.1.md

4.7 KiB

Delta 0.1.0-0-pre.5.fix.1

Base

Base déclarée : 0.1.0-0-pre.5, non validée.

Validation du delta précédent

L'utilisateur a exécuté les gates de 0.1.0-0-pre.5 le 2026-09-16.

La validation a échoué avant toute compilation SDL3 exploitable.

Échec Cargo metadata

Le Cargo.toml racine livré par 0-pre.5 avait remplacé des métadonnées workspace existantes au lieu de les préserver.

Erreur observée :

error inheriting `authors` from workspace root manifest's `workspace.package.authors`
`workspace.package.authors` was not defined

Cette erreur empêchait :

  • cargo fmt --all ;
  • cargo fmt --all -- --check ;
  • cargo check --workspace ;
  • Clippy ;
  • les tests ciblés ;
  • les runners Desktop.

Échec des audits Rust

L'audit Rust a relevé 31 violations dans les nouveaux fichiers de 0-pre.5, notamment :

  • attributs crate-root manquants ;
  • rustdoc de réexport manquante ;
  • use ordinaires interdits par les règles du projet ;
  • réexport interne non préfixé par self:: ;
  • groupement d'import interdit ;
  • ordre/imports non conformes ;
  • lignes blanches interdites dans les fonctions.

L'audit Markdown était propre : 1 table(s), 39 file(s).

0.1.0-0-pre.5 n'est donc pas considéré validé.

Correctifs

Workspace Cargo

Le manifest racine est reconstruit à partir de la dernière baseline validée et conserve :

  • repository ;
  • authors ;
  • publish ;
  • les versions déjà retenues pour tracing, tracing-appender et tracing-subscriber ;
  • les lints Rust et Clippy du workspace.

SDL3 est ajouté sans supprimer ces métadonnées :

sdl3 = { version = "0.16.1", features = ["build-from-source"] }

L'option build-from-source évite de dépendre obligatoirement d'une installation système préalable de SDL3 sur la machine Desktop.

engine-v1-sdl

Le runtime SDL3 est corrigé pour respecter les API réelles déjà présentes dans le workspace :

  • FixedStepRunner::new reçoit un std::time::Duration ;
  • InputState::none() est utilisé comme snapshot initial ;
  • GameAction::Primary est activé via with_action ;
  • aucun ?, unwrap() ou expect() n'est utilisé ;
  • les erreurs SDL3 sont propagées explicitement ;
  • aucun use ordinaire n'est nécessaire ;
  • le réexport crate-root est documenté et passe par self::runtime::SdlRuntime ;
  • la boucle limite provisoirement sa cadence avec std::thread::sleep.

Runners Desktop

Les manifests existants sont étendus au lieu d'être remplacés.

Les runners utilisent les types réels :

  • game_reflex_poc::ReflexState ;
  • game_snake_poc::SnakeState.

Ils conservent également :

  • engine-v1-common ;
  • engine-v1-platform-api ;
  • game-logging-lib ;
  • tracing ;
  • la désactivation explicite de la monétisation Desktop pour ce POC.

Tests

Le test de configuration SDL3 reste sous unit_tests/.

Le glue de test sous src/ ne contient aucun corps de test et référence explicitement le fichier externe conformément aux règles du workspace.

Le test utilise le helper de tracing commun.

Vérifications effectuées avant livraison du fix

Dans l'environnement de génération :

General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
games.sasedev workspace audit: clean
Markdown table audit: clean (1 table(s), 39 file(s))
Cargo.toml parsing: clean

Les commandes Cargo finales restent volontairement à exécuter par l'utilisateur.

Validation à exécuter par l'utilisateur

Ce fix modifie du code Rust :

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 history

cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings

Tests ciblés :

cargo test -p engine-v1-sdl --all-targets --all-features
cargo test -p game-reflex-poc --all-targets --all-features
cargo test -p game-snake-poc --all-targets --all-features

Smokes Desktop interactifs :

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

Pour chaque runner :

  • une fenêtre SDL3 doit s'ouvrir ;
  • Escape doit fermer proprement la fenêtre ;
  • le bouton de fermeture système doit fermer proprement la fenêtre ;
  • Space doit être capturé comme GameAction::Primary sans panic ;
  • les événements de démarrage/arrêt doivent apparaître via tracing.

Règle de transition

Si toutes ces validations sont propres, 0.1.0-0-pre.5.fix.1 est accepté et le travail passe automatiquement à 0.1.0-0-pre.6.

Si une gate échoue, rester sur 0-pre.5 et produire 0.1.0-0-pre.5.fix.2.