v0.3.15-pre.008
This commit is contained in:
146
deltas/0.3.15/pre.008.md
Normal file
146
deltas/0.3.15/pre.008.md
Normal 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.
|
||||
Reference in New Issue
Block a user