# Delta `0.2.6-pre.013` — intégration / compliance / sécurité / smoke ## Objet Consolider les preuves transversales de Wallet Desk avant le polish visuel et la documentation finale : frontières Config/Wallet/Transport, inventory/path adversarial, DTO/IPC secrets, capabilities Tauri, dependency firewall et smoke Devnet de composition réel. ## Changements - `workspace.package.version` passe à `0.2.6-pre.13` ; - ajout de `tests/release_compliance.rs` : - interdiction des bypass `std::env`, `reqwest`, Solana crates et `tracing` direct côté backend ; - audit frontend sans filesystem/dialog guest, réseau direct, storage/clipboard secret ou noms `KSP_SECRET_WALLET_PASS_*` ; - audit global des DTO de réponse contre password/key material/ciphertext ; - capability Tauri limitée à `core:default` + `tracing:default` ; - firewall du manifest Wallet Desk contre dépendances `solana-*`, `reqwest` et `tracing` directes ; - renforcement des tests inventory/path : - inventory non récursif ; - suffixe `.kspwallet` exact ; - casse/backup/nested/directory ignorés ; - traversal, absolute, nested, suffixe invalide et identifiant vide rejetés à la sélection ; - ajout du smoke `tests/wallet_desk_devnet_smoke.rs`, opt-in/ignored : - charge le composite Wallet Desk et `ConfigEnvironment` ; - résout Wallet et Transport en provenance `Composite` ; - crée un `.kspwallet` réel VIEW+OWNER sous le répertoire Config effectif ; - inspecte locked puis ouvre VIEW ; - exécute `getBalance(confirmed)` via `HttpTransportPool` ; - supprime le wallet canari après la requête ; - ajout de `tokio/macros` aux features locales Wallet Desk pour le test async opt-in ; - création de `docs/validation/009-V0_2_6_WALLET_DESK_COMPLIANCE.md` et indexation dans `docs/validation/000-README.md` ; - correction des index `docs/000-README.md` et `docs/plans/000-README.md` pour refléter la séquence désormais réelle `pre.014` polish puis `pre.015` clôture ; - `shell_phase`, badge et footer réalignés sur `pre.013-integration-compliance` ; - `ROADMAP.md`, `CHANGELOG.md` et `docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md` restent inchangés. ## Sécurité / architecture Le smoke cross-crates vit dans Wallet Desk, surface d'orchestration légitime, et non dans Config ou Transport. Le test ne lit aucune variable KSP directement : `KSP_WALLETS_DIRECTORY` est consommée par `ConfigEnvironment` conformément à l'ownership Config. Aucun secret supplémentaire ne traverse IPC. Aucune permission Tauri Dialog/FS n'est accordée au frontend. Aucun accès RPC n'est ajouté au frontend. ## Validation opérateur ```bash cargo fmt --all python3 scripts/audit_rust_workspace_rules.py cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-app-wallet-desk cargo test --workspace cargo tree -p ksp-app-wallet-desk --depth 1 cargo tree -p ksp-app-wallet-desk -d cargo tree -i ksp-wallet-lib cargo tree -i ksp-onchain-transport-lib cargo tree -i tauri-plugin-dialog KSP_WALLETS_DIRECTORY=var/wallet-desk-pre013-smoke \ cargo test -p ksp-app-wallet-desk \ --test wallet_desk_devnet_smoke \ -- --ignored --nocapture ``` `cargo tauri dev` n'est pas obligatoire pour cette tranche si le runtime `pre.012` déjà communiqué reste la dernière preuve UI, car `pre.013` ne change aucune interaction métier ; il reste acceptable comme contrôle supplémentaire. Aucun `cargo tauri build` avant `pre.015`.