166 lines
5.1 KiB
Markdown
166 lines
5.1 KiB
Markdown
<!-- file: deltas/0.1.3/pre.001-fix.003.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta 0.1.3-pre.001-fix.003
|
||
|
||
## Base requise
|
||
|
||
Livraison précédente appliquée et commitée :
|
||
|
||
```text
|
||
0.1.3-pre.001-fix.002
|
||
```
|
||
|
||
Ce correctif reste documentaire et doit être validé avant toute ouverture de `pre.002`.
|
||
|
||
## Type de livraison
|
||
|
||
```text
|
||
ksp-doc-0.1.3-pre.001-fix.003.zip
|
||
```
|
||
|
||
## Objectif
|
||
|
||
Corriger le dimensionnement du plan `0.1.3` afin que les prereleases prévues restent compatibles avec la règle KSP de petites tranches d'environ 15–20 minutes de travail effectif, et rendre explicites les prereleases qui modifient `ksp-logging-lib` pour la non-régression multi-sink/routing.
|
||
|
||
Aucune décision fonctionnelle validée dans `pre.001-fix.001/.002` n'est annulée.
|
||
|
||
## Version Cargo
|
||
|
||
Ce correctif modifie uniquement la documentation de planification.
|
||
|
||
Conformément à `VER-ID-008`, `workspace.package.version` reste :
|
||
|
||
```text
|
||
0.1.3-pre.1
|
||
```
|
||
|
||
Identifiant de livraison/commit :
|
||
|
||
```text
|
||
0.1.3-pre.001-fix.003
|
||
```
|
||
|
||
## Fichiers ajoutés
|
||
|
||
- `deltas/0.1.3/pre.001-fix.003.md`
|
||
|
||
## Fichiers modifiés
|
||
|
||
- `docs/plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md` — version documentaire 3 -> 4 ;
|
||
- `docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md` — version documentaire 8 -> 9 ;
|
||
- `docs/plans/000-README.md` — version documentaire 10 -> 11.
|
||
|
||
## Correction de `pre.002`
|
||
|
||
`pre.002` n'agrège plus le bootstrap et le registre de fichiers.
|
||
|
||
Elle est limitée à :
|
||
|
||
```text
|
||
création ksp-config-lib
|
||
ConfigBootstrapOptions
|
||
default cfgpath = config
|
||
default schemapath = config/schemas
|
||
--cfgpath
|
||
--schemapath
|
||
validation/tests bootstrap
|
||
```
|
||
|
||
Le registre logique est déplacé en `pre.003`.
|
||
|
||
## Nouvelle `pre.003` — registre `file_id`
|
||
|
||
Cette tranche possède exclusivement :
|
||
|
||
```text
|
||
ConfigFileId
|
||
ConfigFileKind
|
||
ConfigFileDescriptor
|
||
ConfigFileRegistry
|
||
file_id -> filename
|
||
--filemap=<file_id>=<filename>
|
||
validation des overrides
|
||
```
|
||
|
||
Aucune lecture JSON/schema n'est requise dans cette tranche.
|
||
|
||
## Tranches `ksp-logging-lib` explicites
|
||
|
||
Les ajouts/modifications Logging nécessaires ne sont plus regroupés dans une seule prerelease vague.
|
||
|
||
### `pre.004` — contrats/settings multi-output
|
||
|
||
- console configurable ;
|
||
- plusieurs outputs fichier ;
|
||
- `output_id` unique ;
|
||
- level/targets/domains par output ;
|
||
- format/ANSI/rotation ;
|
||
- validation publique des settings ;
|
||
- aucune dépendance Logging -> Config.
|
||
|
||
### `pre.005` — runtime multi-sink + routing
|
||
|
||
- création réelle de 0..N sinks fichier ;
|
||
- console indépendante ;
|
||
- routing/filter par output, level, target, domain ;
|
||
- non-blocking/guards ;
|
||
- conservation du subscriber unique, takeover et hot reload transactionnel ;
|
||
- tests de non-régression.
|
||
|
||
Le schema `std.logging.json` n'est gelé qu'ensuite, en `pre.006`, sur la surface Logging effectivement stabilisée.
|
||
|
||
## Découpage révisé
|
||
|
||
```text
|
||
pre.002 crate Config + bootstrap cfgpath/schemapath
|
||
pre.003 registre file_id -> filename + --filemap
|
||
pre.004 Logging : contrats/settings multi-output
|
||
pre.005 Logging : runtime multi-sink + routing/filter
|
||
pre.006 JSON/JSON Schema + std.logging.json
|
||
pre.007 globals + profils + default_profile
|
||
pre.008 compositions génériques par file_id
|
||
pre.009 .env + process env + resolver ${...}
|
||
pre.010 sensibilité + real/safe/provenance
|
||
pre.011 adapter Config -> Logging
|
||
pre.012 management + persistence JSON/.env
|
||
pre.013 ownership audits + robustesse
|
||
pre.014 clôture
|
||
```
|
||
|
||
Le nombre de prereleases n'est pas une cible à minimiser. Toute tranche qui devient manifestement supérieure au budget d'environ 15–20 minutes doit être scindée explicitement.
|
||
|
||
## Invariants conservés
|
||
|
||
- `ksp-config-lib` reste l'unique manager KSP des fichiers Config et variables applicatives ;
|
||
- `cfgpath`/`schemapath` restent bootstrap-only ;
|
||
- `file_id` reste l'identité logique stable, filename reste remplaçable ;
|
||
- process env > `.env` > fallback ;
|
||
- `${KSP_VAR}` / `${KSP_VAR:-fallback}` restent le modèle d'interpolation ;
|
||
- secrets conservent valeur réelle + représentation sûre/redacted ;
|
||
- Config construit les contrats Logging sans posséder le routing Logging ;
|
||
- `ksp-logging-lib` conserve subscriber/layers/writers/lifecycle/guards ;
|
||
- `LoggingGuard` reste orchestration-owned ;
|
||
- `0.1.4` reste la release prévue pour `ksp-app-config-desk`.
|
||
|
||
## Validations exécutées
|
||
|
||
Sur le delta documentaire :
|
||
|
||
- contrôle des headers `file:` / `version:` ;
|
||
- contrôle que les versions documentaires progressent d'une unité ;
|
||
- contrôle que `pre.002` ne contient plus le registre `file_id` ;
|
||
- contrôle que `pre.003` possède le registre et `--filemap` ;
|
||
- contrôle que `pre.004` et `pre.005` mentionnent explicitement les modifications `ksp-logging-lib` ;
|
||
- contrôle que `std.logging.json`/son schema arrivent après ces tranches Logging ;
|
||
- contrôle du nouveau découpage jusqu'à `pre.014` ;
|
||
- contrôle que `Cargo.toml` n'est pas livré par ce fix.
|
||
|
||
## Validations non exécutées
|
||
|
||
Aucune commande Cargo n'est déclarée réussie pour ce correctif documentaire. Aucun code Rust, manifest ou fichier runtime n'est modifié.
|
||
|
||
## Question ouverte avant `pre.002`
|
||
|
||
Aucune question bloquante n'est conservée par défaut. Le plan regranularisé doit être validé par le user avant ouverture de `pre.002`.
|