Files
khadhroony-solana-project/deltas/0.1.4/pre.001-fix.002.md

7.2 KiB
Raw Blame History

Delta 0.1.4-pre.001-fix.002 — panneau .env et validation complète de l'environnement Config

Base requise

0.1.4-pre.001-fix.001
workspace.package.version = "0.1.4-pre.1"

Ce second correctif reste exclusivement documentaire. Il complète le plan de pre.001 avant son approbation définitive et n'ouvre pas pre.002.

Les deltas historiques :

deltas/0.1.4/pre.001.md
deltas/0.1.4/pre.001-fix.001.md

restent inchangés. Le présent fix porte uniquement la correction supplémentaire demandée après validation partielle du plan.

Objet

ksp-app-config-desk doit servir de banc de validation réel de ksp-config-lib. Le plan couvrait déjà les rapports d'environnement et les mutations .env, mais ne les formulait pas encore comme un panneau fonctionnel de test/management .env avec une matrice de validation explicite.

Le correctif rend donc obligatoire un panneau Environnement / .env capable de démontrer depuis l'UI :

  • les rapports desired / effective / source / shadowing ;
  • la classification Public / Internal / Secret et les safe values ;
  • la création et la modification d'une entrée .env via ConfigManagement::set_dotenv_value() ;
  • la suppression via ConfigManagement::remove_dotenv_value() ;
  • le retour source_changed / effective_changed / shadowed_by_process_environment / reload_required ;
  • le rechargement d'un rapport frais après mutation ;
  • la priorité process > .env > fallback avec un cas de shadowing observable ;
  • l'impossibilité pour l'application de modifier l'environnement déjà hérité du processus parent ;
  • la propagation d'une mutation .env vers une nouvelle résolution Config dépendante d'un placeholder ;
  • les frontières de reveal Secret déjà prévues, sans préchargement automatique d'une ancienne valeur Secret réelle dans l'éditeur.

Aucun accès direct au fichier .env n'est ajouté à l'application.

Cas de validation Config existant

Le plan utilise un cas déjà présent dans la base stable, sans inventer de nouveau document Config :

config/std.logging.json
logs_directory = "${KSP_LOGS_DIRECTORY:-logs}"

Le panneau doit permettre de modifier KSP_LOGS_DIRECTORY via Config puis de demander une nouvelle résolution du document/profil Logging.

Deux résultats doivent être démontrables :

  1. sans valeur process prioritaire, la nouvelle valeur .env devient effective et la provenance/résolution change ;
  2. avec une valeur process prioritaire, la valeur .env désirée change mais la résolution effective reste celle du process et l'UI signale le shadowing. Ce second cas est reproductible en lançant l'application avec KSP_LOGS_DIRECTORY=<valeur-process>, puis en modifiant la même variable dans .env depuis l'UI.

Le frontend ne résout jamais ${KSP_LOGS_DIRECTORY:-logs} lui-même : l'autorité reste ksp-config-lib.

UX du panneau .env

Le panneau est composé d'au moins :

Rapport
  - variable
  - sensibilité
  - desired_safe_value
  - effective_safe_value
  - source effective
  - shadowed

Éditeur/test
  - variable existante ou nouveau nom KSP_*/KSPB_*
  - nouvelle valeur
  - Créer/Modifier
  - Supprimer
  - Recharger

Résultat de mutation
  - source_changed
  - effective_changed
  - shadowed_by_process_environment
  - reload_required

Pour un Secret :

  • le champ de saisie est traité comme sensible ;
  • l'ancienne valeur réelle n'est pas chargée automatiquement ;
  • une nouvelle valeur peut être saisie explicitement pour remplacement ;
  • la consultation d'une valeur existante utilise uniquement la commande/DTO privilégié de reveal ;
  • aucune valeur réelle ne rejoint logs, diagnostics, snapshot ou état persistant.

Frontière Tauri/Config

Le flux reste :

UI
 -> commande Tauri centralisée dans tauri.rs
 -> environment_service
 -> ConfigManagement
 -> set_dotenv_value/remove_dotenv_value/environment_report

La crate applicative ne :

  • lit pas .env avec std::fs ;
  • n'écrit pas .env avec std::fs ;
  • ne parse pas le format dotenv comme autorité ;
  • ne lit pas std::env::var* pour KSP/KSPB ;
  • ne simule pas elle-même la priorité process/.env/fallback.

Découpage souple mis à jour

Le budget cible reste environ 1520 minutes de travail effectif par prerelease. Pour éviter une tranche Environnement trop large, elle est scindée en deux :

pre.011  Environnement — rapports
         - desired/effective/source/shadow
         - sensibilité + safe values
         - table issue uniquement de Config
         - refresh/reload

pre.012  Environnement — management/test .env
         - create/update
         - remove
         - résultat de mutation
         - cas process > .env
         - cas placeholder KSP_LOGS_DIRECTORY

pre.013  Secrets privilégiés
...
pre.017  panneau Test Logging
pre.018  robustesse/extensibilité/tests desktop
pre.019  clôture candidate

pre.019 n'est pas un numéro de clôture contractuel. Les tranches restent scindables, fusionnables ou réordonnables selon la durée réelle et les dépendances rencontrées.

Critères de clôture ajoutés

La release ne pourra pas être fermée sans démonstration depuis ksp-app-config-desk de :

  • création d'une entrée .env ;
  • modification d'une entrée .env ;
  • suppression d'une entrée .env ;
  • rapport frais après chaque mutation ;
  • distinction desired/effective ;
  • source process ou .env ;
  • shadowing réel ;
  • comportement source_changed / effective_changed / reload_required ;
  • résolution Config affectée par KSP_LOGS_DIRECTORY lorsque la valeur n'est pas shadowée ;
  • absence de résolution frontend des placeholders ;
  • traitement sûr des variables Secret.

Cette matrice complète la matrice Logging déjà renforcée par pre.001-fix.001.

Fichier modifié

docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md

Le header du plan passe de version: 2 à version: 3.

Fichier ajouté

deltas/0.1.4/pre.001-fix.002.md

Version Cargo

Aucune modification de Cargo.toml.

Le correctif est documentaire uniquement ; workspace.package.version reste :

0.1.4-pre.1

L'identifiant de livraison est :

0.1.4-pre.001-fix.002

Validations du correctif

À contrôler avant livraison :

  • header file: / version: des deux fichiers ;
  • plan en version: 3 ;
  • absence de modification de Cargo.toml ;
  • absence de modification des deltas pre.001 et pre.001-fix.001 ;
  • présence explicite du panneau Environnement / .env ;
  • présence des quatre indicateurs du ConfigEnvironmentChangeReport ;
  • create/update/remove uniquement via ConfigManagement ;
  • cas de shadowing process > .env ;
  • cas de résolution ${KSP_LOGS_DIRECTORY:-logs} ;
  • aucune lecture/écriture .env directe attribuée à l'application ;
  • découpage Environnement sur deux prereleases d'environ 1520 minutes ;
  • critères de clôture .env explicites ;
  • équilibre des fences Markdown ;
  • archive limitée au plan modifié et au nouveau delta.

Aucune commande Cargo n'est requise spécifiquement pour ce correctif documentaire. Les validations Cargo globales restent celles prévues au passage effectif vers les tranches de développement et à la clôture de la release.