7.5 KiB
Delta 0.1.3-pre.014
Base requise
Livraison précédente validée :
0.1.3-pre.013-fix.001
Version technique de cette base :
workspace.package.version = "0.1.3-pre.13.fix.1"
Cargo.toml header version = 58
Validations utilisateur exécutées le 2026-08-16 :
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 :
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 :
ksp-core-lib -X-> ksp-config-lib
ksp-logging-lib -X-> ksp-config-lib
La direction autorisée reste :
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 :
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 :
.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 :
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 :
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_idinvalides ; .envsyntaxiquement 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_directoryet confinement desfiles[].pathaprè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
.envprivé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 :
ConfigBootstrapOptions / ConfigFileRegistry
ConfigDocumentEngine
ConfigEnvironment
ConfigManagement
ResolvedLoggingConfig adapter
ksp-logging-lib runtime ownership
Règles durables
Ajout de :
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 :
crates/ksp-config-lib/tests/ownership.rs
Quatre tests d'intégration workspace :
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
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
crates/ksp-config-lib/tests/ownership.rs
deltas/0.1.3/pre.014.md
Fichiers modifiés
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_DIRECTORYest la seule variable runtime concrète détectée et figure dans.env.exampleavec commentaire ;- aucun
.envruntime 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
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.