From 35bd1bb2263b59fc710fceaa5a836d27685b5191 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sun, 13 Sep 2026 21:59:35 +0200 Subject: [PATCH] v0.3.15-pre.007-fix.002 --- Cargo.toml | 4 +- .../unit_tests/route_start.rs | 38 +++++++++++++-- deltas/0.3.15/pre.007-fix.002.md | 48 +++++++++++++++++++ 3 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 deltas/0.3.15/pre.007-fix.002.md diff --git a/Cargo.toml b/Cargo.toml index f5a4e0e..75c633c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 607 +# version: 608 [workspace] resolver = "3" members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-raw-transaction-ingest-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-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"] [workspace.package] -version = "0.3.15-pre.7.fix.1" +version = "0.3.15-pre.7.fix.2" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs b/crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs index 4a7bca8..dfb09cd 100644 --- a/crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs +++ b/crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs @@ -1,9 +1,9 @@ // file: crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs -// version: 1 +// version: 2 #[test] fn pre_007_stale_generation_is_rejected_before_config_or_transport_reconstruction() { - let management = crate::config_management(&[]); + let management = committed_management(); assert!(management.is_ok()); let management = match management { std::result::Result::Ok(value) => value, @@ -32,7 +32,7 @@ fn pre_007_commitments_are_bounded_to_confirmed_and_finalized() { #[test] fn pre_007_public_standard_profiles_reconstruct_block_and_http_sources_without_network_io() { - let management = crate::config_management(&[]); + let management = committed_management(); assert!(management.is_ok()); let management = match management { std::result::Result::Ok(value) => value, @@ -63,3 +63,35 @@ fn pre_007_public_standard_profiles_reconstruct_block_and_http_sources_without_n } } } + +fn committed_management() -> ksp_core_lib::Result { + let manifest = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let crates_root = manifest.parent(); + let crates_root = match crates_root { + std::option::Option::Some(value) => value, + std::option::Option::None => { + return std::result::Result::Err(ksp_core_lib::Error::new(crate::ERROR_CODE_ROUTE_START_PREPARATION_FAILED, "test manifest has no crates parent")); + }, + }; + let workspace = crates_root.parent(); + let workspace = match workspace { + std::option::Option::Some(value) => value, + std::option::Option::None => { + return std::result::Result::Err(ksp_core_lib::Error::new( + crate::ERROR_CODE_ROUTE_START_PREPARATION_FAILED, + "test crates root has no workspace parent", + )); + }, + }; + let bootstrap = ksp_config_lib::ConfigBootstrapOptions::from_paths(workspace.join("config"), workspace.join("config/schemas")); + let bootstrap = match bootstrap { + std::result::Result::Ok(value) => value, + std::result::Result::Err(error) => return std::result::Result::Err(error), + }; + let registry = ksp_config_lib::ConfigFileRegistry::defaults(); + let registry = match registry { + std::result::Result::Ok(value) => value, + std::result::Result::Err(error) => return std::result::Result::Err(error), + }; + return std::result::Result::Ok(ksp_config_lib::ConfigManagement::new(ksp_config_lib::ConfigDocumentEngine::new(bootstrap, registry))); +} diff --git a/deltas/0.3.15/pre.007-fix.002.md b/deltas/0.3.15/pre.007-fix.002.md new file mode 100644 index 0000000..955826c --- /dev/null +++ b/deltas/0.3.15/pre.007-fix.002.md @@ -0,0 +1,48 @@ + + + +# Delta `0.3.15-pre.007-fix.002` + +## Objet + +Rendre hermétique le canari de reconstruction Start de `pre.007` après le gate de `pre.007-fix.001`. + +## Défaut observé + +Le test `pre_007_public_standard_profiles_reconstruct_block_and_http_sources_without_network_io` construisait `ConfigManagement` avec `config_management(&[])`. En contexte `cargo test`, cette voie utilise les racines Config par défaut de la machine et non les fichiers Config committés du workspace. + +Le test pouvait donc échouer sur `inventory.is_ok()` avant même de vérifier les trois routes standard, alors que le runtime Tauri reconstruisait correctement l'inventaire avec la configuration réellement installée. + +## Correction + +Le module de test `unit_tests/route_start.rs` utilise désormais un helper `committed_management()` analogue au canari `route_inventory` : + +- `CARGO_MANIFEST_DIR` localise le workspace ; +- `ConfigBootstrapOptions::from_paths` force `workspace/config` et `workspace/config/schemas` ; +- `ConfigFileRegistry::defaults()` conserve le registre Config canonique ; +- aucun secret provider n'est injecté artificiellement ; +- les providers optionnels restent fail-closed, tandis que Standard Logs, Standard Block et HTTP Block Polling sont testés sur la configuration committée. + +Le même bootstrap hermétique est utilisé par le canari de génération stale afin d'éviter une dépendance accidentelle aux racines Config de l'opérateur. + +## Périmètre + +Aucun code de production n'est modifié. Les contrats de `pre.007` restent inchangés : + +- même requête `profile_id + route_id + inventory_generation + commitment` ; +- même revalidation Config au Start ; +- mêmes reconstructions Transport ; +- aucun `Store::open` ; +- aucune connexion réseau active ; +- aucun lancement de Worker. + +## Version + +```text +header racine : 607 -> 608 +workspace : 0.3.15-pre.7.fix.1 -> 0.3.15-pre.7.fix.2 +``` + +## Gate opérateur + +Le gate complet de `pre.007` doit être rejoué après application de ce fix.