v0.1.3-pre.014
This commit is contained in:
245
deltas/0.1.3/pre.014.md
Normal file
245
deltas/0.1.3/pre.014.md
Normal file
@@ -0,0 +1,245 @@
|
||||
<!-- file: deltas/0.1.3/pre.014.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.3-pre.014
|
||||
|
||||
## Base requise
|
||||
|
||||
Livraison précédente validée :
|
||||
|
||||
```text
|
||||
0.1.3-pre.013-fix.001
|
||||
```
|
||||
|
||||
Version technique de cette base :
|
||||
|
||||
```text
|
||||
workspace.package.version = "0.1.3-pre.13.fix.1"
|
||||
Cargo.toml header version = 58
|
||||
```
|
||||
|
||||
Validations utilisateur exécutées le 2026-08-16 :
|
||||
|
||||
```text
|
||||
cargo fmt --all OK
|
||||
cargo check --workspace OK
|
||||
cargo clippy --workspace --all-targets OK
|
||||
cargo test --workspace OK
|
||||
cargo tree -p ksp-config-lib OK
|
||||
cargo tree -p ksp-config-lib -d OK, doublon transitif syn 2/3 déjà connu
|
||||
cargo tree -p ksp-config-lib -e features OK
|
||||
cargo tree -p ksp-logging-lib OK
|
||||
```
|
||||
|
||||
`cargo test --workspace` confirme notamment 80 tests unitaires + 11 tests publics pour `ksp-config-lib`, 34 tests unitaires Logging et toutes les intégrations existantes vertes.
|
||||
|
||||
## Objet de pre.014
|
||||
|
||||
Transformer les principales frontières d'ownership Config en audits exécutables avant la clôture :
|
||||
|
||||
```text
|
||||
workspace source/manifests/config
|
||||
-> ownership audit
|
||||
-> fail cargo test on boundary regression
|
||||
|
||||
config JSON + production Rust
|
||||
-> concrete KSP/KSPB environment names
|
||||
-> .env.example inventory coverage
|
||||
```
|
||||
|
||||
Cette tranche ne crée aucun nouveau runtime Config et ne modifie aucune API métier.
|
||||
|
||||
## Audit de direction des dépendances fondatrices
|
||||
|
||||
Le nouveau test d'intégration vérifie explicitement que :
|
||||
|
||||
```text
|
||||
ksp-core-lib -X-> ksp-config-lib
|
||||
ksp-logging-lib -X-> ksp-config-lib
|
||||
```
|
||||
|
||||
La direction autorisée reste :
|
||||
|
||||
```text
|
||||
ksp-config-lib -> ksp-core-lib
|
||||
ksp-config-lib -> ksp-logging-lib
|
||||
```
|
||||
|
||||
L'audit est volontairement limité aux deux fondations qui ne doivent jamais dépendre de Config. Les futures applications/crates pourront, elles, dépendre normalement de `ksp-config-lib`.
|
||||
|
||||
## Audit des lectures d'environnement KSP/KSPB
|
||||
|
||||
Pour toutes les crates autres que `ksp-config-lib`, l'audit recherche les bypass directs simples de la frontière Config :
|
||||
|
||||
```text
|
||||
std::env::var("KSP_...")
|
||||
std::env::var("KSPB_...")
|
||||
std::env::var_os("KSP_...")
|
||||
std::env::var_os("KSPB_...")
|
||||
env::var(...)
|
||||
env::var_os(...)
|
||||
std::env::vars()
|
||||
std::env::vars_os()
|
||||
```
|
||||
|
||||
L'audit ne prétend pas interdire toute utilisation possible de `std::env` pour des informations système non applicatives. Il verrouille spécifiquement la frontière des variables KSP/KSPB et l'énumération globale qui permettrait de la contourner.
|
||||
|
||||
## Audit des noms physiques gérés
|
||||
|
||||
Les crates hors Config ne doivent pas coder en dur les ressources physiques déjà possédées par Config :
|
||||
|
||||
```text
|
||||
.env
|
||||
std.logging.json
|
||||
std.logging.schema.json
|
||||
composite.schema.json
|
||||
```
|
||||
|
||||
Un consumer doit utiliser les contrats publics, constantes et `file_id` Config plutôt que recréer localement la connaissance du layout physique.
|
||||
|
||||
L'audit ignore les lignes de commentaire Rust afin qu'une documentation locale ne soit pas confondue avec un accès runtime.
|
||||
|
||||
## Inventaire `.env.example`
|
||||
|
||||
Le test collecte automatiquement les noms KSP/KSPB concrets trouvés dans :
|
||||
|
||||
```text
|
||||
config/**/*.json
|
||||
crates/*/src/**/*.rs
|
||||
```
|
||||
|
||||
Les préfixes génériques tels que `KSP_SECRET_` ou `KSPB_PUBLIC_` ne sont pas considérés comme des variables concrètes.
|
||||
|
||||
Chaque variable runtime concrète détectée doit apparaître dans `.env.example` sous forme d'assignment active ou commentée et cette assignment doit être précédée d'un commentaire explicatif distinct des headers de fichier/version.
|
||||
|
||||
Dans l'état actuel, l'inventaire concret reste :
|
||||
|
||||
```text
|
||||
KSP_LOGS_DIRECTORY
|
||||
```
|
||||
|
||||
Aucune nouvelle variable runtime n'est introduite par `pre.014`.
|
||||
|
||||
## Réaudit de robustesse existante
|
||||
|
||||
Les tests déjà acquis avant `pre.014` couvrent notamment :
|
||||
|
||||
- JSON malformed, schema invalid et document schema-invalide ;
|
||||
- invariants sémantiques Logging ;
|
||||
- profils dupliqués/default_profile invalide/profil explicite absent ;
|
||||
- composite references et component ids invalides ;
|
||||
- filenames/mappings `file_id` invalides ;
|
||||
- `.env` syntaxiquement invalide, doublons, namespaces externes et valeurs vides ;
|
||||
- placeholders malformés, variables absentes et fallbacks ;
|
||||
- priorité process > `.env` > fallback ;
|
||||
- sensibilité `Public/Internal/Secret`, real/safe/provenance et canaries de non-divulgation ;
|
||||
- validation effective `logs_directory` et confinement des `files[].path` après interpolation ;
|
||||
- rejet d'un secret dans `std.logging` ;
|
||||
- management desired/effective/shadow, reveal explicite et persistence atomique ;
|
||||
- candidate JSON invalide sans modification du destination ;
|
||||
- permissions `.env` privées à la création Unix.
|
||||
|
||||
Aucune lacune nécessitant une nouvelle API publique n'a été identifiée dans cette tranche. Les responsabilités restent séparées entre :
|
||||
|
||||
```text
|
||||
ConfigBootstrapOptions / ConfigFileRegistry
|
||||
ConfigDocumentEngine
|
||||
ConfigEnvironment
|
||||
ConfigManagement
|
||||
ResolvedLoggingConfig adapter
|
||||
ksp-logging-lib runtime ownership
|
||||
```
|
||||
|
||||
## Règles durables
|
||||
|
||||
Ajout de :
|
||||
|
||||
```text
|
||||
KSP-CONFIG-017
|
||||
KSP-CONFIG-018
|
||||
```
|
||||
|
||||
pour figer :
|
||||
|
||||
- les audits exécutables d'ownership Config au niveau workspace ;
|
||||
- la vérification automatique de la couverture `.env.example`.
|
||||
|
||||
## Dépendances
|
||||
|
||||
Aucune nouvelle dépendance Cargo.
|
||||
|
||||
Le seul doublon transitif attendu dans le graphe Config reste `syn 2` / `syn 3` via `jsonschema`. Aucun contournement de cette dépendance n'est introduit ici.
|
||||
|
||||
## Tests ajoutés
|
||||
|
||||
Nouveau fichier :
|
||||
|
||||
```text
|
||||
crates/ksp-config-lib/tests/ownership.rs
|
||||
```
|
||||
|
||||
Quatre tests d'intégration workspace :
|
||||
|
||||
```text
|
||||
foundational_dependency_direction_does_not_point_back_to_config
|
||||
workspace_crates_do_not_read_ksp_environment_directly
|
||||
workspace_crates_do_not_hardcode_config_managed_physical_files
|
||||
dotenv_example_covers_runtime_environment_names_with_comments
|
||||
```
|
||||
|
||||
Les 80 tests unitaires et 11 tests de `tests/public_api.rs` restent inchangés ; `cargo test --workspace` exécute désormais en plus ce nouveau binaire d'intégration à 4 tests.
|
||||
|
||||
## Version technique
|
||||
|
||||
```text
|
||||
workspace.package.version = "0.1.3-pre.14"
|
||||
Cargo.toml header version = 59
|
||||
```
|
||||
|
||||
La version change car la tranche ajoute du code Rust de test participant au build/test du workspace.
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
crates/ksp-config-lib/tests/ownership.rs
|
||||
deltas/0.1.3/pre.014.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
docs/rules/RULES_KSP.md
|
||||
docs/plans/000-README.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md
|
||||
```
|
||||
|
||||
## Contrôles statiques réalisés avant livraison
|
||||
|
||||
Dans l'environnement de préparation :
|
||||
|
||||
- reconstruction de la base par application ordonnée de tous les deltas jusqu'à `pre.013-fix.001` ;
|
||||
- inventaire workspace : aucune lecture directe `std::env::var*` KSP/KSPB hors Config détectée ;
|
||||
- aucune référence physique gérée interdite détectée hors Config ;
|
||||
- `KSP_LOGS_DIRECTORY` est la seule variable runtime concrète détectée et figure dans `.env.example` avec commentaire ;
|
||||
- aucun `.env` runtime local n'est inclus dans le delta ;
|
||||
- aucune nouvelle dépendance Cargo ;
|
||||
- réapplication du delta sur la base reconstruite vérifiée séparément.
|
||||
|
||||
Aucune commande Cargo n'est déclarée réussie dans l'environnement de préparation lorsqu'elle n'y est pas disponible.
|
||||
|
||||
## Validation demandée
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test --workspace
|
||||
cargo tree -p ksp-config-lib
|
||||
cargo tree -p ksp-config-lib -d
|
||||
cargo tree -p ksp-config-lib -e features
|
||||
cargo tree -p ksp-logging-lib -d
|
||||
```
|
||||
|
||||
Après validation, `0.1.3-pre.015` pourra ouvrir la clôture : validations finales, documentation durable, changelog, nettoyage/archivage et prompt `0.1.4 — ksp-app-config-desk`.
|
||||
Reference in New Issue
Block a user