140 lines
4.0 KiB
Markdown
140 lines
4.0 KiB
Markdown
<!-- file: deltas/0.1.4/pre.004-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# 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.
|