# Delta `0.2.5-pre.005-fix.001` — collision constructeur/getter `WalletViewDescriptorV1::enabled` ## Base requise ```text livraison : 0.2.5-pre.005 workspace.package.version = "0.2.5-pre.5" ``` ## Motif Les validations opérateur de `pre.005` échouent dès `cargo check --workspace` sur `ksp-wallet-lib` avec : ```text error[E0592]: duplicate definitions with name `enabled` ``` `WalletViewDescriptorV1` déclarait simultanément : ```rust pub(crate) const fn enabled(slot_id: [u8; KSPWALLET_V1_SLOT_ID_BYTES]) -> Self pub const fn enabled(&self) -> bool ``` Rust n'autorise pas deux éléments inhérents de même nom sur un type, même lorsqu'un élément est un constructeur associé et l'autre une méthode prenant `&self`. Les erreurs `E0599` observées sur les appels `.enabled()` sont des conséquences de cette collision de définition et non une absence conceptuelle du getter. ## Correction Le getter public est conservé inchangé : ```rust pub const fn enabled(&self) -> bool ``` Le constructeur crate-private est renommé : ```rust pub(crate) const fn enabled_for_slot(slot_id: [u8; KSPWALLET_V1_SLOT_ID_BYTES]) -> Self ``` Les deux callsites internes de création du descripteur VIEW sont mis à jour dans `wallet.rs`. Ce choix conserve : - la surface publique déjà attendue `descriptor.enabled()` ; - la sémantique wire et transcript de `pre.003+` ; - les invariants VIEW/OWNER ; - les vecteurs cryptographiques et le format `.kspwallet` V1 ; - aucune modification de dépendances. ## Décision sur `solana-keypair` Aucun déplacement de `solana-keypair` vers `ksp-core-lib` n'est effectué dans ce fix. Les règles KSP autorisent `solana-keypair` comme primitive fondamentale, mais Core ne doit pas devenir un agrégateur automatique de toutes les primitives Solana autorisées. Dans l'architecture actuelle : - `Pubkey` est un value type transversal et non secret, donc son contrat via `ksp-core-lib` est justifié ; - `Keypair` possède le secret Solana et constitue une capacité de signature ; - `ksp-wallet-lib` est actuellement le composant propriétaire concret du secret, de l'ouverture et de la signature ; - les futures couches d'exécution doivent préférer une capacité de signature Wallet plutôt que recevoir une keypair brute. La propriété de `solana-keypair` sera réauditée uniquement si une autre crate KSP de bas niveau démontre un besoin concret de manipuler une keypair brute indépendamment de Wallet. ## Version Cargo Le correctif modifie du Rust de production : ```text 0.2.5-pre.5 -> 0.2.5-pre.5.fix.1 ``` ## Fichiers modifiés ```text Cargo.toml crates/ksp-wallet-lib/src/wire.rs crates/ksp-wallet-lib/src/wallet.rs ``` ## Fichiers ajoutés ```text deltas/0.2.5/pre.005-fix.001.md ``` ## Fichiers supprimés Aucun. ## Validation attendue après application ```bash cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-wallet-lib cargo test --workspace ``` Le `cargo tree` de `pre.005` reste pertinent après compilation : ```bash cargo tree -p ksp-wallet-lib cargo tree -p ksp-wallet-lib -d cargo tree -i ed25519-dalek@2.2.0 cargo tree -i solana-keypair@3.1.2 cargo tree -i solana-address@2.7.0 ``` ## Commit attendu ```text v0.2.5-pre.005-fix.001 ```