Files
khadhroony-solana-project/deltas/0.3.8/pre.006.md
2026-09-03 16:26:18 +02:00

6.7 KiB

Delta 0.3.8-pre.006 — composite Config, lifecycle Store et Overview Store Desk

Base requise

Base directe attendue :

0.3.8-pre.005-fix.003
workspace.package.version = 0.3.8-pre.5.fix.3

Le gate opérateur de cette base est entièrement vert. Le live proof RawAccountState passe sur PostgreSQL 17 et le smoke cargo tauri dev confirme le profil supertrace ainsi que le tracing frontend Store Desk.

La livraison est :

0.3.8-pre.006
workspace.package.version = 0.3.8-pre.6
commit = v0.3.8-pre.006
tag = aucun

Objectif

Brancher pour la première fois ksp-app-store-desk sur le runtime Store réel, sans ouvrir encore les tables RAW en serverSide :

Config composite
  -> Logging supertrace
  -> cfg.std.store
  -> ksp-store-lib::Store
  -> runtime_snapshot + health
  -> Overview / Diagnostics

L'application reste backend-neutral : elle dépend de ksp-store-lib, jamais de ksp-store-api, ksp-store-postgres-lib ni d'un driver PostgreSQL.

Composite Config Store Desk

Le nouveau document :

config/composite.ksp-app-store-desk.json

contient trois profils :

devnet
mainnet
testnet

Chaque profil sélectionne :

logging -> cfg.std.logging / supertrace
store   -> cfg.std.store   / profil homonyme

ksp-config-lib enregistre et réexporte :

cfg.composite.ksp-app-store-desk
composite.ksp-app-store-desk.json

Le registre partagé passe ainsi de 14 à 15 descriptors.

Packaging partagé

prepare_packaged_runtime() traverse l'intégralité de ConfigFileRegistry::defaults(). L'ajout du quinzième descriptor impose donc que les cinq Desk apps utilisant ce mécanisme embarquent le nouveau composite :

ksp-app-config-desk
ksp-app-wallet-desk
ksp-app-solprices-desk
ksp-app-backfill-desk
ksp-app-store-desk

Leurs bundles contiennent exactement les 15 resources Config/schema du registre. Cette propagation ne modifie aucune responsabilité runtime des quatre applications existantes.

Lifecycle Store Desk

Store Desk :

  1. construit ConfigManagement ;
  2. charge le composite Store Desk par file_id ;
  3. initialise Logging depuis le composant logging et exige supertrace en développement ;
  4. résout le composant store via resolve_store_config_profile() ;
  5. ouvre ksp_store_lib::Store::open() ;
  6. conserve le Store derrière un slot async interne ;
  7. expose un snapshot Overview sûr ;
  8. intercepte la fermeture de la fenêtre principale ;
  9. exécute une fermeture Store one-shot et bornée avant app_handle.exit(0).

Si Config ou Store ne peut pas être ouvert, le shell reste disponible avec un diagnostic sûr sans secret.

Overview / Diagnostics

Le DTO StoreRuntimeStatusDto expose uniquement :

profile_id
backend_kind
network
store_open
health_state
migration_version_decimal
pending_migration_count
pool_available
pool_size
pool_capacity
pool_waiting
diagnostic { domain, code, message }

Sont exclus :

connection URI
credential / password
SQL
PostgreSQL pool/client/handle
RawPayload
RawAccountState bytes
transaction payload bytes

La commande Tauri store_runtime_status ne prend aucun paramètre et retourne cette projection backend-neutral.

Frontend

Overview et Diagnostics consomment le nouveau statut Store et tracent :

  • refresh Overview ;
  • refresh Diagnostics ;
  • IPC demandé / terminé / échoué ;
  • navigation et activation de vues ;
  • boutons/tabs/contrôles génériques.

Les valeurs sensibles et les valeurs de filtres ne sont pas logguées.

Les tables RAW Transactions et RAW Accounts restent volontairement :

serverSide: false
pageLength: 25
lengthMenu: [25, 50, 100]

Aucun invoke d'inspection, aucun détail RAW et aucun second pager Store ne sont introduits avant pre.007/pre.008.

Fichiers ajoutés

config/composite.ksp-app-store-desk.json
crates/ksp-app-store-desk/src/store_runtime.rs
crates/ksp-config-lib/unit_tests/fixtures/composite.ksp-app-store-desk.json
deltas/0.3.8/pre.006.md

Fichiers modifiés

Cargo.toml
crates/ksp-app-backfill-desk/tauri.conf.json
crates/ksp-app-backfill-desk/tests/desktop_contract.rs
crates/ksp-app-config-desk/tauri.conf.json
crates/ksp-app-config-desk/tests/desktop_contract.rs
crates/ksp-app-solprices-desk/tauri.conf.json
crates/ksp-app-solprices-desk/tests/desktop_contract.rs
crates/ksp-app-store-desk/Cargo.toml
crates/ksp-app-store-desk/frontend/main.html
crates/ksp-app-store-desk/frontend/ts/main.ts
crates/ksp-app-store-desk/src/app_state.rs
crates/ksp-app-store-desk/src/bootstrap.rs
crates/ksp-app-store-desk/src/constants.rs
crates/ksp-app-store-desk/src/dto_common.rs
crates/ksp-app-store-desk/src/errors.rs
crates/ksp-app-store-desk/src/lib.rs
crates/ksp-app-store-desk/src/tauri.rs
crates/ksp-app-store-desk/tauri.conf.json
crates/ksp-app-store-desk/tests/dependency_boundary.rs
crates/ksp-app-store-desk/tests/desktop_contract.rs
crates/ksp-app-store-desk/tests/desktop_security.rs
crates/ksp-app-store-desk/unit_tests/dto_common.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/README.md
crates/ksp-config-lib/src/lib.rs
crates/ksp-config-lib/src/registry.rs
crates/ksp-config-lib/tests/public_api.rs
crates/ksp-config-lib/unit_tests/registry.rs
docs/plans/029-V0_3_8_STORE_DESK_PLAN.md
docs/validation/025-V0_3_8_STORE_DESK.md

Fichiers supprimés

aucun

Validations d'assemblage

Contrôles disponibles dans le sandbox d'assemblage :

General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean
pre.006 structural contract audit: clean
workspace.package.version: 0.3.8-pre.6
Config registry expected descriptors: 15
shared Tauri Config resources per Desk app: 15
Store Desk physical Store dependencies: 0
Store Desk RAW DataTables serverSide: false

Le sandbox ne dispose pas de cargo/rustfmt; aucun gate Cargo de pre.006 n'est revendiqué localement.

Gate requis

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
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-config-lib
cargo test -p ksp-store-lib
cargo check -p ksp-store-lib --no-default-features
cargo test -p ksp-app-store-desk
cargo test -p ksp-app-config-desk
cargo test -p ksp-app-wallet-desk
cargo test -p ksp-app-solprices-desk
cargo test -p ksp-app-backfill-desk

Smoke runtime recommandé après gate :

(cd crates/ksp-app-store-desk && cargo tauri dev)