v0.2.12-pre.003
This commit is contained in:
250
deltas/0.2.12/pre.003.md
Normal file
250
deltas/0.2.12/pre.003.md
Normal file
@@ -0,0 +1,250 @@
|
||||
<!-- 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.
|
||||
Reference in New Issue
Block a user