From d56de4ace91c51f8dcf052fc40db384cafb4a3a5 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Wed, 16 Sep 2026 22:22:48 +0200 Subject: [PATCH] 0.3.15-pre.012-fix.003 --- Cargo.toml | 4 +- .../tests/desktop_contract.rs | 20 ++---- deltas/0.3.15/pre.012-fix.003.md | 70 +++++++++++++++++++ ...032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md | 12 +++- 4 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 deltas/0.3.15/pre.012-fix.003.md diff --git a/Cargo.toml b/Cargo.toml index 3513c09..cac21dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 624 +# version: 625 [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.12.fix.2" +version = "0.3.15-pre.12.fix.3" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs b/crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs index d88dfb4..cf2acf9 100644 --- a/crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs +++ b/crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs @@ -1,5 +1,5 @@ // file: crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs -// version: 12 +// version: 13 //! Desktop scaffold contract canaries for Raw Transaction Ingest Desk. @@ -313,21 +313,15 @@ fn pre_012_window_shutdown_and_start_stop_races_are_bounded_backend_owned() { fn pre_012_fix_002_terminal_fault_logging_keeps_safe_route_identity_and_worker_cause_counters() { let runtime = read_text(app_root().join("src/route_runtime.rs").as_path()); let start = runtime.find("pub(crate) async fn monitor(self)"); - let start = match start { - std::option::Option::Some(value) => value, - std::option::Option::None => { - assert!(false, "missing RouteRuntimeLaunch::monitor"); - return; - }, + assert!(start.is_some(), "missing RouteRuntimeLaunch::monitor"); + let std::option::Option::Some(start) = start else { + return; }; let remainder = &runtime[start..]; let end = remainder.find("/// Starts one exact route Worker"); - let end = match end { - std::option::Option::Some(value) => value, - std::option::Option::None => { - assert!(false, "missing route runtime monitor end marker"); - return; - }, + assert!(end.is_some(), "missing route runtime monitor end marker"); + let std::option::Option::Some(end) = end else { + return; }; let monitor = &remainder[..end]; for required in [ diff --git a/deltas/0.3.15/pre.012-fix.003.md b/deltas/0.3.15/pre.012-fix.003.md new file mode 100644 index 0000000..b3cc3a4 --- /dev/null +++ b/deltas/0.3.15/pre.012-fix.003.md @@ -0,0 +1,70 @@ + + + +# Delta `0.3.15-pre.012-fix.003` + +## Base + +```text +base archive : ksp-general-0.3.15-pre.012-fix.002.zip +base SHA-256 : b8b0026a46f301449b9eaacc689eb4bbc9747381d1f4ff5bc5bb8e35bcf57d37 +base version : 0.3.15-pre.12.fix.2 +``` + +## Motif du fix + +Le gate opérateur de `pre.012-fix.002` échoue uniquement sous Clippy strict : deux branches du nouveau canari terminal utilisent `assert!(false, ...)`, rejeté par `clippy::assertions_on_constants` avec `-D warnings`. Les tests Desk/Worker exécutés séparément passent, et le live Mainnet ne reproduit pas le terminal `Unhealthy/Faulted` : Yellowstone et HTTP Block Polling terminent proprement avec diagnostic terminal sans fault ni compteur d'erreur. + +## Correction + +Le canari `pre_012_fix_002_terminal_fault_logging_keeps_safe_route_identity_and_worker_cause_counters` conserve les mêmes bornes de surface, mais remplace les deux assertions constantes par une assertion dynamique `Option::is_some()` suivie d'un `let-else` sans `panic!`, `unreachable!`, `unwrap()` ni `expect()`. + +Aucun code de production n'est modifié. + +## Version + +```text +workspace.package.version : 0.3.15-pre.12.fix.3 +root Cargo header counter : 625 +``` + +## Frontières + +Aucun changement de comportement pour : + +```text +Raw Transaction Ingest Desk runtime / monitoring / IPC / frontend +Config / Transport / Store +Worker / Common RAW +acquisition / replay / repair +Start / Stop / shutdown +politique health / fault +``` + +## Validation attendue + +Le gate opérateur doit notamment confirmer : + +```text +cargo fmt --all -- --check +cargo clippy --workspace --all-targets --all-features -- -D warnings +cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features +``` + +## Inventaire exact du delta + +Ajout : + +```text +deltas/0.3.15/pre.012-fix.003.md +``` + +Modifications : + +```text +Cargo.toml +crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs +docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md +``` + +Suppressions : aucune. diff --git a/docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md b/docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md index 8505734..6273ddc 100644 --- a/docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md +++ b/docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md @@ -1,5 +1,5 @@ - + # Validation v0.3.15 — Raw Transaction Ingest Desk @@ -811,3 +811,13 @@ Le gate opérateur de `pre.012-fix.001` compile et teste proprement le Desk, y c Le fix ajoute uniquement une projection de diagnostic terminale source-neutre et bornée dans `RouteRuntimeLaunch::monitor`. Le log terminal porte désormais l'identité logique sûre de route, `worker_state`, `worker_health`, `worker_activity`, `fault_domain`, `fault_code`, les compteurs `source_failure_total`, `store_failure_total`, `content_conflict_total`, les cardinalités source/gap et les booléens de continuité. Aucun endpoint, credential, source key, WorkerId, signature, payload ou octet RAW n'est journalisé. Ce fix ne change volontairement aucune politique fail-closed : il ne transforme pas un `Faulted` en succès et ne suppose pas que l'incident observé est un conflit Store ou une panne source. Le prochain live doit permettre de classer exactement la cause avant toute correction comportementale. + +### `pre.012-fix.003` — canari terminal compatible Clippy strict + +Le gate opérateur de `pre.012-fix.002` confirme que le build normal, les suites Desk/Worker et le live Mainnet sont fonctionnels. Le nouveau diagnostic terminal montre Yellowstone et HTTP Block Polling terminant `Stopped`, `Healthy`, sans `fault_domain`/`fault_code` ni compteur d'erreur ; l'incident `Unhealthy/Faulted` précédent ne se reproduit donc pas dans ce run. + +Le seul échec du gate est dans `cargo clippy --workspace --all-targets --all-features -- -D warnings` : le canari `pre_012_fix_002_terminal_fault_logging_keeps_safe_route_identity_and_worker_cause_counters` utilisait deux `assert!(false, ...)` dans ses branches de marqueur absent, ce qui déclenche `clippy::assertions_on_constants`. + +Le fix ne modifie aucun code de production. Le canari teste désormais d'abord `Option::is_some()` puis extrait la valeur avec `let-else`; la branche impossible retourne seulement après l'assertion dynamique. Aucun `panic!`, `unreachable!`, `unwrap()` ou `expect()` n'est introduit. + +Non-claims : aucune modification du runtime Desk, du monitoring, des routes, de Config, Transport, Store, Worker, Common RAW, acquisition, replay, repair ou politique health/fault.