From ee658eb862b76e7f5b9825cf6b3bc23ede58d6c2 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sun, 13 Sep 2026 22:40:15 +0200 Subject: [PATCH] v0.3.15-pre.008-fix.002 --- Cargo.toml | 4 +- .../src/route_runtime.rs | 8 +-- deltas/0.3.15/pre.008-fix.002.md | 59 +++++++++++++++++++ 3 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 deltas/0.3.15/pre.008-fix.002.md diff --git a/Cargo.toml b/Cargo.toml index 8b953a4..f7f5ce9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 610 +# version: 611 [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.8.fix.1" +version = "0.3.15-pre.8.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/src/route_runtime.rs b/crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs index c155f6b..4995df4 100644 --- a/crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs +++ b/crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs @@ -1,5 +1,5 @@ // file: crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs -// version: 2 +// version: 3 //! Mono-route Store and Worker lifecycle owned by Raw Transaction Ingest Desk. @@ -79,7 +79,7 @@ impl crate::RouteRuntimeState { std::result::Result::Err(_) => return std::result::Result::Err(runtime_lock_error()), }; match &inner.slot { - RouteRuntimeSlot::Starting { token } if token == reservation.token => {}, + RouteRuntimeSlot::Starting { token } if *token == reservation.token => {}, RouteRuntimeSlot::Idle | RouteRuntimeSlot::Starting { .. } | RouteRuntimeSlot::Active { .. } => { return std::result::Result::Err(ksp_core_lib::Error::new( crate::ERROR_CODE_ROUTE_RUNTIME_STATE_INVALID, @@ -98,7 +98,7 @@ impl crate::RouteRuntimeState { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return, }; - if matches!(&inner.slot, RouteRuntimeSlot::Starting { token: current, .. } if current == token) { + if matches!(&inner.slot, RouteRuntimeSlot::Starting { token: current, .. } if *current == token) { inner.slot = RouteRuntimeSlot::Idle; } } @@ -109,7 +109,7 @@ impl crate::RouteRuntimeState { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return, }; - if matches!(&inner.slot, RouteRuntimeSlot::Active { token: current, .. } if current == token) { + if matches!(&inner.slot, RouteRuntimeSlot::Active { token: current, .. } if *current == token) { inner.slot = RouteRuntimeSlot::Idle; } } diff --git a/deltas/0.3.15/pre.008-fix.002.md b/deltas/0.3.15/pre.008-fix.002.md new file mode 100644 index 0000000..a827132 --- /dev/null +++ b/deltas/0.3.15/pre.008-fix.002.md @@ -0,0 +1,59 @@ + + + +# Delta `0.3.15-pre.008-fix.002` + +## Objet + +Corriger les trois comparaisons de token restantes révélées par le second gate opérateur de `pre.008`, sans modifier le périmètre fonctionnel du runtime mono-route. + +## Défaut observé + +Après `pre.008-fix.001`, `RouteRuntimeInner` est bien présent et la future Tauri ne conserve plus de `MutexGuard` à travers un `await`. Le compilateur atteint alors les trois gardes de cohérence du slot et signale que leurs bindings sont des références : + +```text +&u64 == u64 +``` + +Les patterns concernés inspectent `&inner.slot`. Les bindings `token` / `current` sont donc des `&u64` et doivent être déréférencés pour être comparés aux tokens `u64` détenus par la réservation ou passés aux helpers. + +## Correction + +Les trois gardes restaurent le déréférencement exact : + +```text +*token == reservation.token +*current == token +*current == token +``` + +Cela couvre respectivement : + +- l'activation d'une réservation `Starting` ; +- le rollback d'une réservation `Starting` ; +- la libération d'un slot `Active` arrivé au terminal. + +## Périmètre inchangé + +Le fix ne modifie aucun contrat de `pre.008` : + +- runtime strictement mono-route ; +- même revalidation Start issue de `pre.007` ; +- même ouverture, health et fermeture Store via `ksp-store-lib` ; +- même lancement `RawTransactionIngestWorker::start_with_runtime_resources` ; +- même Stop coopératif ; +- aucun multi-route de `pre.009` ; +- aucun monitoring continu de `pre.010`. + +Le delta publié `pre.008-fix.001` reste immuable ; la présente correction supersède uniquement son interprétation erronée des trois bindings de pattern. + +## Version + +```text +header racine : 610 -> 611 +workspace : 0.3.15-pre.8.fix.1 -> 0.3.15-pre.8.fix.2 +``` + +## Gate opérateur + +Le gate complet de `pre.008` doit être rejoué après application de ce fix.