v0.5.1-pre.008

This commit is contained in:
2026-08-10 11:21:07 +02:00
parent a2820062eb
commit 0e05c660c6
90 changed files with 2490 additions and 1613 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: config/README.md -->
<!-- version: 22 -->
<!-- version: 24 -->
# Configuration locale
@@ -36,15 +36,17 @@ config/
├── store.config.json
├── wallet.config.json
├── execution.config.json
├── example.kb-app-demo-desktop.default.config.json
├── example.logging.config.json
├── example.transport.config.json
├── example.listeners.config.json
├── example.store.config.json
├── example.wallet.config.json
├── example.execution.config.json
├── exemples/
├── example.kb-app-demo-desktop.default.config.json
├── example.logging.config.json
├── example.transport.config.json
├── example.listeners.config.json
├── example.store.config.json
├── example.wallet.config.json
│ └── example.execution.config.json
└── schemas/
├── composition.config.schema.json
├── kb-app-demo-desktop.application.config.schema.json
├── logging.config.schema.json
├── transport.config.schema.json
├── listeners.config.schema.json
@@ -54,7 +56,7 @@ config/
└── resolved.app.config.schema.json
```
`resolved.app.config.schema.json` décrit uniquement le contrat transitoire `AppConfig/ProfileConfig` reconstruit en mémoire. Aucun binaire ne charge ce schéma comme document source applicatif.
`resolved.app.config.schema.json` décrit uniquement le contrat transitoire `AppConfig/ProfileConfig` reconstruit en mémoire. Aucun binaire ne charge ce schéma comme document source applicatif. La section `application` d'une composition reste opaque pour `ks-config`; `kb-app-demo-desktop` la valide avec `config/schemas/kb-app-demo-desktop.application.config.schema.json`.
## Defaults et overrides
@@ -110,14 +112,20 @@ Les defaults portent les timeouts, capacités de channels et `auto_reconnect`. U
`store.config.json` possède la sélection et les paramètres PostgreSQL/SQLite. Le split reste structurel : aucune migration SQL n'est introduite par `0.5.1`.
## Frontière source/runtime/public/diagnostic
Les documents source et le contrat runtime résolu peuvent contenir des valeurs sensibles après résolution des placeholders. Ils restent backend-only et ne sont ni sérialisables ni `Debug` par défaut. Les applications construisent explicitement leurs DTO publics et diagnostics bornés, sans sérialiser puis masquer un `AppConfig/ProfileConfig` complet.
Une valeur composée hérite de la sensibilité la plus forte de ses placeholders (`Secret > Internal > Public`). Une URL ou un DSN incorporant un `KS_SECRET_*`/`KB_SECRET_*` est donc secret même si le champ final ne porte pas le mot `SECRET`.
## Variables d'environnement
Les composants `ks-*` utilisent `KS_SECRET_*`, `KS_PUBLIC_*` ou `KS_*`. Les besoins réellement spécifiques à une application `kb-*` utilisent `KB_SECRET_*`, `KB_PUBLIC_*` ou `KB_*`.
Les secrets ne sont jamais écrits en clair dans le dépôt. La séparation source/runtime/public/diagnostic et le camouflage systématique sont traités après ce split.
Les secrets ne sont jamais écrits en clair dans le dépôt. Depuis `0.5.1-pre.008`, les contrats source/runtime sensibles restent backend-only, tandis que les applications exposent uniquement des DTO publics ou diagnostics explicitement bornés.
## Exemples et schémas
Les exemples sous `config/` sont des références conformes et ne sont pas chargés automatiquement. Tous les schémas actifs résident exclusivement sous `config/schemas/`.
Les exemples sous `config/exemples/` sont des références conformes et ne sont pas chargés automatiquement. Tous les schémas actifs résident exclusivement sous `config/schemas/`.
Les fichiers historiques `app.config.json`, `example.app.config.json`, `schemas/app.config.schema.json`, `example.config.json`, `schema.config.json` et `ks-pipeline-demo-scenarios.default.config.json` sont obsolètes dans l'architecture courante.

View File

@@ -11,13 +11,13 @@
"profiles": [
{
"name": "local_devnet",
"app": {
"application": {
"name": "khadhroony-bot3",
"environment": "development"
},
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
"environment": "development",
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
}
}
}
]

View File

@@ -11,24 +11,24 @@
"profiles": [
{
"name": "local_devnet",
"app": {
"application": {
"name": "khadhroony-bot3",
"environment": "development"
},
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
"environment": "development",
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
}
}
},
{
"name": "mainnet_research",
"app": {
"application": {
"name": "khadhroony-bot3",
"environment": "research"
},
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
"environment": "research",
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
}
},
"logging_profile": "mainnet_research",
"transport_profile": "mainnet_research",
@@ -39,13 +39,13 @@
},
{
"name": "mainnet",
"app": {
"application": {
"name": "khadhroony-bot3",
"environment": "mainnet"
},
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
"environment": "mainnet",
"demo": {
"live_demo_enabled": true,
"trading_demo_enabled": false
}
},
"logging_profile": "mainnet",
"transport_profile": "mainnet",

View File

@@ -29,38 +29,6 @@
"type": "string",
"minLength": 1
},
"app_section": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"environment"
],
"properties": {
"name": {
"$ref": "#/$defs/non_empty_string"
},
"environment": {
"$ref": "#/$defs/non_empty_string"
}
}
},
"demo": {
"type": "object",
"additionalProperties": false,
"required": [
"live_demo_enabled",
"trading_demo_enabled"
],
"properties": {
"live_demo_enabled": {
"type": "boolean"
},
"trading_demo_enabled": {
"type": "boolean"
}
}
},
"sources": {
"type": "object",
"additionalProperties": false,
@@ -97,19 +65,14 @@
"type": "object",
"additionalProperties": false,
"required": [
"name",
"app",
"demo"
"name"
],
"properties": {
"name": {
"$ref": "#/$defs/non_empty_string"
},
"app": {
"$ref": "#/$defs/app_section"
},
"demo": {
"$ref": "#/$defs/demo"
"application": {
"type": "object"
},
"logging_profile": {
"$ref": "#/$defs/non_empty_string"

View File

@@ -0,0 +1,43 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://khadhroony.local/schemas/kb-app-demo-desktop.application.config.schema.json",
"title": "Khadhroony Bot desktop application composition fragment",
"type": "object",
"additionalProperties": false,
"required": [
"name",
"environment",
"demo"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"environment": {
"type": "string",
"minLength": 1
},
"demo": {
"$ref": "#/$defs/demo"
}
},
"$defs": {
"demo": {
"type": "object",
"additionalProperties": false,
"required": [
"live_demo_enabled",
"trading_demo_enabled"
],
"properties": {
"live_demo_enabled": {
"type": "boolean"
},
"trading_demo_enabled": {
"type": "boolean"
}
}
}
}
}

View File

@@ -30,20 +30,15 @@
"additionalProperties": false,
"required": [
"name",
"app",
"database",
"solana",
"wallet",
"execution",
"demo"
"execution"
],
"properties": {
"name": {
"$ref": "#/$defs/non_empty_string"
},
"app": {
"$ref": "#/$defs/app_section"
},
"database": {
"$ref": "#/$defs/database"
},
@@ -55,25 +50,6 @@
},
"execution": {
"$ref": "#/$defs/execution"
},
"demo": {
"$ref": "#/$defs/demo"
}
}
},
"app_section": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"environment"
],
"properties": {
"name": {
"$ref": "#/$defs/non_empty_string"
},
"environment": {
"$ref": "#/$defs/non_empty_string"
}
}
},
@@ -608,22 +584,6 @@
"type": "boolean"
}
}
},
"demo": {
"type": "object",
"additionalProperties": false,
"required": [
"live_demo_enabled",
"trading_demo_enabled"
],
"properties": {
"live_demo_enabled": {
"type": "boolean"
},
"trading_demo_enabled": {
"type": "boolean"
}
}
}
}
}