251 lines
8.8 KiB
Markdown
251 lines
8.8 KiB
Markdown
<!-- file: deltas/0.2.12/pre.003.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.2.12-pre.003` — composite Config et bootstrap Off-chain
|
|
|
|
## 1. Base requise
|
|
|
|
Cette tranche s'applique exclusivement après :
|
|
|
|
```text
|
|
v0.2.11
|
|
+ 0.2.12-pre.001
|
|
+ 0.2.12-pre.001-fix.001
|
|
+ 0.2.12-pre.002
|
|
+ 0.2.12-pre.002-fix.001
|
|
```
|
|
|
|
Le retour opérateur du `27 août 2026` clôt proprement `pre.002-fix.001` : `cargo fmt`, installation npm, audits Rust/Markdown, `cargo check --workspace`, Clippy workspace, `cargo test -p ksp-app-solprices-desk` et `cargo tauri dev` passent sans warning Rust. `cargo test --workspace` n'a pas été rejoué dans ce retour précis et n'est pas revendiqué comme tel.
|
|
|
|
La version workspace passe à :
|
|
|
|
```text
|
|
0.2.12-pre.3
|
|
```
|
|
|
|
## 2. Responsabilité de la tranche
|
|
|
|
`pre.003` matérialise uniquement la composition Config du nouveau Desk et son bootstrap Off-chain provider-neutral :
|
|
|
|
```text
|
|
nouveau composite SOL Prices Desk
|
|
nouveau descriptor Config
|
|
registry Config 10 -> 11 descriptors
|
|
resources Config packagées 10 -> 11 dans les trois Desks
|
|
Logging du SOL Prices Desk sélectionné par composite
|
|
ResolvedOffchainTransportConfig construit au bootstrap
|
|
MarketPriceService détenu indirectement par Config
|
|
provenance Composite conservée
|
|
Diagnostics bootstrap sûrs
|
|
instrumentation frontend durable pour les contrôles existants
|
|
```
|
|
|
|
La tranche n'introduit encore aucun `MarketPriceRuntime`, row provider, observation affichée ni commande de refresh.
|
|
|
|
## 3. Composite SOL Prices Desk
|
|
|
|
Le document ajouté est :
|
|
|
|
```text
|
|
config/composite.ksp-app-solprices-desk.json
|
|
file_id = cfg.composite.ksp-app-solprices-desk
|
|
schema = schema.composite
|
|
```
|
|
|
|
Il contient exactement les profils prévus :
|
|
|
|
```text
|
|
public_keyless (default)
|
|
logging -> cfg.std.logging / console_info
|
|
offchain_transport -> cfg.std.offchain_transport / public_keyless
|
|
|
|
all_free
|
|
logging -> cfg.std.logging / console_info
|
|
offchain_transport -> cfg.std.offchain_transport / all_free
|
|
|
|
tests
|
|
logging -> cfg.std.logging / console_info
|
|
offchain_transport -> cfg.std.offchain_transport / public_keyless
|
|
```
|
|
|
|
Les composants sont résolus par `file_id`; aucun filename physique n'est connu du code applicatif.
|
|
|
|
## 4. Registry et packaging atomiques
|
|
|
|
`ksp-config-lib` enregistre le nouveau descriptor avec le schema composite existant. L'inventaire passe à **11 descriptors** : 6 documents Config et 5 schemas.
|
|
|
|
Comme `prepare_packaged_runtime` travaille sur le registry logique complet, la même tranche ajoute le nouveau resource mapping aux trois applications packagées :
|
|
|
|
```text
|
|
ksp-app-config-desk 11 resources
|
|
ksp-app-wallet-desk 11 resources
|
|
ksp-app-solprices-desk 11 resources
|
|
```
|
|
|
|
Les canaris historiques de Config Desk et Wallet Desk sont mis à jour pour rendre cette atomicité durable.
|
|
|
|
## 5. Bootstrap Config -> Off-chain
|
|
|
|
SOL Prices Desk charge son composite via `FILE_ID_COMPOSITE_KSP_APP_SOLPRICES_DESK` puis vérifie explicitement les composants obligatoires :
|
|
|
|
```text
|
|
logging -> FILE_ID_STD_LOGGING
|
|
offchain_transport -> FILE_ID_STD_OFFCHAIN_TRANSPORT
|
|
```
|
|
|
|
Le profil Logging du composite alimente le runtime Logging existant. Le profil Off-chain sélectionné est ensuite transmis à :
|
|
|
|
```text
|
|
ConfigDocumentEngine::resolve_offchain_transport_config_profile
|
|
```
|
|
|
|
Le résultat `ResolvedOffchainTransportConfig` reste détenu par l'état backend. Pour le profil default `public_keyless`, le service construit par Config expose les huit entrées provider-neutral déjà définies par `0.2.11`.
|
|
|
|
Aucune dépendance provider, URL, API key, rate limit ou logique HTTP n'est recréée dans la crate applicative.
|
|
|
|
## 6. État runtime exposé
|
|
|
|
`get_runtime_status` reste une commande de diagnostic et expose uniquement des projections sûres supplémentaires :
|
|
|
|
```text
|
|
active_composite_profile
|
|
active_logging_profile
|
|
active_offchain_profile
|
|
config_document_count
|
|
application_version
|
|
fallback_logging_active
|
|
shell_phase
|
|
startup_diagnostic sûr
|
|
```
|
|
|
|
Aucun provider individuel, prix, credential, endpoint ou payload Off-chain n'est projeté dans cette tranche.
|
|
|
|
## 7. Logging frontend durable
|
|
|
|
Conformément à `KSP-APP-027`, les contrôles frontend existants sont instrumentés via le bridge commun :
|
|
|
|
```text
|
|
clic / action utilisateur debug
|
|
transition de vue debug
|
|
demande IPC debug
|
|
fin technique IPC trace
|
|
échec contrôlé error/warn selon le chemin existant
|
|
```
|
|
|
|
Les logs ne sérialisent pas de valeurs métier ou secrètes. Le canari ajouté impose ce comportement avant l'arrivée des boutons prix : les futurs refresh row/many/all devront journaliser l'action, l'ID opaque/count/code sûr lorsque nécessaire, jamais prix brut, API key, header ou payload provider.
|
|
|
|
## 8. Tests et canaris ajoutés/étendus
|
|
|
|
`ksp-config-lib` couvre désormais :
|
|
|
|
```text
|
|
inventaire exact des 11 descriptors
|
|
public constants du nouveau composite
|
|
provenance Composite du profil Off-chain
|
|
construction du service public_keyless depuis le composite
|
|
interdiction de hardcoder le nouveau filename hors Config
|
|
```
|
|
|
|
SOL Prices Desk couvre :
|
|
|
|
```text
|
|
profils composite public_keyless / all_free / tests
|
|
mapping logging + offchain_transport exact
|
|
provenance Composite
|
|
service provider-neutral à huit entrées pour public_keyless
|
|
11 resources packagées
|
|
absence de MarketPriceRuntime avant pre.004
|
|
absence de refresh avant pre.005
|
|
logging debug des contrôles/navigation
|
|
logging debug/trace du wrapper IPC
|
|
```
|
|
|
|
## 9. Fichiers ajoutés
|
|
|
|
```text
|
|
config/composite.ksp-app-solprices-desk.json
|
|
crates/ksp-app-solprices-desk/src/offchain_runtime.rs
|
|
crates/ksp-app-solprices-desk/tests/config_composition.rs
|
|
deltas/0.2.12/pre.003.md
|
|
```
|
|
|
|
## 10. Fichiers modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-app-config-desk/tauri.conf.json
|
|
crates/ksp-app-config-desk/tests/desktop_contract.rs
|
|
crates/ksp-app-solprices-desk/package.json
|
|
crates/ksp-app-solprices-desk/tauri.conf.json
|
|
crates/ksp-app-solprices-desk/frontend/main.html
|
|
crates/ksp-app-solprices-desk/frontend/ts/main.ts
|
|
crates/ksp-app-solprices-desk/src/app_state.rs
|
|
crates/ksp-app-solprices-desk/src/bootstrap.rs
|
|
crates/ksp-app-solprices-desk/src/constants.rs
|
|
crates/ksp-app-solprices-desk/src/dto_common.rs
|
|
crates/ksp-app-solprices-desk/src/errors.rs
|
|
crates/ksp-app-solprices-desk/src/lib.rs
|
|
crates/ksp-app-solprices-desk/tests/desktop_contract.rs
|
|
crates/ksp-app-solprices-desk/tests/desktop_security.rs
|
|
crates/ksp-app-wallet-desk/tauri.conf.json
|
|
crates/ksp-app-wallet-desk/tests/desktop_contract.rs
|
|
crates/ksp-app-wallet-desk/tests/release_compliance.rs
|
|
crates/ksp-config-lib/src/lib.rs
|
|
crates/ksp-config-lib/src/registry.rs
|
|
crates/ksp-config-lib/tests/ownership.rs
|
|
crates/ksp-config-lib/tests/public_api.rs
|
|
crates/ksp-config-lib/unit_tests/offchain_transport.rs
|
|
crates/ksp-config-lib/unit_tests/registry.rs
|
|
docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md
|
|
docs/validation/015-V0_2_12_SOL_PRICES_DESK.md
|
|
```
|
|
|
|
## 11. Fichiers volontairement inchangés
|
|
|
|
```text
|
|
crates/ksp-offchain-transport-lib/**
|
|
crates/ksp-app-wallet-desk/src/**
|
|
crates/ksp-app-wallet-desk/frontend/**
|
|
crates/ksp-app-config-desk/src/**
|
|
crates/ksp-app-config-desk/frontend/**
|
|
README.md
|
|
ROADMAP.md
|
|
CHANGELOG.md
|
|
prompts/017-V0_2_12_START_PROMPT.md
|
|
```
|
|
|
|
L'intégration Off-chain de Wallet Desk reste propriétaire des tranches ultérieures. Le présent changement Wallet/Config Desk est strictement limité à la cohérence des resources packagées et de leurs canaris.
|
|
|
|
## 12. Validations exécutées dans le sandbox
|
|
|
|
Après matérialisation de la tranche et du delta :
|
|
|
|
```text
|
|
python3 scripts/audit_rust_workspace_rules.py PASS
|
|
General Rust rule audit clean
|
|
Rust export completeness audit 0 candidate
|
|
KSP workspace Rust rule audit clean
|
|
|
|
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.12
|
|
PASS
|
|
JSON parse composite/package/tauri.conf modifiés PASS
|
|
```
|
|
|
|
Le sandbox ne possède pas `cargo`; les commandes Cargo ne sont donc pas déclarées PASS localement.
|
|
|
|
## 13. Gate opérateur attendu
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
python3 scripts/audit_rust_workspace_rules.py
|
|
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.12
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-config-lib
|
|
cargo test -p ksp-app-solprices-desk
|
|
cargo test --workspace
|
|
(cd crates/ksp-app-solprices-desk && cargo tauri dev)
|
|
```
|
|
|
|
Le `cargo tauri dev` doit confirmer que le Desk démarre avec le composite default `public_keyless`, que Diagnostics affiche les profils composite/Off-chain et `11` documents Config, et qu'aucune table prix ni requête de refresh n'est encore présente.
|