# Delta `0.3.15-pre.008` ## Base ```text base archive : ksp-general-0.3.15-pre.007-fix.002.zip base SHA-256 : 8addfa784748c25c8f267020130f0b0d053dbe2192002b50d35775060fff4daa base version : 0.3.15-pre.7.fix.2 ``` Le gate opérateur de la base passe les audits Rust/Markdown, `cargo check --workspace`, Clippy workspace `-D warnings`, les tests Raw Transaction Ingest Desk et le workspace all-targets/all-features. Le lancement final utilise exclusivement `cargo tauri dev`; Tauri déclenche lui-même son `beforeDevCommand` frontend. ## Objectif Matérialiser le premier runtime réel de `ksp-app-raw-transaction-ingest-desk` : ouverture Store + démarrage/arrêt d'un Worker pour exactement une route logique, sans avancer le multi-route de `pre.009` ni le monitoring continu de `pre.010`. ## Runtime mono-route Le Start conserve l'entrée logique `profile_id + route_id + inventory_generation + commitment` et réutilise intégralement la revalidation `pre.007`. ```text revalidation Config/Store/Transport -> ressources Worker exactes -> réservation slot mono-route -> Store::open -> Store::health == Ready -> WorkerId backend-owned -> RawTransactionIngestWorker::start_with_runtime_resources -> installation handle -> acknowledgement IPC sûr ``` Le slot est réservé avant l'ouverture Store afin que deux Start concurrents ne puissent jamais ouvrir deux runtimes. Toute erreur avant installation du handle rollbacke la réservation ; un Store déjà ouvert est explicitement fermé. Le runtime Worker utilise `RawTransactionIngestSettings::with_defaults` et le réseau porté par le Store réellement ouvert. Aucun `WorkerId`, handle, endpoint, URL, credential, URI Store, source key ou payload RAW ne traverse IPC. ## Stop et fermeture Store `stop_route` demande l'arrêt coopératif avec `request_stop()` puis attend `wait_terminal()`. Un monitor backend, installé dès le Start, attend également le terminal afin de traiter aussi une terminaison spontanée. Le Worker détient le Store sous `Arc`. Après publication terminal, le monitor attend de façon bornée que le Worker ait relâché son clone, récupère l'unique Store avec `Arc::try_unwrap`, appelle explicitement `Store::close()` puis seulement libère le slot mono-route. Aucun nouveau Start n'est donc accepté pendant le drain ou la fermeture Store. ## IPC et frontend Nouvelles commandes : ```text start_route stop_route ``` Le DTO `RawIngestRouteRuntimeDto` contient uniquement : ```text commitment inventory_generation network profile_id route_id state ``` La vue Routes ajoute le choix `confirmed/finalized`, un bouton Start sur chaque route `Configured`, une projection locale sûre de l'accusé runtime et un bouton Stop. Le frontend trace uniquement les identités logiques sûres et les états. Il ne fait ni réseau direct, ni stockage navigateur, ni accès aux ressources physiques. La tranche ne fournit pas encore le flux de snapshots runtime : une terminaison spontanée est nettoyée backend-side, mais sa projection continue vers l'UI reste `pre.010`. ## Frontières conservées ```text Config : profils, secrets, composition et résolution effective Transport : endpoints, pools, sessions/channels et capabilities Store : ouverture/health/close via ksp-store-lib uniquement Worker : source runtime, acquisition, lifecycle et Stop coopératif Desk pre.008 : sélection logique + ownership d'un unique runtime actif ``` Sont explicitement hors tranche : plusieurs Workers simultanés, Store partagé inter-Workers, isolation de faults inter-route, snapshot/event bridge, replay/gap UI, shutdown applicatif durci et races hostiles avancées. ## Version ```text workspace.package.version : 0.3.15-pre.8 root Cargo header counter : 609 ``` ## Validation d'assemblage L'environnement d'assemblage ne fournit ni Cargo ni rustfmt ; aucun résultat Cargo local n'est donc revendiqué. Les validations statiques exécutées avant emballage donnent : audits Rust/export/KSP propres, audit Markdown propre (`318` tables / `203` fichiers), parsing HTML/JSON/TOML propre et contrôles de frontières `pre.008` propres. Le gate opérateur attendu reste : ```bash cargo fmt --all cargo fmt --all -- --check python3 scripts/audit_rust_workspace_rules.py python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.15 cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features cargo test --workspace --all-targets --all-features (cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev) ``` Aucun script npm applicatif n'est exécuté directement par l'opérateur. ## Inventaire exact du delta Le delta contient `3` ajouts, `20` modifications et aucune suppression, soit `23` entrées. Ajouts : ```text crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_runtime.rs deltas/0.3.15/pre.008.md ``` Modifications : ```text Cargo.toml crates/ksp-app-raw-transaction-ingest-desk/Cargo.toml crates/ksp-app-raw-transaction-ingest-desk/README.md crates/ksp-app-raw-transaction-ingest-desk/USAGE.md crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html crates/ksp-app-raw-transaction-ingest-desk/frontend/ts/main.ts crates/ksp-app-raw-transaction-ingest-desk/src/app_state.rs crates/ksp-app-raw-transaction-ingest-desk/src/constants.rs crates/ksp-app-raw-transaction-ingest-desk/src/dto_route.rs crates/ksp-app-raw-transaction-ingest-desk/src/errors.rs crates/ksp-app-raw-transaction-ingest-desk/src/lib.rs crates/ksp-app-raw-transaction-ingest-desk/src/route_start.rs crates/ksp-app-raw-transaction-ingest-desk/src/tauri.rs crates/ksp-app-raw-transaction-ingest-desk/tests/dependency_boundary.rs crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_security.rs crates/ksp-app-raw-transaction-ingest-desk/tests/release_completeness.rs crates/ksp-app-raw-transaction-ingest-desk/unit_tests/dto_route.rs docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md ``` Suppressions : aucune.