# 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 ```