v0.5.1-pre.008
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user