# Delta `0.1.1-pre.003-fix.001` — Cargo workspace + Clippy ## Statut Correctif de `0.1.1-pre.003` après application et validation partielle de la tranche par le user. Version technique du correctif : ```text workspace.package.version = "0.1.1-pre.3.fix.1" ``` Le périmètre fonctionnel de `pre.003` ne change pas. ## Base et validations reçues Sur `0.1.1-pre.3`, le user a exécuté avec succès : ```bash cargo fmt --all cargo check --workspace cargo test --workspace cargo tree -p ksp-core-lib cargo tree -p ksp-core-lib -d ``` Résultats communiqués : - 14 tests unitaires passent ; - 3 tests d'intégration `public_api` passent ; - `cargo tree` résout `solana-pubkey 4.3.0` puis `solana-address 2.7.0` ; - `cargo tree -d` ne rapporte aucun doublon. `cargo clippy --workspace --all-targets` échoue sur trois closures de `program_ids.rs` à cause de la règle workspace `clippy::implicit_return = deny`. ## Correction Cargo La déclaration directe suivante dans `crates/ksp-core-lib/Cargo.toml` est supprimée : ```toml solana-pubkey = { version = "4.3.0", default-features = false } ``` La dépendance appartient désormais au manifeste workspace : ```toml [workspace.dependencies] solana-pubkey = { version = "^4.3", default-features = false } ``` La crate propriétaire la consomme uniquement par héritage : ```toml [dependencies] solana-pubkey.workspace = true ``` La contrainte `^4.3` exprime la génération compatible voulue par KSP ; le patch concret reste résolu par Cargo/lockfile. ## Règles ajoutées `docs/rules/RULES_DEPENDENCIES.md` ajoute `DEP-CARGO-001` à `DEP-CARGO-005` afin de rendre obligatoire : - la centralisation des dépendances externes sous `[workspace.dependencies]` ; - l'usage de `.workspace = true` dans les crates membres ; - la centralisation des contraintes de version et options communes ; - la convention de contrainte caret `^M.m` pour une génération majeure/mineure compatible ; - la distinction entre contrainte de manifeste et résolution concrète du lockfile. ## Correction Clippy Les trois closures signalées utilisent maintenant un `return` explicite dans leur corps : - filtre générique de `program_ids(...)` ; - recherche texte `find_program_id(...)` ; - recherche typée `find_program_pubkey(...)`. Aucune signature ni sémantique de l'API publique ne change. ## Documentation `docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md` est aligné sur la nouvelle règle Cargo et documente la contrainte workspace `^4.3` au lieu d'une déclaration locale `4.3.0`. ## Fichiers modifiés ```text Cargo.toml crates/ksp-core-lib/Cargo.toml crates/ksp-core-lib/src/program_ids.rs docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md docs/rules/RULES_DEPENDENCIES.md ``` ## Fichier ajouté ```text deltas/0.1.1/pre.003-fix.001.md ``` ## Validations de ce correctif Non exécutées dans l'environnement de préparation du delta, qui ne fournit pas la toolchain Cargo/Rust du dépôt. À exécuter après application : ```bash cargo fmt --all cargo check --workspace cargo test --workspace cargo clippy --workspace --all-targets cargo tree -p ksp-core-lib cargo tree -p ksp-core-lib -d ``` ## Hors scope Ce correctif n'ajoute ni Program ID, ni dépendance, ni primitive Core supplémentaire et ne démarre pas `0.1.1-pre.004`.