# Delta `0.2.5-rel.001` — publication stable Wallet foundation ## Base requise Base validée : ```text v0.2.5-pre.010-fix.003 ``` avec : ```text workspace.package.version = "0.2.5-pre.10.fix.3" ``` Le checkpoint opérateur final du 20 août 2026 est vert : ```text cargo fmt --all OK python3 scripts/audit_rust_workspace_rules.py General Rust rule audit clean Rust export completeness audit 0 candidate(s) KSP workspace Rust rule audit clean cargo check --workspace OK cargo clippy --workspace --all-targets OK cargo test -p ksp-wallet-lib OK unit 58 passed / 1 ignored dependency_boundary 3 passed public_api 9 passed doctests 2 passed cargo test --workspace OK ``` Le dernier audit Cargo confirme également : ```text ed25519-dalek 3.0.0 <- ksp-wallet-lib direct ed25519-dalek 2.2.0 <- solana-keypair 3.1.2 <- ksp-wallet-lib solana-keypair 3.1.2 <- ksp-wallet-lib comme unique parent KSP direct solana-address 2.7.0 <- solana-keypair 3.1.2 <- solana-pubkey 4.3.0 via ksp-core-lib ``` ## Objectif Publier la release stable `0.2.5 — Wallet foundation` sans ajouter de capacité fonctionnelle après la candidate validée. `rel.001` est strictement publicationnelle : - passage du workspace à la version Cargo stable `0.2.5` ; - publication stable de `ksp-wallet-lib` et du format `.kspwallet` V1 ; - ajout de l'entrée stable `0.2.5` au CHANGELOG ; - clôture `[X]` de `0.2.5` dans le ROADMAP ; - passage du plan `012` au statut historique clôturé ; - passage de la matrice `validation/008` au verdict final positif ; - passage de `KSPWALLET_V1.md` de candidate à spécification normative V1 stable ; - passage de `ksp-wallet-lib` au statut Stable dans l'inventaire ; - synchronisation du prompt `0.2.6` comme prochaine entrée officielle ; - synchronisation du TODO `0.2.11` : après stabilisation de la Price Desk offchain, intégrer la capacité de prix dans Wallet Desk sans dupliquer récupération/normalisation. Aucun fichier Rust, wire, paramètre cryptographique, dependency ou feature n'est modifié par `rel.001`. ## Version Cargo `workspace.package.version` passe de : ```text 0.2.5-pre.10.fix.3 ``` à : ```text 0.2.5 ``` Le header de `Cargo.toml` passe de version 162 à 163. ## Surface stable publiée `0.2.5` stabilise notamment : - `ksp-wallet-lib` comme propriétaire KSP du Wallet natif ; - `.kspwallet` V1 JSON UTF-8 strict, Base64url sans padding et limite documentaire bornée ; - capabilities VIEW/OWNER cryptographiquement indépendantes ; - Pubkey/alias/notes protégés lorsque le wallet est verrouillé ; - Argon2id v19 avec paramètres sérialisés et profil de création `65 536 KiB / 3 / 1` ; - XChaCha20-Poly1305 pour wrapping et compartments ; - autorité Ed25519 OWNER distincte de la keypair Solana ; - compartments `owner_control`, `metadata`, `secret` ; - create/open/inspect mémoire et fichier ; - persistence create/import no-clobber et replacement administratif capability-bound ; - signature Solana OWNER sans getter de secret ; - alias/notes protégés ; - rotations OWNER/VIEW ; - révocation forte VIEW avec nouveau `K_metadata` ; - détection `wallet.state_conflict` des handles stale/mauvaises cibles ; - inspection/import/export Solana CLI JSON et Base58 de keypair complète ; - spécification autonome `docs/formats/KSPWALLET_V1.md` et vecteurs publics ; - canaris adversariaux et reproduction externe des primitives/vecteurs ; - normalisation Rust workspace et audit structurel `scripts/audit_rust_workspace_rules.py` ; - dépendance directe KSP `ed25519-dalek 3.0.0`, avec `2.2.0` transitive conservée par `solana-keypair 3.1.2`. Les frontières restent : ```text ksp-wallet-lib -> ksp-core-lib ksp-wallet-lib -> ksp-logging-lib ksp-wallet-lib -X-> Config/Transport/ExecutionPolicy/Store/Tauri Pubkey publique via ksp-core-lib solana-keypair encapsulée dans Wallet ``` ## Fichiers ajoutés ```text deltas/0.2.5/rel.001.md ``` ## Fichiers modifiés ```text Cargo.toml CHANGELOG.md ROADMAP.md crates/ksp-wallet-lib/README.md docs/000-README.md docs/architecture/004-COMPONENT_INVENTORY.md docs/formats/KSPWALLET_V1.md docs/plans/000-README.md docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md docs/plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md docs/validation/000-README.md docs/validation/008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md prompts/000-README.md ``` ## Fichiers supprimés Aucun. ## Décisions de clôture Aucune nouvelle décision cryptographique ou fonctionnelle Wallet n'est introduite par `rel.001`. La publication confirme : 1. `.kspwallet` V1 devient le format natif stable de Wallet ; 2. `ksp-wallet-lib` reste autonome de Config et du réseau ; 3. VIEW/OWNER et la séparation owner-control/metadata/secret restent le contrat V1 ; 4. la coexistence Dalek `3.0.0` direct / `2.2.0` transitive Solana est acceptée tant qu'upstream l'impose ; 5. `cargo fmt --all` reste l'autorité de formatage Rust et l'audit Python contrôle uniquement les conventions structurelles complémentaires ; 6. `0.2.6` ouvre Wallet Desk par audit/sizing ; 7. `0.2.11` doit, après validation de la Price Desk spécialisée, réutiliser la capacité de prix offchain dans Wallet Desk sans duplication de la logique propriétaire. ## Validation finale après application Le delta change `Cargo.toml` et la documentation mais aucun fichier Rust. Avant création du tag stable, exécuter néanmoins le gate complet de publication : ```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 `cargo tree` ne sont pas requis à nouveau par `rel.001` puisque les dependencies/features sont identiques à `pre.010-fix.003`; leur dernier état est déjà enregistré dans `docs/validation/008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md`. ## Commit et tag stable Après succès du gate final : 1. vérifier le working tree ; 2. créer le commit de release : ```text v0.2.5-rel.001 ``` 3. créer le tag stable : ```text v0.2.5 ``` 4. pousser le commit puis le tag vers le dépôt canonique. Aucun tag intermédiaire de prerelease/fix/rel n'est nécessaire. ## Suite Après le tag stable `v0.2.5`, ouvrir : ```text 0.2.6-pre.001 ``` avec : ```text prompts/011-V0_2_6_START_PROMPT.md ``` La première tranche reste un audit/brainstorming/sizing avant implémentation lourde de `ksp-app-wallet-desk`.