Files
khadhroony-solana-project/deltas/0.1.4/pre.012.md
2026-08-16 16:26:03 +02:00

119 lines
4.7 KiB
Markdown

<!-- file: deltas/0.1.4/pre.012.md -->
<!-- version: 1 -->
# Delta `0.1.4-pre.012` — management/test `.env`
## Statut
Tranche livrée pour validation locale.
`0.1.4-pre.011-fix.001` est considérée validée : `fmt`, `check`, `clippy`, les tests Config Desk, les tests Config, les cinq audits ownership et les tests d'API publique sont propres ; le runtime Environnement retourne correctement les trois variables `.env` actuellement configurées.
## Objectif
Rendre fonctionnelle la zone de management/test `.env` du panneau **Environnement / `.env`**, exclusivement via `ConfigManagement`, afin de démontrer les créations/modifications/suppressions, le rapport de changement et la priorité `process > .env` sans lecture/écriture directe du fichier par l'application.
## Modifications
### Backend
- ajout du DTO TS-RS `ConfigEnvironmentChangeDto` ;
- ajout des services applicatifs :
- `environment::set_value()` -> `ConfigManagement::set_dotenv_value()` ;
- `environment::remove_value()` -> `ConfigManagement::remove_dotenv_value()` ;
- projection sûre de `ConfigEnvironmentChangeReport` :
- `source_changed` ;
- `effective_changed` ;
- `shadowed_by_process_environment` ;
- `reload_required` ;
- ajout des commandes Tauri centralisées :
- `set_environment_value` ;
- `remove_environment_value` ;
- classification de sensibilité déléguée à `ConfigSensitivity::from_variable_name()` ;
- logging `debug` limité au nom de variable, à l'opération, à la sensibilité et aux booléens du rapport ;
- aucune valeur soumise n'est journalisée.
### Frontend
- transformation de la vue Environnement en surface de management/test complète ;
- formulaire permettant :
- sélection d'une variable existante via la table/datalist ;
- saisie d'un nouveau nom `KSP_*` / `KSPB_*` ;
- création/modification ;
- suppression avec confirmation ;
- aucune ancienne valeur n'est préchargée dans le champ d'édition ;
- les nouvelles saisies Secret sont masquées ;
- affichage explicite du dernier `ConfigEnvironmentChangeReport` ;
- rechargement du rapport Config après chaque mutation ;
- destruction/réinitialisation propre de DataTables avant remplacement des lignes ;
- clic sur une ligne du rapport = sélection du nom uniquement ;
- instrumentation `debug`/`trace` des actions et transitions sans contenu de valeur.
### Tests
- classification de sensibilité de mutation par le contrat Config ;
- stabilité des labels d'opération `set` / `remove` ;
- conservation des tests de projection sûre/redacted du rapport Environnement.
### Documentation
- `pre.011` marquée réalisée dans le plan ;
- `pre.012` marquée en cours ;
- README/USAGE/TODO alignés sur la nouvelle surface de mutation `.env` ;
- scénario de validation du shadowing documenté.
## Sécurité / ownership
- l'application ne lit ni ne parse `.env` directement ;
- l'application ne modifie jamais l'environnement process hérité ;
- Config reste seul responsable de la validation des noms, de l'encodage `.env`, de la persistence atomique et du calcul desired/effective ;
- le rapport ordinaire continue à redacter les Secrets ;
- le flux reveal de valeurs réelles reste hors périmètre et réservé à `pre.013`.
## Scénarios de validation
### Mutation normale
1. créer une variable KSP/KSPB de test depuis le formulaire ;
2. vérifier `source_changed=true` et `effective_changed=true` lorsqu'aucune valeur process ne la masque ;
3. vérifier que le rapport rechargé affiche la variable avec `source=dotenv` ;
4. supprimer la variable ;
5. vérifier qu'elle disparaît du rapport si elle n'existe pas dans le process.
### Shadowing `process > .env`
Lancer ponctuellement Config Desk avec `KSP_LOGS_DIRECTORY` défini dans le process, puis modifier la même variable dans `.env` via le panneau.
Résultat attendu :
```text
source_changed = true
effective_changed = false
shadowed_by_process_environment = true
reload_required = false
```
Le desired `.env` doit changer alors que l'effective reste issue du process.
### Placeholder Logging
Sans override process, modifier `KSP_LOGS_DIRECTORY` depuis le panneau puis recharger le panneau Profils. `/logs_directory` doit refléter la nouvelle valeur/provenance `.env` dans l'effective sûre. Le runtime Logging déjà installé n'est pas hot-reloadé dans cette tranche ; cette responsabilité reste prévue en `pre.016`.
## Version technique
```text
workspace.package.version = "0.1.4-pre.12"
```
## Validation locale demandée
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-app-config-desk
cargo test -p ksp-config-lib
cargo tree -p ksp-app-config-desk
cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json
```