# Delta `0.2.12-pre.002` — scaffold `ksp-app-solprices-desk` ## 1. Base requise ```text v0.2.11 + 0.2.12-pre.001 + 0.2.12-pre.001-fix.001 ``` La version workspace passe à : ```text 0.2.12-pre.2 ``` conformément au workflow des prereleases non-fix. ## 2. Objectif Créer uniquement le gabarit desktop Tauri de `ksp-app-solprices-desk` avant toute composition Off-chain fonctionnelle. La responsabilité de la tranche est limitée à : ```text package Rust mixte lib/bin launcher single-instance mince assemblage Tauri splash commun KSP shell principal Prices / Diagnostics bootstrap Config standard + Logging bridge Logging frontend ports Vite/HMR 1434/1435 capabilities minimales packaging du registry Config courant canaris desktop/security/public API ``` ## 3. Frontières préservées `pre.002` n'introduit volontairement aucun : ```text MarketPriceService ResolvedOffchainTransportConfig composite cfg.composite.ksp-app-solprices-desk table provider DTO prix refresh row/many/all reqwest provider SDK fetch frontend auto-refresh localStorage/sessionStorage plugin dialog/fs/http/shell frontend ``` Le composite SOL Prices Desk et son bootstrap Off-chain restent exclusivement propriétaires de `pre.003`. ## 4. Scaffold Tauri Identité créée : ```text package Rust ksp-app-solprices-desk lib ksp_app_solprices_desk_lib bin ksp-app-solprices-desk productName KSP SOL Prices Desk identifier com.sasedev.ksp-app-solprices-desk Vite HTTP 1434 strict Vite HMR 1435 frontendDist ../../../builds/khadhroony-solana-project/ksp-app-solprices-desk/dist windows splash + main permissions core:default + tracing:default plugin desktop tauri-plugin-tracing uniquement ``` `main.rs` reste un launcher mince avec verrou single-instance et normalisation du current working directory de développement vers la racine workspace. Les commandes Tauri sont centralisées dans `src/tauri.rs` : ```text emit_frontend_log runtime_status splash_frontend_ready ``` `runtime_status` est volontairement limité au scaffold et ne projette encore aucun état Off-chain. ## 5. Config et Logging transitoires de scaffold Le gabarit doit déjà respecter le splash commun et le runtime Logging KSP. Avant l'introduction du composite dédié en `pre.003`, le Desk résout donc le document Logging standard via `ksp-config-lib`, avec le même fallback console borné que les Desks existants. Cette décision ne préjuge pas la composition finale : `pre.003` remplacera ce bootstrap transitoire par le composite `logging + offchain_transport` prévu par le plan. Le bundle `pre.002` embarque les **10 ressources** du registry Config courant. Il n'invente pas le onzième composite avant son descriptor. La synchronisation à 11 ressources restera atomique dans `pre.003` pour Config Desk, Wallet Desk et SOL Prices Desk. ## 6. Frontend Le frontend crée seulement le shell prévu : ```text Prices placeholder explicite non fonctionnel Diagnostics version / phase / count Config / Logging sûr ``` Le header suit le contrat KSP `SOL Prices Desk — `. La navigation contient `Prices` et `Diagnostics` mais aucune table DataTables ni interaction prix. Le splash reprend le lifecycle commun piloté par Rust et le bridge Logging frontend. Aucun fichier de font n'est ajouté au nouveau package ; le scaffold utilise une police système pour le texte du splash. ## 7. Dépendances La crate ajoute uniquement les dépendances nécessaires au gabarit actuel : ```text chrono fs2 ksp-config-lib ksp-core-lib ksp-logging-lib serde tauri tauri-plugin-tracing tokio(time) ts-rs ``` Le frontend n'ajoute que les dépendances réellement utilisées par le scaffold : ```text @fortawesome/fontawesome-free @tauri-apps/api bootstrap simplebar ``` DataTables et `tauri-plugin-dialog` ne sont pas ajoutés prématurément. ## 8. Canaris ajoutés Tests unitaires : ```text CommandErrorDto sans context sensible frontend log levels/targets contrôlés splash timings/order bornés ``` Tests d'intégration : ```text public API run au crate-root ports 1434/1435 + strictPort product/identifier/frontendDist/hooks propres lib + bin + main launcher mince splash + main 10 ressources Config courantes, aucun composite solprices anticipé capabilities core + tracing uniquement absence Off-chain/reqwest/plugin dialog absence fetch/storage/dialogues navigateur commandes centralisées tauri.rs absence MarketPriceService/refresh dans Rust applicatif ``` ## 9. Fichiers ajoutés ```text crates/ksp-app-solprices-desk/** deltas/0.2.12/pre.002.md ``` Les bindings TS-RS et autres artefacts générés ne sont pas versionnés. ## 10. Fichiers modifiés ```text Cargo.toml docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md docs/validation/015-V0_2_12_SOL_PRICES_DESK.md ``` Le plan marque `pre.002` comme « implémenté ; gate opérateur à confirmer ». ## 11. Fichiers volontairement inchangés ```text config/** crates/ksp-app-config-desk/** crates/ksp-app-wallet-desk/** crates/ksp-config-lib/** crates/ksp-offchain-transport-lib/** ROADMAP.md CHANGELOG.md prompts/017-V0_2_12_START_PROMPT.md ``` Aucun document Config, registry ou resource d'un Desk existant n'est modifié avant la tranche atomique `pre.003`. ## 12. Validations exécutées dans le sandbox Avant la rédaction finale du delta : ```text python3 scripts/audit_rust_workspace_rules.py PASS python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.12 PASS ``` Le sandbox ne possède ni `cargo` ni `rustc`. Les validations suivantes ne sont donc pas déclarées PASS localement : ```text cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-app-solprices-desk cargo test --workspace ``` Le build Tauri de production n'appartient pas à ce gate intermédiaire ; il reste réservé au couloir final du plan. ## 13. Gate opérateur attendu Après application de l'archive : ```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-app-solprices-desk cargo test --workspace ``` Une correction découverte par ce gate reste un `pre.002-fix.NNN` et n'avance pas à `pre.003`. ## 14. Suite La prochaine responsabilité reste : ```text 0.2.12-pre.003 — composite Config + registry/resources atomiques + bootstrap Off-chain ``` Aucune table prix ni commande de refresh ne doit être fusionnée dans `pre.003`.