Files
khadhroony-solana-project/deltas/0.3.15/pre.008.md
2026-09-13 22:28:21 +02:00

6.2 KiB

Delta 0.3.15-pre.008

Base

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.

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 :

start_route
stop_route

Le DTO RawIngestRouteRuntimeDto contient uniquement :

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

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

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 :

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 :

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 :

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.