0.5.1-pre.006

This commit is contained in:
2026-08-10 02:44:24 +02:00
parent b6a286a4df
commit 34a670eaec
72 changed files with 5589 additions and 1932 deletions

View File

@@ -1,43 +1,59 @@
<!-- file: ks-config/README.md -->
<!-- version: 8 -->
<!-- version: 9 -->
# ks-config
`ks-config` définit le contrat de configuration générale typé du workspace, son schéma JSON embarqué et les fonctions de chargement, résolution denvironnement, validation et sérialisation.
`ks-config` fournit les contrats de configuration généralistes Khadhroony Solana, les chargeurs de documents spécialisés et la résolution des compositions utilisées par les binaires.
## Responsabilités
- exposer `AppConfig` et les sections de configuration générale ;
- valider le JSON général contre `config/schemas/app.config.schema.json` ;
- appliquer les invariants métier après désérialisation ;
- charger `.env`, ou le fichier sélectionné par `KS_ENV_FILE`, depuis la racine du workspace ;
- résoudre les placeholders namespacés `${KS_*}` / `${KB_*}` et leurs fallbacks ;
- sélectionner le profil applicatif actif ;
- exporter les types généraux nécessaires au frontend avec `ts-rs`.
- charger l'environnement du workspace et résoudre les placeholders `${KS_*}` / `${KB_*}` ;
- valider les documents transport, listeners et composition contre leurs schémas sous `config/schemas/` ;
- fournir les types partagés d'endpoints, listeners et profils runtime ;
- résoudre les références d'une composition vers des profils transport/listeners ;
- reconstruire temporairement `AppConfig/ProfileConfig` pour les consommateurs existants ;
- rester indépendant de la liste des applications et workers futurs.
## Hors périmètre
## Composition
`ks-config` ne possède plus le contrat logging. `LoggingConfig`, les routes, filtres, profils logging et `config/schemas/logging.config.schema.json` appartiennent à `ks-logging`.
Le desktop possède `config/kb-app-demo-desktop.default.config.json`. Le CLI des scénarios possède `config/ks-pipeline-demo-scenarios.default.config.json`.
La crate ninitialise ni PostgreSQL, ni les transports et ne manipule aucun secret de wallet. Elle fournit uniquement la configuration générale validée à ces consommateurs.
Une composition choisit :
## Surface publique
- les documents partagés à charger ;
- le profil logging ;
- le profil transport ;
- le profil listeners ;
- temporairement les sections encore non séparées.
Les principales fonctions sont `read_config_json_file_with_environment`, `parse_config_json`, `validate_config`, `validate_config_json_schema`, `active_profile` et les sérialiseurs JSON.
Un futur worker pourra donc ajouter son propre `<binary>.default.config.json` sans créer une branche spécifique dans `ks-config`.
Les types publics couvrent les profils applicatifs, endpoints, listeners, base de données, wallet, exécution et démonstration.
## Documents spécialisés actuels
## Relations
- `config/transport.config.json` / `config/schemas/transport.config.schema.json` ;
- `config/listeners.config.json` / `config/schemas/listeners.config.schema.json` ;
- `config/logging.config.json` reste possédé par `ks-logging` ;
- `config/schemas/resolved.app.config.schema.json` décrit uniquement le contrat runtime transitoire.
- dépend de `ks-core` pour les erreurs structurées ;
- fournit les profils généraux à `ks-store`, `ks-onchain-transport`, `ks-pipeline`, `ks-wallet` et aux applications ;
- fournit à `ks-logging` les helpers génériques de chargement `.env` et de résolution des placeholders ;
- embarque [`../config/schemas/app.config.schema.json`](../config/schemas/app.config.schema.json) ;
- utilise [`../config/app.config.json`](../config/app.config.json) comme configuration générale chargée par défaut et [`../config/example.app.config.json`](../config/example.app.config.json) comme exemple minimal conforme.
Les anciens `config/app.config.json` et `config/example.app.config.json` ne sont plus des fichiers runtime.
## Statut
## API publique principale
Le split config/logging est effectif : un profil applicatif ne transporte plus de bloc logging et la sélection logging est indépendante. La prerelease suivante sépare les représentations source/runtime/public/diagnostic et ferme lexposition des secrets résolus.
- `read_composed_app_config_with_environment` ;
- `parse_composition_json`, `composition_profile`, `active_composition_profile` ;
- `read_transport_json_file_with_environment`, `transport_profile` ;
- `read_listeners_json_file_with_environment`, `listeners_profile` ;
- `compose_app_config` ;
- `load_workspace_environment`, `resolve_environment_placeholders` ;
- `AppConfig`, `ProfileConfig` pendant la phase de compatibilité.
## Frontières
`ks-logging` dépend de `ks-config` pour les helpers d'environnement, mais `ks-config` ne possède aucun type logging runtime.
`ks-onchain-transport` peut consommer directement `TransportProfileConfig`. Un worker n'a donc pas besoin d'un profil applicatif complet pour construire ses pools réseau.
Les sections database/data, wallet, execution et demo restent transitoires dans la composition jusqu'au split suivant.
## Documents