0.3.15-pre.011

This commit is contained in:
2026-09-16 09:07:31 +02:00
parent e919945d1e
commit a248be04ca
12 changed files with 807 additions and 31 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md -->
<!-- version: 17 -->
<!-- version: 18 -->
# Plan v0.3.15 — Raw Transaction Ingest Desk
@@ -817,13 +817,19 @@ Le relais Tauri suit le pattern KSP déjà utilisé par Backfill Desk : l'évén
Les compteurs, séquences et slots issus de `u64` sont sérialisés en texte décimal pour éviter toute perte de précision JavaScript. Les cardinalités bornées `usize` sont converties en `u32` avec échec fermé si elles deviennent non représentables. Le Worker ouvre uniquement cinq getters publics source-neutral déjà portés par son snapshot (`continuity_policy_observed`, `continuity_frontier_slot`, `continuity_has_open_gaps`, `failed_source_losses_reconciled`, `future_target_coverage`) ; aucune logique d'acquisition, retry, repair ou persistence n'est déplacée.
Le frontend détaillé ne consomme pas encore cette surface pour construire la vue de supervision complète : ce rendu et son tracing TypeScript restent `pre.011`.
Cette surface est désormais le contrat backend figé consommé par le frontend de `pre.011`; aucune extension de l'acquisition n'est nécessaire pour construire la supervision opérateur.
Budget cible : une tranche observabilité.
### `pre.011` — frontend fonctionnel et tracing TypeScript
Finaliser l'UI de sélection/supervision et tracer les interactions frontend conformément aux règles Desk KSP, sans journaliser de valeurs sensibles ni dupliquer la logique Worker.
**État : implémenté.** Le frontend consomme maintenant `ksp-raw-ingest-route-status` et `get_route_monitoring` sans polling métier ni seconde logique d'acquisition. Les latest values mettent à jour les cartes de routes, les états actifs/terminaux, le verrouillage du sélecteur réseau et l'indicateur du Store partagé.
Chaque route disposant d'un snapshot affiche un résumé source-neutral (`health`, `activity`, persisted, sources actives, gaps). Le contrôle `Supervision` ouvre un détail borné couvrant pipeline/admission/persistence, entity/observation outcomes, backpressure, hydration/pending/frontier, source lifecycle/reconnect/replay, continuité, gaps et compteurs de repair. Les slots/séquences/compteurs `u64` restent affichés comme texte décimal exact ; le frontend ne parse pas ces valeurs en `number`.
Le bouton `Resync monitoring` relit explicitement la latest value backend et réconcilie les cartes après événement manqué. Start et Stop déclenchent également une resynchronisation après leur acknowledgement/terminal. Le tracing TypeScript couvre clics, navigation, sélection profil/commitment/route, Start/Stop, événements monitoring, refresh/resync et IPC avec seulement IDs logiques sûrs, lifecycle codes, séquences et counts ; aucun endpoint, credential, source key, Worker handle, signature ou payload RAW n'est journalisé.
Aucun module Rust de production n'est ajouté dans cette tranche ; `pre.012` reste propriétaire des races Start/Stop, stale inventory, shutdown applicatif et hardening IPC hostile.
Budget cible : une tranche frontend.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
<!-- version: 19 -->
<!-- version: 20 -->
# Validation v0.3.15 — Raw Transaction Ingest Desk
@@ -681,3 +681,51 @@ Le live Mainnet exécuté pendant ce gate confirme aussi que `yellowstone-hydrat
Le correctif ne modifie pas la projection runtime. Il sépare le canari en deux niveaux : les marqueurs physiques/secrets (`endpoint_url`, `connection_uri`, `api_key`, `source_key`, `worker_id`, `x-token`) restent interdits dans tout `route_monitoring.rs`, tandis que les marqueurs RAW (`raw_transaction`, `signature`, `payload`, `canonical_bytes`, `wire_bytes`, `transaction_bytes`) sont interdits dans la seule surface déclarative de `RawIngestRouteMonitoringDto`. Le test vérifie explicitement les bornes de cette déclaration. Il reste donc strict sur l'IPC sans confondre les noms normaux des crates/bindings avec des champs réellement projetés.
### `pre.011` — frontend fonctionnel et tracing TypeScript
Base : `0.3.15-pre.010-fix.001`, validée par le gate opérateur du 15 septembre 2026. Le correctif de canari `desktop_security` est confirmé propre ; les audits Rust/Markdown, `cargo check --workspace`, Clippy strict, les suites Raw Transaction Ingest Desk/Worker et le workspace all-targets/all-features sont passés avant le lancement Tauri. Les smokes opérateur Mainnet montrent également Yellowstone et HTTP Block Polling productifs puis terminalement `Stopped` après Stop ciblé.
Périmètre `pre.011` : frontend uniquement au-dessus du contrat latest-value `pre.010`.
```text
écoute Tauri ksp-raw-ingest-route-status
resynchronisation get_route_monitoring
Map frontend latest-value par profile_id + route_id
réconciliation des active/last runtimes depuis le snapshot Worker projeté
résumé route : lifecycle / health / activity / persisted / sources / gaps
détail supervision : admission / persistence / outcomes / backpressure / hydration / frontier
sources : active / reconnecting / failed / reconnect / replay / continuity-gap counters
continuité : frontier / open gaps / failed-source reconciliation / future coverage
gaps bornés : range / state / reason / latest repair method
repair totals : replay / redundant coverage / HTTP scan / block fetch / transaction hydration
resync explicite après Start, Stop et action opérateur
Store header dérivé du nombre de Workers actifs, sans exposer de handle Store
```
Le frontend ne transforme jamais les compteurs, slots ou séquences `u64` en `number`; les chaînes décimales `pre.010` sont rendues directement. Les cardinalités `u32` restent les seules valeurs numériques de présentation.
Tracing TypeScript ajouté/fermé :
```text
clics génériques sans valeur de contrôle
navigation tabs
sélection profil logique avec counts sûrs
sélection commitment
sélection route de supervision avec route_id/family sûrs
Start/Stop avec route_id/lifecycle
latest-value event avec route_id/sequence/state/terminal
refresh/resync monitoring avec source/counts
IPC via invokeKsp avec command id seulement
```
Les traces ne sérialisent jamais le DTO monitoring complet et ne journalisent aucun gap slot/range, endpoint, URL, credential, provider secret, source key, WorkerId, signature, transaction bytes ou payload RAW.
Canaris 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
```
Aucune modification Config, Transport, Store, Worker ou Common RAW n'est introduite par `pre.011`. Le module Rust de production du Desk reste exactement celui de `pre.010`; la tranche suivante `pre.012` reste dédiée aux races/shutdown/sécurité IPC.