0.3.15-pre.012-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
|
||||
<!-- version: 22 -->
|
||||
<!-- version: 23 -->
|
||||
|
||||
# Validation v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -794,4 +794,13 @@ pre_012_race_shutdown_and_ipc_hardening_adds_no_production_module_or_lower_layer
|
||||
```
|
||||
|
||||
Non-claims : `pre.012` ne modifie ni Config, ni Transport, ni Store, ni `ksp-worker-raw-transaction-ingest-lib`, ni Common RAW. Il n'ajoute aucune orchestration Backfill, aucun scheduler, aucune route et aucune nouvelle donnée frontend. `pre.013` reste propriétaire de la fermeture completeness/security cross-layer.
|
||||
### `pre.012-fix.001` — future Tauri Start `Send`
|
||||
|
||||
Le gate opérateur de `pre.012` a arrêté la tranche sur un défaut de compilation déterministe dans `AppState::start_route` : le `std::sync::MutexGuard<u32>` de `inventory_generation` restait considéré vivant au franchissement du `await` final, malgré `std::mem::drop(generation)`. Le futur exposé par la commande Tauri `start_route` ne satisfaisait donc plus la borne `Send` imposée par `tauri::ipc::ResultFutureTag::future`. Les audits Rust/Markdown étaient propres et les suites Worker indépendantes restaient vertes, mais `cargo check`, Clippy, les tests Desk/workspace et `cargo tauri dev` ne pouvaient pas compiler le Desk.
|
||||
|
||||
Le fix ne change aucune sémantique Start/Stop. Lock + revalidation/préparation synchrones sont désormais enfermés dans une portée lexicale `let prepared = { ... };`. Le `MutexGuard` est donc détruit structurellement à la fin du bloc avant tout `await`. Le contrat stale-inventory de `pre.012` reste inchangé : la génération demeure verrouillée pendant toute la reconstruction synchrone, mais aucun guard non-`Send` ne traverse une suspension asynchrone.
|
||||
|
||||
Un canari de compilation `pre_012_fix_001_start_route_future_is_send_for_tauri_command` impose explicitement le type `Future<...> + Send` au futur retourné par `AppState::start_route`. Le canari desktop vérifie également la portée lexicale et interdit le retour au simple `std::mem::drop(generation)` comme preuve de lifetime.
|
||||
|
||||
Non-claims : aucune modification de route, Config, Transport, Store, Worker, Common RAW, monitoring, shutdown ou sécurité IPC.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user