# Delta 0.1.4-pre.004-fix.001 — correction Clippy du verrou single-instance ## Base requise ```text 0.1.4-pre.004 workspace.package.version = "0.1.4-pre.4" ``` La tranche `pre.004` a été appliquée puis validée localement. Les contrôles fournis ont montré : - `cargo fmt --all` : succès ; - `cargo check --workspace` : succès ; - `cargo test -p ksp-app-config-desk` : succès, dont le test d'API publique ; - `cargo test -p ksp-config-lib` : succès, `87` tests unitaires + `4` tests ownership + `12` tests API publique ; - `cargo tree -p ksp-app-config-desk` : exécuté ; - `cargo clippy --workspace --all-targets` : compilation réussie mais avec un warning `clippy::suspicious_open_options` dans `src/main.rs`. Ce fix corrige uniquement ce warning avant de poursuivre vers le frontend de `pre.005`. ## Version Cargo Le correctif touche un fichier Rust consommé par le runtime. Conformément à `VER-ID-007` et `VER-ID-010`, `workspace.package.version` passe de : ```text 0.1.4-pre.4 ``` à : ```text 0.1.4-pre.4.fix.1 ``` L'identifiant documentaire de livraison reste : ```text 0.1.4-pre.004-fix.001 ``` ## 1. Cause du warning Le launcher ouvre le fichier utilisé pour le verrou single-instance avec : ```rust std::fs::OpenOptions::new() .read(true) .write(true) .create(true) ``` Comme `create(true)` est demandé, Clippy exige que le comportement de troncature soit explicite. Le fichier n'est pas un fichier de contenu à réécrire : il sert uniquement de support au verrou exclusif inter-processus. Le troncage n'est donc pas souhaité. ## 2. Correction L'ouverture devient explicitement non destructive : ```rust std::fs::OpenOptions::new() .read(true) .write(true) .create(true) .truncate(false) .open(&lock_path) ``` Cette modification : - supprime l'ambiguïté signalée par `clippy::suspicious_open_options` ; - ne modifie pas le lifecycle du verrou ; - ne vide pas inutilement un fichier de lock existant ; - conserve `try_lock_exclusive()` comme mécanisme single-instance effectif. Aucune suppression du fichier de lock n'est introduite : le verrou appartient au descripteur ouvert et est libéré lorsque le processus ferme ce descripteur. ## 3. Capability tracing à venir `tauri-plugin-tracing` n'est pas encore installé dans `pre.004-fix.001`. La capability actuelle reste donc volontairement limitée à : ```json "permissions": [ "core:default" ] ``` Lors de l'introduction effective de `tauri-plugin-tracing`, prévue avec le frontend/tracing de `pre.005`, `crates/ksp-app-config-desk/capabilities/default.json` devra ajouter dans le même delta : ```text tracing:default ``` Le permissionnement ne doit pas être ajouté avant le plugin auquel il correspond. ## 4. Fichiers modifiés | Fichier | Type | Rôle | |------------------------------------------|----------|-----------------------------------| | `Cargo.toml` | build | version technique du fix | | `crates/ksp-app-config-desk/src/main.rs` | Rust | politique de troncature explicite | | `deltas/0.1.4/pre.004-fix.001.md` | Markdown | traçabilité du correctif | ## 5. Hors scope Ce correctif n'ajoute pas : - `tauri-plugin-tracing` ; - `tracing:default` ; - packages npm ; - frontend Vite/TypeScript/SCSS ; - Config/Logging runtime applicatif ; - commande Tauri ; - DTO TS-RS. Ces éléments restent dans les tranches prévues à partir de `pre.005`. ## 6. Validations demandées Après application du fix : ```bash cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-app-config-desk cargo tree -p ksp-app-config-desk ``` Le résultat attendu de `cargo clippy --workspace --all-targets` est l'absence du warning : ```text clippy::suspicious_open_options ``` Aucun test Config supplémentaire n'est requis pour cette correction localisée au launcher de l'application ; `ksp-config-lib` n'est pas modifiée.