v0.1.3-pre.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md -->
|
||||
<!-- version: 5 -->
|
||||
<!-- version: 6 -->
|
||||
|
||||
# Plan `0.1.3` — Configuration foundation
|
||||
|
||||
@@ -1580,7 +1580,7 @@ Implémentation candidate livrée par `pre.002` :
|
||||
- un path inexistant est accepté à ce stade, un path vide ou un path existant non répertoire est refusé ;
|
||||
- le registre `file_id`, `--filemap`, JSON, schemas, profils et environnement restent strictement hors de `pre.002`.
|
||||
|
||||
La validation utilisateur de cette implémentation reste requise avant l'ouverture de `pre.003`.
|
||||
Validation utilisateur acquise après `pre.002-fix.001` : `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --workspace --all-targets`, `cargo test --workspace` et les trois vues `cargo tree` demandées sont propres. La seule alerte initiale `missing_docs` du test d'intégration a été corrigée par `pre.002-fix.001` puis revalidée sans warning.
|
||||
|
||||
### `0.1.3-pre.003` — registre logique `file_id -> filename`
|
||||
|
||||
@@ -1597,6 +1597,23 @@ Objectif unique : rendre les noms physiques remplaçables sans modifier l'identi
|
||||
- tests du registre et des overrides ;
|
||||
- aucune lecture JSON/schema encore nécessaire.
|
||||
|
||||
Implémentation candidate livrée par `pre.003` :
|
||||
|
||||
- `ConfigFileId` possède l'identité logique stable et valide une nomenclature ASCII minuscule segmentée par `.` ;
|
||||
- `ConfigFileKind::{Config, Schema}` détermine exclusivement la racine physique utilisée ;
|
||||
- `ConfigFileDescriptor` conserve `file_id`, kind et filename relatif ;
|
||||
- `ConfigFileRegistry::defaults()` enregistre uniquement les deux fichiers actuellement connus : `cfg.std.logging -> std.logging.json` et `schema.std.logging -> std.logging.schema.json` ;
|
||||
- un descriptor Config doit utiliser un `file_id` `cfg.*`, un descriptor Schema un `file_id` `schema.*` ;
|
||||
- `ConfigFileRegistry::from_args(...)` possède le parsing répétable `--filemap=<file_id>=<filename>`, ignore les arguments étrangers et applique le dernier override d'un même ID ;
|
||||
- un override ne peut pas créer un ID inconnu : il remplace uniquement le filename d'un descriptor possédé par Config ;
|
||||
- `ConfigFileRegistry::with_filename_override(...)` fournit le même mécanisme par API programmatique ;
|
||||
- les filenames doivent rester relatifs à leur root, sans composant `.` / `..`, préfixe ou racine absolue ; les sous-répertoires relatifs normaux restent autorisés ;
|
||||
- `ConfigFileRegistry::resolve_path(...)` joint le filename à `cfgpath` ou `schemapath` selon le kind, sans lire le fichier ;
|
||||
- l'unicité des `file_id`, les erreurs d'ID/mapping et les overrides config/schema sont couverts par tests unitaires et API publique ;
|
||||
- aucune dépendance externe, lecture JSON, validation schema ou `.env` n'est introduite par cette tranche.
|
||||
|
||||
La validation utilisateur de `pre.003` reste requise avant l'ouverture de `pre.004`.
|
||||
|
||||
### `0.1.3-pre.004` — `ksp-logging-lib` : modèle public multi-output
|
||||
|
||||
Objectif unique : compléter les **contrats/settings publics** de Logging sans encore implémenter tout le routing runtime.
|
||||
|
||||
Reference in New Issue
Block a user