v0.3.15-pre.008
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md -->
|
||||
<!-- version: 10 -->
|
||||
<!-- version: 11 -->
|
||||
|
||||
# Plan v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -766,7 +766,30 @@ Le préflight instancie puis détruit immédiatement le contrat source. Il ne fa
|
||||
|
||||
### `pre.008` — Store lifecycle et Start/Stop mono-route
|
||||
|
||||
Ouvrir/réutiliser le Store via `ksp-store-lib`, lancer un Worker pour une route, installer le handle avant publication Running, puis fermer proprement Stop/terminal.
|
||||
Ouvrir/réutiliser le Store via `ksp-store-lib`, lancer un Worker pour une route, installer le handle avant toute projection runtime vers le frontend, puis fermer proprement Stop/terminal.
|
||||
|
||||
La tranche retient les invariants suivants :
|
||||
|
||||
```text
|
||||
Start request logique
|
||||
-> revalidation pre.007 + ressources exactes
|
||||
-> réservation atomique du slot mono-route
|
||||
-> Store::open(settings Config)
|
||||
-> Store::health == Ready
|
||||
-> RawTransactionIngestSettings::with_defaults(network, WorkerId backend-owned)
|
||||
-> RawTransactionIngestWorker::start_with_runtime_resources
|
||||
-> installation handle dans le slot
|
||||
-> accusé IPC sûr Starting/Running
|
||||
|
||||
Stop
|
||||
-> handle.request_stop()
|
||||
-> handle.wait_terminal()
|
||||
-> monitor récupère l'unique Arc<Store>
|
||||
-> Store::close()
|
||||
-> libération slot mono-route
|
||||
```
|
||||
|
||||
Le slot reste occupé pendant le drain terminal et la fermeture Store ; aucun second Start n'est admis durant cette fenêtre. Le frontend ne reçoit ni `WorkerId`, ni handle, ni endpoint, ni URI Store. La terminaison spontanée est nettoyée backend-side mais son streaming vers le frontend reste `pre.010`. Le partage d'un même Store entre plusieurs Workers reste `pre.009`.
|
||||
|
||||
Budget cible : une tranche runtime mono-route.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
|
||||
<!-- version: 11 -->
|
||||
<!-- version: 12 -->
|
||||
|
||||
# Validation v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -384,7 +384,7 @@ Le catalogue global reste exactement cinq IDs V1, mais l'inventaire d'un profil
|
||||
|
||||
### `pre.007` — ressources Start
|
||||
|
||||
**Statut : implémenté, gate opérateur à exécuter.** Le préflight backend `validate_route_start` est generation-bound et revalide la sélection contre un inventaire Config reconstruit avant toute ressource. La requête contient désormais `profile_id + route_id + inventory_generation + commitment` : `profile_id` est nécessaire depuis que les profils applicatifs sont réseau-centriques et qu'un même route ID existe sur plusieurs réseaux.
|
||||
**Statut : réalisé et gate opérateur PASS après `pre.007-fix.001` et `pre.007-fix.002`.** Le préflight backend `validate_route_start` est generation-bound et revalide la sélection contre un inventaire Config reconstruit avant toute ressource. La requête contient désormais `profile_id + route_id + inventory_generation + commitment` : `profile_id` est nécessaire depuis que les profils applicatifs sont réseau-centriques et qu'un même route ID existe sur plusieurs réseaux.
|
||||
|
||||
La preuve Start-time exige ensuite :
|
||||
|
||||
@@ -401,9 +401,17 @@ Les cinq constructeurs source Worker sont effectivement réutilisés. `HttpTrans
|
||||
|
||||
Attendus de sécurité : la réponse de préflight ne contient que profil logique, réseau, route, génération et commitment ; les erreurs lower-layer sont remappées derrière des codes/messages app bornés. Aucun endpoint, URL, credential, metadata secrète, URI Store, source key ou payload RAW ne traverse IPC.
|
||||
|
||||
`pre.007-fix.001` corrige deux erreurs syntaxiques de l'assemblage initial (double visibilité `pub(crate)` et littéraux de canari mal échappés). `pre.007-fix.002` rend le canari de reconstruction hermétique en l'adossant explicitement aux racines Config committées du workspace au lieu des racines par défaut de la machine. Le gate opérateur final de `0.3.15-pre.7.fix.2` passe audits Rust/Markdown, `cargo check --workspace`, Clippy workspace strict, les `34` tests unitaires Raw Ingest Desk, ses suites d'intégration et le workspace `--all-targets --all-features`; `cargo tauri dev` compile et lance ensuite l'application.
|
||||
|
||||
### `pre.008` — runtime mono-route
|
||||
|
||||
Store lifecycle + Start/Stop mono-route réel.
|
||||
Implémenté dans l'assemblage de tranche : Start réutilise la revalidation `pre.007`, réserve un slot runtime unique, ouvre le Store exclusivement via `ksp-store-lib`, exige `StoreHealthState::Ready`, construit un `WorkerId` backend-owned puis appelle `RawTransactionIngestWorker::start_with_runtime_resources`. Le handle est installé avant l'accusé IPC.
|
||||
|
||||
Stop demande l'arrêt coopératif au handle et attend son état terminal. Un monitor backend indépendant attend également le terminal, récupère de manière bornée l'unique `Arc<Store>`, appelle explicitement `Store::close()` puis libère le slot. Les échecs avant installation du handle rollbackent le slot et ferment le Store déjà ouvert.
|
||||
|
||||
Surface IPC sûre ajoutée : `start_route` et `stop_route`, avec `RawIngestRouteRuntimeDto` limité à `profile_id`, `network`, `route_id`, `inventory_generation`, `commitment` et `state`. Aucune URL, credential, URI Store, source key, `WorkerId`, handle ou payload RAW n'est projeté.
|
||||
|
||||
Le frontend fournit un contrôle minimal Start/Stop mono-route et le choix `confirmed`/`finalized`. Il ne prétend pas encore fournir le monitoring continu : une terminaison spontanée est nettoyée backend-side mais sa projection temps réel demeure `pre.010`. Multi-route, Store partagé entre Workers et isolation inter-route demeurent `pre.009`.
|
||||
|
||||
### `pre.009` — runtime multi-route
|
||||
|
||||
|
||||
Reference in New Issue
Block a user