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 ;
useordinaires 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-appenderettracing-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::newreçoit unstd::time::Duration;InputState::none()est utilisé comme snapshot initial ;GameAction::Primaryest activé viawith_action;- aucun
?,unwrap()ouexpect()n'est utilisé ; - les erreurs SDL3 sont propagées explicitement ;
- aucun
useordinaire 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 ;
Escapedoit fermer proprement la fenêtre ;- le bouton de fermeture système doit fermer proprement la fenêtre ;
Spacedoit être capturé commeGameAction::Primarysans 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.