Files
khadhroony-solana-project/deltas/0.2.5/pre.010-fix.003.md

134 lines
3.9 KiB
Markdown

<!-- file: deltas/0.2.5/pre.010-fix.003.md -->
<!-- version: 1 -->
# 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.