# Delta `0.3.15-pre.011` ## Base ```text base archive : ksp-general-0.3.15-pre.010-fix.001.zip base SHA-256 : 8a8f550cb5efbca5b8f7bd2f7ed0ed467a35b2e636b002fa2705bf302113bf5f base version : 0.3.15-pre.10.fix.1 ``` Le gate opérateur du 15 septembre 2026 confirme la base : audits Rust/Markdown propres, `cargo check --workspace`, Clippy strict, suites ciblées Raw Transaction Ingest Desk/Worker et workspace all-targets/all-features sans échec. Le canari `desktop_security` corrigé par `pre.010-fix.001` passe. Le lancement Tauri et les essais Mainnet confirment aussi Yellowstone et HTTP Block Polling productifs puis terminalement `Stopped` après Stop ciblé. ## Objectif Finaliser le frontend fonctionnel de sélection/supervision au-dessus du contrat latest-value `pre.010`, sans modifier Config, Transport, Store, Worker, Common RAW ni les stratégies d'acquisition. ## Monitoring frontend Le frontend écoute désormais : ```text ksp-raw-ingest-route-status ``` et resynchronise explicitement via : ```text get_route_monitoring ``` Une `Map` latest-value indexée par `profile_id + route_id` conserve les projections sûres. Chaque événement ou resync réconcilie également les `activeRuntimes` / `lastRuntimes` afin que : ```text Starting / Running / Stopping -> route active Stopped / Faulted -> route terminale sélecteur réseau -> verrouillé tant qu'au moins un Worker est actif header Store -> idle/shared selon le nombre de Workers actifs ``` Start et Stop déclenchent une resynchronisation après leur acknowledgement/terminal afin de couvrir une éventuelle perte d'événement UI sans introduire de polling métier. ## Supervision opérateur Chaque route disposant d'un snapshot affiche dans sa carte : ```text lifecycle health activity persisted total sources active / total open gap count ``` Le contrôle `Supervision` ouvre un détail borné couvrant : ```text identity logique : route / network / commitment / sequence terminal fault domain/code sûrs admission queue depth/capacity persistence in-flight/concurrency admitted / canonicalized / persisted entity inserted / already present / purged skipped observation inserted / already present content/store/source failure counters backpressure waits hydration pending processing frontier / oldest pending source state / active / reconnecting / failed reconnect / replay attempt / continuity-gap counters continuity policy/frontier/open gaps/future coverage failed-source loss reconciliation open / repairing / repaired / unresolved gaps bounded current/recent gap details replay / redundant coverage / HTTP scan / block fetch / transaction hydration repair totals ``` Les slots, séquences et compteurs `u64` restent rendus directement sous forme de texte décimal. Le frontend ne les convertit jamais en `number`. ## Tracing TypeScript La matrice prévue est matérialisée pour : ```text clics génériques sans valeur de contrôle navigation tabs sélection profil/réseau avec counts sûrs sélection commitment sélection route de supervision avec route_id/family sûrs Start / Stop avec route_id + lifecycle outcome monitoring event avec route_id + sequence + state + terminal refresh/resync avec source + status/active counts IPC avec command id uniquement via invokeKsp ``` Le DTO monitoring complet n'est jamais sérialisé dans une trace. Aucun endpoint, URL, credential, source key, WorkerId, signature, transaction bytes, gap range ou payload RAW n'est journalisé. ## Canaris Trois canaris de Desk sont ajoutés : ```text pre_011_frontend_consumes_latest_value_monitoring_and_renders_full_route_supervision pre_011_frontend_monitoring_tracing_is_source_neutral_and_does_not_log_raw_material pre_011_frontend_supervision_closes_planned_ui_without_backend_module_growth ``` Ils vérifient notamment que le module Rust de production du Desk reste exactement celui de `pre.010`. ## Version ```text workspace.package.version : 0.3.15-pre.11 root Cargo header counter : 620 ``` ## Validation d'assemblage Exécuté dans l'environnement d'assemblage : ```text 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 ``` Un contrôle TypeScript strict auxiliaire a aussi compilé `main.ts`, `frontend_log.ts` et `invoke.ts` avec des déclarations temporaires reproduisant la surface des bindings `ts-rs` de `pre.010`; aucun diagnostic TypeScript n'a été produit. Ce contrôle ne remplace pas le build Tauri officiel. Cargo/rustfmt ne sont pas disponibles dans l'environnement d'assemblage ; aucun gate Cargo de `pre.011` n'est déclaré PASS ici. 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 -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features cargo test --workspace --all-targets --all-features (cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev) ``` Aucun `npm run build` manuel n'est demandé ; le cycle frontend reste piloté par Tauri/Vite. ## Inventaire exact du delta Ajout : ```text deltas/0.3.15/pre.011.md ``` Modifications : ```text 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/sass/_app.scss crates/ksp-app-raw-transaction-ingest-desk/frontend/ts/main.ts 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 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.