# Delta `0.2.5-pre.010-fix.003` — alignement audit Rust sur rustfmt et TODO prix offchain ## 1. Base et version Base : ```text 0.2.5-pre.010-fix.002 workspace.package.version = 0.2.5-pre.10.fix.2 ``` Version technique cible : ```text workspace.package.version = 0.2.5-pre.10.fix.3 ``` Identifiant de livraison : ```text 0.2.5-pre.010-fix.003 ``` Commit attendu après validation : ```text v0.2.5-pre.010-fix.003 ``` Aucun tag stable n'est créé par ce fix et `rel.001` reste bloqué jusqu'à validation complète. ## 2. Cause du fix Après application de `fix.002`, l'opérateur a exécuté la séquence canonique : ```bash cargo fmt --all python3 scripts/audit_rust_workspace_rules.py ``` `cargo fmt` a produit un ordre valide et canonique dans les façades, mais l'audit Python a ensuite signalé 52 violations `RUST-FMT-107` parce qu'il imposait son propre tri alphabétique par **symbole exporté**. Ce contrôle était incorrect : l'audit structurel ne doit pas réimplémenter un ordre de réexports différent de celui possédé par rustfmt. Les contrôles Rust/Cargo du même checkpoint étaient par ailleurs verts : `cargo check --workspace`, Clippy, tests Wallet et tests workspace complets passent. ## 3. Correction de l'audit des réexports `RUST-FMT-107` est retiré de `audit_rust_general_rules.py`. Le script continue de vérifier les contraintes structurelles que rustfmt ne possède pas : ```text pub use avant pub(crate) use exactement une ligne vide entre les deux visibilités aucune ligne vide à l'intérieur d'un bloc homogène pas de grouped use/re-export pas de glob pas d'alias réexports internes via self:: rustdoc adjacente résolution crate-root via l'audit de complétude ``` En revanche, l'ordre intra-bloc des `use`/réexports est désormais explicitement délégué à : ```bash cargo fmt --all ``` Le script ne tente plus de trier par symbole exporté ni de reproduire l'algorithme de rustfmt. ## 4. Règles Rust synchronisées `RULES_RUST.md` précise désormais que : - `rustfmt.toml` et `cargo fmt --all` sont canoniques pour l'ordre interne des `use`/réexports ; - `RUST-FMT-005` n'impose pas son tri générique aux `use`/réexports ; - `RUST-FMT-007` ne possède que la structure `pub` / `pub(crate)` et l'espacement ; - `RUST-AUDIT-003` interdit explicitement au script de réimplémenter un ordre concurrent à rustfmt. ## 5. TODO `0.2.11` ajouté au prompt `0.2.6` Le prompt `prompts/011-V0_2_6_START_PROMPT.md` contient maintenant un TODO durable : ```text 0.2.11 après réalisation et validation de l'application spécialisée de visualisation de prix offchain, intégrer cette capacité dans ksp-app-wallet-desk ``` Le TODO précise que `0.2.6` ne doit pas anticiper cette logique et que `0.2.11` devra réauditer la frontière de partage afin de ne pas dupliquer récupération, normalisation, cache ou contrats de prix dans Wallet Desk. ## 6. Périmètre Ce fix ne modifie : ```text aucun fichier Rust aucune API runtime aucun wire .kspwallet aucune dépendance aucune primitive cryptographique ``` Le bump Cargo est requis parce que le script d'audit fait partie du toolchain de validation technique KSP. ## 7. Validation de préparation Les scripts Python modifiés doivent passer : ```bash python3 -m py_compile scripts/audit_rust_general_rules.py python3 scripts/audit_rust_workspace_rules.py ``` La validation opérateur canonique doit impérativement conserver `cargo fmt --all` **avant** l'audit structurel afin de vérifier que le script accepte exactement l'état formaté par rustfmt. ## 8. Validation opérateur requise ```bash cargo fmt --all python3 scripts/audit_rust_workspace_rules.py cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-wallet-lib cargo test --workspace ``` Les arbres de dépendances ne nécessitent pas d'être répétés pour ce fix : aucune dépendance n'est modifiée.