v0.3.15-pre.007-fix.002
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 607
|
# version: 608
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
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"]
|
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]
|
[workspace.package]
|
||||||
version = "0.3.15-pre.7.fix.1"
|
version = "0.3.15-pre.7.fix.2"
|
||||||
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,9 +1,9 @@
|
|||||||
// file: crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs
|
// file: crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pre_007_stale_generation_is_rejected_before_config_or_transport_reconstruction() {
|
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());
|
assert!(management.is_ok());
|
||||||
let management = match management {
|
let management = match management {
|
||||||
std::result::Result::Ok(value) => value,
|
std::result::Result::Ok(value) => value,
|
||||||
@@ -32,7 +32,7 @@ fn pre_007_commitments_are_bounded_to_confirmed_and_finalized() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pre_007_public_standard_profiles_reconstruct_block_and_http_sources_without_network_io() {
|
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());
|
assert!(management.is_ok());
|
||||||
let management = match management {
|
let management = match management {
|
||||||
std::result::Result::Ok(value) => value,
|
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<ksp_config_lib::ConfigManagement> {
|
||||||
|
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)));
|
||||||
|
}
|
||||||
|
|||||||
48
deltas/0.3.15/pre.007-fix.002.md
Normal file
48
deltas/0.3.15/pre.007-fix.002.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<!-- file: deltas/0.3.15/pre.007-fix.002.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# 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.
|
||||||
Reference in New Issue
Block a user