0.3.15-pre.012
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
|
||||
<!-- version: 21 -->
|
||||
<!-- version: 22 -->
|
||||
|
||||
# Validation v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -743,3 +743,55 @@ 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.
|
||||
|
||||
### `pre.012` — races Start/Stop, shutdown applicatif et sécurité IPC
|
||||
|
||||
Base : `0.3.15-pre.011-fix.001`, validée par le gate opérateur du 16 septembre 2026. Les audits, `cargo check --workspace`, Clippy strict, les suites Desk/Worker/workspace et le scénario live multi-route passent ; Yellowstone et HTTP Block Polling restent manipulables simultanément sous charge et le Store partagé ferme seulement après la dernière route.
|
||||
|
||||
Périmètre `pre.012` : hardening du contrôle Desk uniquement, sans modification des stratégies d'acquisition.
|
||||
|
||||
```text
|
||||
shutdown application
|
||||
CloseRequested main window intercepté et empêché temporairement
|
||||
admission de nouveaux Start fermée une seule fois
|
||||
Stop coopératif demandé à tous les Workers actifs
|
||||
réservations Starting marquées stop_requested
|
||||
attente bornée routes + Store avant app_handle.exit
|
||||
second CloseRequested n'engendre aucun second shutdown
|
||||
|
||||
race Start / Stop
|
||||
Stop sur Starting => marque stop_requested puis attend le cleanup
|
||||
activation ultérieure => request_stop avant acknowledgement
|
||||
échec avant activation => rollback retient un terminal logique Stopped
|
||||
cleanup Desk borné et compatible avec le drain Worker borné
|
||||
|
||||
stale inventory / Start
|
||||
génération sous verrou pendant la préparation synchrone
|
||||
reconstruction complète Config/Transport à chaque Start
|
||||
verrou libéré explicitement avant le premier await
|
||||
admission shutdown revérifiée atomiquement pendant reserve
|
||||
|
||||
IPC hostile
|
||||
StartRequest / StopRequest : deny_unknown_fields
|
||||
profile_id : non vide, <= 256 octets, sans trim implicite ni contrôle
|
||||
FrontendLogPayload : deny_unknown_fields
|
||||
level / target <= 16 octets
|
||||
message <= 8192 octets et sans caractères de contrôle
|
||||
frontend : message technique borné à 1024 code units avant IPC
|
||||
erreurs Tauri : projection domain/code uniquement
|
||||
```
|
||||
|
||||
Canaris ajoutés/étendus :
|
||||
|
||||
```text
|
||||
pre_012_route_requests_reject_unknown_fields_and_bound_free_form_profile_identity
|
||||
pre_012_frontend_log_ipc_rejects_unknown_fields_and_unbounded_or_control_messages
|
||||
pre_012_stop_racing_start_marks_the_reservation_for_cooperative_stop
|
||||
pre_012_application_shutdown_is_one_shot_and_marks_starting_routes_before_activation
|
||||
pre_012_window_shutdown_and_start_stop_races_are_bounded_backend_owned
|
||||
pre_012_hostile_ipc_is_shape_strict_bounded_and_safely_projected
|
||||
pre_012_race_shutdown_and_ipc_hardening_adds_no_production_module_or_lower_layer_growth
|
||||
```
|
||||
|
||||
Non-claims : `pre.012` ne modifie ni Config, ni Transport, ni Store, ni `ksp-worker-raw-transaction-ingest-lib`, ni Common RAW. Il n'ajoute aucune orchestration Backfill, aucun scheduler, aucune route et aucune nouvelle donnée frontend. `pre.013` reste propriétaire de la fermeture completeness/security cross-layer.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user