v0.3.15-pre.008-fix.002

This commit is contained in:
2026-09-13 22:40:15 +02:00
parent fe512637d4
commit ee658eb862
3 changed files with 65 additions and 6 deletions

View File

@@ -1,12 +1,12 @@
# file: Cargo.toml # file: Cargo.toml
# version: 610 # version: 611
[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.8.fix.1" version = "0.3.15-pre.8.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"

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs // 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. //! 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()), std::result::Result::Err(_) => return std::result::Result::Err(runtime_lock_error()),
}; };
match &inner.slot { match &inner.slot {
RouteRuntimeSlot::Starting { token } if token == reservation.token => {}, RouteRuntimeSlot::Starting { token } if *token == reservation.token => {},
RouteRuntimeSlot::Idle | RouteRuntimeSlot::Starting { .. } | RouteRuntimeSlot::Active { .. } => { RouteRuntimeSlot::Idle | RouteRuntimeSlot::Starting { .. } | RouteRuntimeSlot::Active { .. } => {
return std::result::Result::Err(ksp_core_lib::Error::new( return std::result::Result::Err(ksp_core_lib::Error::new(
crate::ERROR_CODE_ROUTE_RUNTIME_STATE_INVALID, crate::ERROR_CODE_ROUTE_RUNTIME_STATE_INVALID,
@@ -98,7 +98,7 @@ impl crate::RouteRuntimeState {
std::result::Result::Ok(value) => value, std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return, 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; inner.slot = RouteRuntimeSlot::Idle;
} }
} }
@@ -109,7 +109,7 @@ impl crate::RouteRuntimeState {
std::result::Result::Ok(value) => value, std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return, 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; inner.slot = RouteRuntimeSlot::Idle;
} }
} }

View File

@@ -0,0 +1,59 @@
<!-- file: deltas/0.3.15/pre.008-fix.002.md -->
<!-- version: 1 -->
# 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.