# 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 d’environnement, validation et sérialisation. ## 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`. ## Hors périmètre `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`. La crate n’initialise ni PostgreSQL, ni les transports et ne manipule aucun secret de wallet. Elle fournit uniquement la configuration générale validée à ces consommateurs. ## Surface publique 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. Les types publics couvrent les profils applicatifs, endpoints, listeners, base de données, wallet, exécution et démonstration. ## Relations - 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. ## Statut 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 l’exposition des secrets résolus. ## Documents - [Utilisation](USAGE.md) - [Travaux restants](TODO.md) - [Historique](CHANGELOG.md) - [Configuration locale](../config/README.md)