v0.3.15-pre.008

This commit is contained in:
2026-09-13 22:28:21 +02:00
parent 35bd1bb226
commit c71fb2d8fe
23 changed files with 1055 additions and 81 deletions

146
deltas/0.3.15/pre.008.md Normal file
View File

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