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 :
- construit
ConfigManagement; - charge le composite Store Desk par
file_id; - initialise Logging depuis le composant
logginget exigesupertraceen développement ; - résout le composant
storeviaresolve_store_config_profile(); - ouvre
ksp_store_lib::Store::open(); - conserve le Store derrière un slot async interne ;
- expose un snapshot Overview sûr ;
- intercepte la fermeture de la fenêtre principale ;
- 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)