v0.3.8-pre.006-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 456
|
# version: 457
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib"]
|
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.8-pre.6"
|
version = "0.3.8-pre.6.fix.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-app-store-desk/src/dto_common.rs
|
// file: crates/ksp-app-store-desk/src/dto_common.rs
|
||||||
// version: 2
|
// version: 3
|
||||||
|
|
||||||
//! Common Tauri DTOs shared by the Store Desk shell and Store runtime Overview.
|
//! Common Tauri DTOs shared by the Store Desk shell and Store runtime Overview.
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ pub(crate) struct ShellStatusDto {
|
|||||||
/// Current implementation phase exposed by the shell.
|
/// Current implementation phase exposed by the shell.
|
||||||
pub(crate) shell_phase: String,
|
pub(crate) shell_phase: String,
|
||||||
/// Safe startup diagnostic that caused fallback Logging, when applicable.
|
/// Safe startup diagnostic that caused fallback Logging, when applicable.
|
||||||
pub(crate) startup_diagnostic: std::option::Option<CommandErrorDto>,
|
pub(crate) startup_diagnostic: std::option::Option<crate::CommandErrorDto>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Backend-neutral Store runtime and health projection used by the Overview screen.
|
/// Backend-neutral Store runtime and health projection used by the Overview screen.
|
||||||
@@ -57,7 +57,7 @@ pub(crate) struct StoreRuntimeStatusDto {
|
|||||||
/// Stable selected Store backend kind, when configuration resolution reached that phase.
|
/// Stable selected Store backend kind, when configuration resolution reached that phase.
|
||||||
pub(crate) backend_kind: std::option::Option<String>,
|
pub(crate) backend_kind: std::option::Option<String>,
|
||||||
/// Safe Store startup/health diagnostic, when present.
|
/// Safe Store startup/health diagnostic, when present.
|
||||||
pub(crate) diagnostic: std::option::Option<CommandErrorDto>,
|
pub(crate) diagnostic: std::option::Option<crate::CommandErrorDto>,
|
||||||
/// Portable Store health code (`ready`, `not_ready`, `unavailable`, `closed`, or `unknown`).
|
/// Portable Store health code (`ready`, `not_ready`, `unavailable`, `closed`, or `unknown`).
|
||||||
pub(crate) health_state: String,
|
pub(crate) health_state: String,
|
||||||
/// Applied migration version rendered as an exact decimal string.
|
/// Applied migration version rendered as an exact decimal string.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-app-store-desk/src/frontend_logging.rs
|
// file: crates/ksp-app-store-desk/src/frontend_logging.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
//! KSP-owned bridge for technical log events emitted by Store Desk frontend scripts.
|
//! KSP-owned bridge for technical log events emitted by Store Desk frontend scripts.
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ enum FrontendLogTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Emits one validated frontend event through the KSP Logging facade.
|
/// Emits one validated frontend event through the KSP Logging facade.
|
||||||
pub(crate) fn emit_frontend_log_event(payload: FrontendLogPayloadDto) -> ksp_core_lib::Result<()> {
|
pub(crate) fn emit_frontend_log_event(payload: crate::FrontendLogPayloadDto) -> ksp_core_lib::Result<()> {
|
||||||
let level = parse_level(payload.level.as_str());
|
let level = parse_level(payload.level.as_str());
|
||||||
let level = match level {
|
let level = match level {
|
||||||
std::result::Result::Ok(value) => value,
|
std::result::Result::Ok(value) => value,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-app-store-desk/src/splash.rs
|
// file: crates/ksp-app-store-desk/src/splash.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
//! Common splash settings and frontend event contracts for Store Desk.
|
//! Common splash settings and frontend event contracts for Store Desk.
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ pub(crate) struct SplashSettings {
|
|||||||
fade_out_source: ksp_config_lib::ConfigEnvironmentSource,
|
fade_out_source: ksp_config_lib::ConfigEnvironmentSource,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SplashSettings {
|
impl crate::SplashSettings {
|
||||||
/// Resolves splash timings through the Config-owned environment snapshot.
|
/// Resolves splash timings through the Config-owned environment snapshot.
|
||||||
pub(crate) fn load() -> ksp_core_lib::Result<Self> {
|
pub(crate) fn load() -> ksp_core_lib::Result<Self> {
|
||||||
let environment = ksp_config_lib::ConfigEnvironment::load();
|
let environment = ksp_config_lib::ConfigEnvironment::load();
|
||||||
@@ -144,7 +144,7 @@ pub(crate) struct SplashOrderDto {
|
|||||||
pub(crate) duration_ms: std::option::Option<u32>,
|
pub(crate) duration_ms: std::option::Option<u32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SplashOrderDto {
|
impl crate::SplashOrderDto {
|
||||||
/// Creates a new `SplashOrderDto` value.
|
/// Creates a new `SplashOrderDto` value.
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub(crate) fn new(action: &str, message: std::option::Option<&str>, status: std::option::Option<&str>, duration_ms: std::option::Option<u32>) -> Self {
|
pub(crate) fn new(action: &str, message: std::option::Option<&str>, status: std::option::Option<&str>, duration_ms: std::option::Option<u32>) -> Self {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-app-store-desk/src/store_runtime.rs
|
// file: crates/ksp-app-store-desk/src/store_runtime.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
//! Composite-selected Store readiness, status and bounded shutdown lifecycle owned by Store Desk.
|
//! Composite-selected Store readiness, status and bounded shutdown lifecycle owned by Store Desk.
|
||||||
|
|
||||||
@@ -9,10 +9,10 @@ pub(crate) struct StoreStartup {
|
|||||||
diagnostic: std::option::Option<crate::CommandErrorDto>,
|
diagnostic: std::option::Option<crate::CommandErrorDto>,
|
||||||
network: std::option::Option<String>,
|
network: std::option::Option<String>,
|
||||||
profile_id: std::option::Option<String>,
|
profile_id: std::option::Option<String>,
|
||||||
runtime: std::option::Option<StoreRuntime>,
|
runtime: std::option::Option<crate::StoreRuntime>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl StoreStartup {
|
impl crate::StoreStartup {
|
||||||
/// Builds a fresh backend-neutral runtime/health projection for the Overview screen.
|
/// Builds a fresh backend-neutral runtime/health projection for the Overview screen.
|
||||||
pub(crate) async fn status(&self) -> crate::StoreRuntimeStatusDto {
|
pub(crate) async fn status(&self) -> crate::StoreRuntimeStatusDto {
|
||||||
let runtime = self.runtime.as_ref();
|
let runtime = self.runtime.as_ref();
|
||||||
@@ -51,7 +51,7 @@ pub(crate) struct StoreRuntime {
|
|||||||
store: tokio::sync::RwLock<std::option::Option<ksp_store_lib::Store>>,
|
store: tokio::sync::RwLock<std::option::Option<ksp_store_lib::Store>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl StoreRuntime {
|
impl crate::StoreRuntime {
|
||||||
/// Builds one fresh safe Store status from the retained facade without exposing backend connection details.
|
/// Builds one fresh safe Store status from the retained facade without exposing backend connection details.
|
||||||
pub(crate) async fn status(&self) -> crate::StoreRuntimeStatusDto {
|
pub(crate) async fn status(&self) -> crate::StoreRuntimeStatusDto {
|
||||||
let locked = self.store.read().await;
|
let locked = self.store.read().await;
|
||||||
@@ -128,7 +128,7 @@ impl StoreRuntime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Resolves the composite Store target, opens Store through the facade and captures one initial readiness probe.
|
/// Resolves the composite Store target, opens Store through the facade and captures one initial readiness probe.
|
||||||
pub(crate) async fn initialize_store(management: &ksp_config_lib::ConfigManagement) -> StoreStartup {
|
pub(crate) async fn initialize_store(management: &ksp_config_lib::ConfigManagement) -> crate::StoreStartup {
|
||||||
let environment = ksp_config_lib::ConfigEnvironment::load();
|
let environment = ksp_config_lib::ConfigEnvironment::load();
|
||||||
let environment = match environment {
|
let environment = match environment {
|
||||||
std::result::Result::Ok(value) => value,
|
std::result::Result::Ok(value) => value,
|
||||||
@@ -189,12 +189,12 @@ pub(crate) async fn initialize_store(management: &ksp_config_lib::ConfigManageme
|
|||||||
pending_migration_count = health.pending_migration_count(),
|
pending_migration_count = health.pending_migration_count(),
|
||||||
"initialized Store Desk Store from composite-managed configuration"
|
"initialized Store Desk Store from composite-managed configuration"
|
||||||
);
|
);
|
||||||
return StoreStartup {
|
return crate::StoreStartup {
|
||||||
backend_kind: std::option::Option::Some(backend_kind),
|
backend_kind: std::option::Option::Some(backend_kind),
|
||||||
diagnostic: non_ready_health_diagnostic(&health),
|
diagnostic: non_ready_health_diagnostic(&health),
|
||||||
network: std::option::Option::Some(network),
|
network: std::option::Option::Some(network),
|
||||||
profile_id: std::option::Option::Some(profile_id.clone()),
|
profile_id: std::option::Option::Some(profile_id.clone()),
|
||||||
runtime: std::option::Option::Some(StoreRuntime { profile_id, store: tokio::sync::RwLock::new(std::option::Option::Some(store)) }),
|
runtime: std::option::Option::Some(crate::StoreRuntime { profile_id, store: tokio::sync::RwLock::new(std::option::Option::Some(store)) }),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ fn unavailable_startup(
|
|||||||
backend_kind: std::option::Option<String>,
|
backend_kind: std::option::Option<String>,
|
||||||
network: std::option::Option<String>,
|
network: std::option::Option<String>,
|
||||||
error: ksp_core_lib::Error,
|
error: ksp_core_lib::Error,
|
||||||
) -> StoreStartup {
|
) -> crate::StoreStartup {
|
||||||
let diagnostic = crate::CommandErrorDto::from_error(&error);
|
let diagnostic = crate::CommandErrorDto::from_error(&error);
|
||||||
ksp_logging_lib::warn!(
|
ksp_logging_lib::warn!(
|
||||||
target: crate::TRACING_TARGET,
|
target: crate::TRACING_TARGET,
|
||||||
@@ -239,7 +239,7 @@ fn unavailable_startup(
|
|||||||
error_code = diagnostic.code.as_str(),
|
error_code = diagnostic.code.as_str(),
|
||||||
"Store Desk Store readiness is unavailable; keeping desktop shell available"
|
"Store Desk Store readiness is unavailable; keeping desktop shell available"
|
||||||
);
|
);
|
||||||
return StoreStartup {
|
return crate::StoreStartup {
|
||||||
backend_kind,
|
backend_kind,
|
||||||
diagnostic: std::option::Option::Some(diagnostic),
|
diagnostic: std::option::Option::Some(diagnostic),
|
||||||
network,
|
network,
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
// file: crates/ksp-app-store-desk/src/tw_main.rs
|
// file: crates/ksp-app-store-desk/src/tw_main.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
//! Tauri-window helpers for the Store Desk main window.
|
//! Tauri-window helpers for the Store Desk main window.
|
||||||
|
|
||||||
use tauri::Manager; // rust-rules: trait-import
|
use tauri::Manager; // rust-rules: trait-import
|
||||||
|
|
||||||
/// Crate-internal `WINDOW_LABEL_MAIN` constant.
|
/// Private main-window label owned by this module.
|
||||||
pub(crate) const WINDOW_LABEL_MAIN: &str = "main";
|
const WINDOW_LABEL_MAIN: &str = "main";
|
||||||
|
|
||||||
/// Resolves the required main window or returns a typed error.
|
/// Resolves the required main window or returns a typed error.
|
||||||
pub(crate) fn require_main_window(manager: &impl Manager<tauri::Wry>) -> ksp_core_lib::Result<tauri::WebviewWindow> {
|
pub(crate) fn require_main_window(manager: &impl Manager<tauri::Wry>) -> ksp_core_lib::Result<tauri::WebviewWindow> {
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
// file: crates/ksp-app-store-desk/src/tw_splash.rs
|
// file: crates/ksp-app-store-desk/src/tw_splash.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
//! Tauri-window lifecycle for the Store Desk splash window.
|
//! Tauri-window lifecycle for the Store Desk splash window.
|
||||||
|
|
||||||
use tauri::Emitter; // rust-rules: trait-import
|
use tauri::Emitter; // rust-rules: trait-import
|
||||||
use tauri::Manager; // rust-rules: trait-import
|
use tauri::Manager; // rust-rules: trait-import
|
||||||
|
|
||||||
/// Crate-internal splash window label.
|
|
||||||
pub(crate) const WINDOW_LABEL_SPLASH: &str = "splash";
|
|
||||||
|
|
||||||
const SPLASH_EVENT_NAME: &str = "ksp-splash-order";
|
const SPLASH_EVENT_NAME: &str = "ksp-splash-order";
|
||||||
|
/// Private splash-window label owned by this module.
|
||||||
|
const WINDOW_LABEL_SPLASH: &str = "splash";
|
||||||
|
|
||||||
/// Resolves the required splash window or returns a typed error.
|
/// Resolves the required splash window or returns a typed error.
|
||||||
pub(crate) fn require_splash_window(manager: &impl Manager<tauri::Wry>) -> ksp_core_lib::Result<tauri::WebviewWindow> {
|
pub(crate) fn require_splash_window(manager: &impl Manager<tauri::Wry>) -> ksp_core_lib::Result<tauri::WebviewWindow> {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-app-store-desk/tests/dependency_boundary.rs
|
// file: crates/ksp-app-store-desk/tests/dependency_boundary.rs
|
||||||
// version: 3
|
// version: 4
|
||||||
|
|
||||||
//! Dependency-boundary tests for the Store Desk application.
|
//! Dependency-boundary tests for the Store Desk application.
|
||||||
|
|
||||||
@@ -40,3 +40,38 @@ fn pre_006_store_open_is_owned_by_store_runtime_and_never_escapes_to_physical_sq
|
|||||||
assert!(!sources.contains(forbidden), "Store Desk leaked forbidden physical Store surface: {forbidden}");
|
assert!(!sources.contains(forbidden), "Store Desk leaked forbidden physical Store surface: {forbidden}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn pre_006_fix_001_shared_visible_items_use_the_crate_root_facade_inside_owner_modules() {
|
||||||
|
let lib = include_str!("../src/lib.rs");
|
||||||
|
let dto_common = include_str!("../src/dto_common.rs");
|
||||||
|
let frontend_logging = include_str!("../src/frontend_logging.rs");
|
||||||
|
let splash = include_str!("../src/splash.rs");
|
||||||
|
let store_runtime = include_str!("../src/store_runtime.rs");
|
||||||
|
let tw_main = include_str!("../src/tw_main.rs");
|
||||||
|
let tw_splash = include_str!("../src/tw_splash.rs");
|
||||||
|
for expected in [
|
||||||
|
"pub(crate) use self::dto_common::CommandErrorDto;",
|
||||||
|
"pub(crate) use self::frontend_logging::FrontendLogPayloadDto;",
|
||||||
|
"pub(crate) use self::splash::SplashOrderDto;",
|
||||||
|
"pub(crate) use self::splash::SplashSettings;",
|
||||||
|
"pub(crate) use self::store_runtime::StoreRuntime;",
|
||||||
|
"pub(crate) use self::store_runtime::StoreStartup;",
|
||||||
|
] {
|
||||||
|
assert!(lib.contains(expected), "missing Store Desk crate-root re-export: {expected}");
|
||||||
|
}
|
||||||
|
assert!(dto_common.contains("std::option::Option<crate::CommandErrorDto>"));
|
||||||
|
assert!(frontend_logging.contains("payload: crate::FrontendLogPayloadDto"));
|
||||||
|
assert!(splash.contains("impl crate::SplashSettings"));
|
||||||
|
assert!(splash.contains("impl crate::SplashOrderDto"));
|
||||||
|
assert!(store_runtime.contains("std::option::Option<crate::StoreRuntime>"));
|
||||||
|
assert!(store_runtime.contains("impl crate::StoreRuntime"));
|
||||||
|
assert!(store_runtime.contains("impl crate::StoreStartup"));
|
||||||
|
assert!(store_runtime.contains("-> crate::StoreStartup"));
|
||||||
|
assert!(store_runtime.contains("crate::StoreStartup {"));
|
||||||
|
assert!(store_runtime.contains("std::option::Option::Some(crate::StoreRuntime {"));
|
||||||
|
assert!(tw_main.contains("const WINDOW_LABEL_MAIN: &str = \"main\";"));
|
||||||
|
assert!(!tw_main.contains("pub(crate) const WINDOW_LABEL_MAIN"));
|
||||||
|
assert!(tw_splash.contains("const WINDOW_LABEL_SPLASH: &str = \"splash\";"));
|
||||||
|
assert!(!tw_splash.contains("pub(crate) const WINDOW_LABEL_SPLASH"));
|
||||||
|
}
|
||||||
|
|||||||
46
deltas/0.3.8/pre.006-fix.001.md
Normal file
46
deltas/0.3.8/pre.006-fix.001.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<!-- file: deltas/0.3.8/pre.006-fix.001.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta `0.3.8-pre.006-fix.001` — conformité crate-root des items visibles Store Desk
|
||||||
|
|
||||||
|
## Base requise
|
||||||
|
|
||||||
|
Base directe attendue : `0.3.8-pre.006`.
|
||||||
|
|
||||||
|
## Cause
|
||||||
|
|
||||||
|
Le gate opérateur est fonctionnellement vert mais émet un warning `unused_imports` sur `pub(crate) use self::store_runtime::StoreRuntime;`. Le réexport est correct et doit rester : le module `store_runtime` accède encore à `StoreRuntime` par nom nu, ce qui contourne la façade crate-root exigée par `RUST-IMPORT-009`, `RUST-IMPORT-012` et `RUST-API-004`.
|
||||||
|
|
||||||
|
La revue ciblée de Store Desk identifie le même motif pour plusieurs items visibles partagés. Deux labels de fenêtre sont en outre `pub(crate)` alors qu'ils ne sont consommés que dans leur module et ne doivent donc pas être artificiellement promus.
|
||||||
|
|
||||||
|
## Correction
|
||||||
|
|
||||||
|
- `CommandErrorDto`, `FrontendLogPayloadDto`, `SplashSettings`, `SplashOrderDto`, `StoreStartup` et `StoreRuntime` restent réexportés par `src/lib.rs` et sont utilisés via `crate::Item` jusque dans leur module propriétaire ;
|
||||||
|
- les `impl`, signatures, champs et constructions Store runtime utilisent `crate::StoreStartup` / `crate::StoreRuntime` ;
|
||||||
|
- `WINDOW_LABEL_MAIN` et `WINDOW_LABEL_SPLASH` deviennent privés car ils sont strictement module-local ;
|
||||||
|
- `tests/dependency_boundary.rs` ajoute un canari de façade crate-root pour les items concernés.
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
```text
|
||||||
|
delivery = 0.3.8-pre.006-fix.001
|
||||||
|
workspace.package.version = 0.3.8-pre.6.fix.1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Hors scope
|
||||||
|
|
||||||
|
Aucun changement de Config composite, Store runtime, SQL, inspection RAW, migration, capability, IPC, frontend, DataTables, Logging ou lifecycle Tauri.
|
||||||
|
|
||||||
|
## Gate requis
|
||||||
|
|
||||||
|
```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
|
||||||
|
cargo check --workspace
|
||||||
|
cargo clippy --workspace --all-targets
|
||||||
|
cargo test -p ksp-app-store-desk
|
||||||
|
cargo test -p ksp-config-lib
|
||||||
|
cargo test -p ksp-store-lib
|
||||||
|
cargo check -p ksp-store-lib --no-default-features
|
||||||
|
```
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/029-V0_3_8_STORE_DESK_PLAN.md -->
|
<!-- file: docs/plans/029-V0_3_8_STORE_DESK_PLAN.md -->
|
||||||
<!-- version: 6 -->
|
<!-- version: 7 -->
|
||||||
|
|
||||||
# Plan v0.3.8 — Store Desk V1 RAW
|
# Plan v0.3.8 — Store Desk V1 RAW
|
||||||
|
|
||||||
@@ -578,6 +578,10 @@ Même vertical slice pour Account : filtre exact `pubkey`, range slot inclusif,
|
|||||||
|
|
||||||
Créer `config/composite.ksp-app-store-desk.json`, enregistrer son `file_id` dans le registre partagé `ksp-config-lib`, propager la quinzième ressource Config aux cinq bundles Desk utilisant `prepare_packaged_runtime()`, puis brancher Store Desk sur `ksp-store-lib::Store` uniquement. Le composite sélectionne Logging `supertrace` et le profil Store homonyme `devnet`/`mainnet`/`testnet`. L'Overview et Diagnostics exposent uniquement backend logique, network, health, migration et compteurs de pool via un DTO IPC backend-neutral ; aucune URI, credential, SQL, handle physique ou byte RAW. La fermeture de la fenêtre principale déclenche une fermeture Store one-shot et bornée avant sortie Tauri. Les DataTables Transactions/Accounts restent locales et `serverSide:false` jusqu'à `pre.007`/`pre.008`.
|
Créer `config/composite.ksp-app-store-desk.json`, enregistrer son `file_id` dans le registre partagé `ksp-config-lib`, propager la quinzième ressource Config aux cinq bundles Desk utilisant `prepare_packaged_runtime()`, puis brancher Store Desk sur `ksp-store-lib::Store` uniquement. Le composite sélectionne Logging `supertrace` et le profil Store homonyme `devnet`/`mainnet`/`testnet`. L'Overview et Diagnostics exposent uniquement backend logique, network, health, migration et compteurs de pool via un DTO IPC backend-neutral ; aucune URI, credential, SQL, handle physique ou byte RAW. La fermeture de la fenêtre principale déclenche une fermeture Store one-shot et bornée avant sortie Tauri. Les DataTables Transactions/Accounts restent locales et `serverSide:false` jusqu'à `pre.007`/`pre.008`.
|
||||||
|
|
||||||
|
#### pre.006-fix.001 — conformité crate-root des items visibles Store Desk
|
||||||
|
|
||||||
|
Le gate opérateur de `pre.006` est fonctionnellement vert mais signale un warning `unused_imports` sur le réexport crate-root de `StoreRuntime`. Le réexport n'est pas supprimé : conformément à `RUST-IMPORT-009`, `RUST-IMPORT-012` et `RUST-API-004`, les items `pub`/`pub(crate)` partagés restent réexportés via `lib.rs` et sont consommés par `crate::Item`, y compris depuis leur module propriétaire. Le correctif normalise les usages Store Desk concernés (`CommandErrorDto`, `FrontendLogPayloadDto`, `SplashSettings`, `SplashOrderDto`, `StoreStartup`, `StoreRuntime`) et rend privés les deux labels de fenêtre qui n'ont aucune consommation crate-wide au lieu de les promouvoir artificiellement. Aucun comportement Config/Store/Tauri/IPC/frontend n'est modifié.
|
||||||
|
|
||||||
### pre.007 — RawTransaction DataTables serverSide + détail
|
### pre.007 — RawTransaction DataTables serverSide + détail
|
||||||
|
|
||||||
Brancher l'unique pager DataTables via `ajax` function/Tauri invoke, mapping offset/limit/totaux, filtres Store explicites, summary rows, retention badges, détail à la demande et instrumentation. Aucun second pager.
|
Brancher l'unique pager DataTables via `ajax` function/Tauri invoke, mapping offset/limit/totaux, filtres Store explicites, summary rows, retention badges, détail à la demande et instrumentation. Aucun second pager.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
|
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
|
||||||
<!-- version: 12 -->
|
<!-- version: 13 -->
|
||||||
|
|
||||||
# Validation v0.3.8 — Store Desk V1 RAW
|
# Validation v0.3.8 — Store Desk V1 RAW
|
||||||
|
|
||||||
@@ -512,3 +512,29 @@ Le smoke `cargo tauri dev` de Store Desk démarre aussi correctement ; le journa
|
|||||||
- [X] aucune migration, query métier d'inspection, détail RAW ou changement de capability Tauri n'est ajouté en `pre.006`.
|
- [X] aucune migration, query métier d'inspection, détail RAW ou changement de capability Tauri n'est ajouté en `pre.006`.
|
||||||
|
|
||||||
Le gate Cargo opérateur de `pre.006` reste à exécuter après application du delta.
|
Le gate Cargo opérateur de `pre.006` reste à exécuter après application du delta.
|
||||||
|
|
||||||
|
## 27. Gate opérateur `pre.006` et ouverture de `pre.006-fix.001`
|
||||||
|
|
||||||
|
Le gate opérateur de `0.3.8-pre.6` est fonctionnellement vert : audits Rust/Markdown, `cargo check --workspace`, `cargo clippy --workspace --all-targets`, `ksp-config-lib` (128 unitaires + intégrations), `ksp-store-lib`, `--no-default-features`, Store Desk et les quatre autres Desk apps passent. Le smoke `cargo tauri dev` confirme également le composite `mainnet`, Logging `supertrace`, l'ouverture/health Store, les traces frontend et la fermeture Store bornée.
|
||||||
|
|
||||||
|
Il subsiste toutefois un warning Rust récurrent :
|
||||||
|
|
||||||
|
```text
|
||||||
|
warning: unused import: `self::store_runtime::StoreRuntime`
|
||||||
|
--> crates/ksp-app-store-desk/src/lib.rs
|
||||||
|
```
|
||||||
|
|
||||||
|
Le réexport `StoreRuntime` est requis par la règle de façade crate-root et ne doit pas être supprimé. Le défaut est inverse : le module propriétaire utilise encore le nom nu `StoreRuntime` au lieu de `crate::StoreRuntime`. La revue de conformité étendue de Store Desk relève le même motif pour plusieurs items partagés déjà réexportés : `CommandErrorDto`, `FrontendLogPayloadDto`, `SplashSettings`, `SplashOrderDto`, `StoreStartup` et `StoreRuntime`.
|
||||||
|
|
||||||
|
`pre.006-fix.001` applique donc `RUST-IMPORT-009`, `RUST-IMPORT-012` et `RUST-API-004` dans la crate Store Desk :
|
||||||
|
|
||||||
|
- [X] tous les items `pub`/`pub(crate)` partagés concernés restent réexportés via `lib.rs` ;
|
||||||
|
- [X] leurs usages dans leur module propriétaire passent par `crate::Item` ;
|
||||||
|
- [X] `StoreRuntime` et `StoreStartup` utilisent `crate::StoreRuntime` / `crate::StoreStartup` jusque dans les `impl`, signatures et constructions ;
|
||||||
|
- [X] les champs DTO partagés utilisent `crate::CommandErrorDto` ;
|
||||||
|
- [X] le bridge frontend prend `crate::FrontendLogPayloadDto` ;
|
||||||
|
- [X] les `impl` splash utilisent `crate::SplashSettings` et `crate::SplashOrderDto` ;
|
||||||
|
- [X] `WINDOW_LABEL_MAIN` et `WINDOW_LABEL_SPLASH`, utilisés exclusivement dans leur module, redeviennent privés au lieu d'être `pub(crate)` sans façade crate-root ;
|
||||||
|
- [X] un canari `dependency_boundary` verrouille ces chemins et la distinction item partagé / helper local privé.
|
||||||
|
|
||||||
|
Aucun composite Config, Store runtime, query, SQL, DTO wire, commande Tauri, frontend, DataTables ou comportement de fermeture n'est modifié.
|
||||||
|
|||||||
Reference in New Issue
Block a user