0.3.15-pre.013
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
|
||||
<!-- version: 26 -->
|
||||
<!-- version: 27 -->
|
||||
|
||||
# Validation v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -461,19 +461,23 @@ Ce correctif ne modifie ni Config, ni Transport, ni Store, ni Worker, ni Common
|
||||
|
||||
Races, shutdown app, sécurité IPC, hardening hostile/stale inventory.
|
||||
|
||||
### `pre.013` — completeness
|
||||
### `pre.013` — Yellowstone Block hydration backpressure
|
||||
|
||||
Découplage borné réception gRPC / `getBlock` / admission pour la route Yellowstone Block, conformément à `VER-LIFECYCLE-010`.
|
||||
|
||||
### `pre.014` — completeness
|
||||
|
||||
Cross-layer completeness + canaris système sans expansion de frontières.
|
||||
|
||||
### `pre.014` — gate technique/live
|
||||
### `pre.015` — gate technique/live
|
||||
|
||||
Gate technique/live accessible + frontend/Tauri + build final de validation technique.
|
||||
|
||||
### `pre.015` — réconciliation documentaire
|
||||
### `pre.016` — réconciliation documentaire
|
||||
|
||||
Plan/validation/README/USAGE uniquement selon les surfaces réellement affectées.
|
||||
|
||||
### `pre.016` — préparation publication
|
||||
### `pre.017` — préparation publication
|
||||
|
||||
Prompt suivant + CHANGELOG + ROADMAP + mécanique minimale de publication.
|
||||
|
||||
@@ -793,7 +797,7 @@ 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.
|
||||
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.014` reste propriétaire de la fermeture completeness/security cross-layer.
|
||||
### `pre.012-fix.001` — future Tauri Start `Send`
|
||||
|
||||
Le gate opérateur de `pre.012` a arrêté la tranche sur un défaut de compilation déterministe dans `AppState::start_route` : le `std::sync::MutexGuard<u32>` de `inventory_generation` restait considéré vivant au franchissement du `await` final, malgré `std::mem::drop(generation)`. Le futur exposé par la commande Tauri `start_route` ne satisfaisait donc plus la borne `Send` imposée par `tauri::ipc::ResultFutureTag::future`. Les audits Rust/Markdown étaient propres et les suites Worker indépendantes restaient vertes, mais `cargo check`, Clippy, les tests Desk/workspace et `cargo tauri dev` ne pouvaient pas compiler le Desk.
|
||||
@@ -850,4 +854,34 @@ Une seconde ligne de diagnostic lit au mieux l'observation durable la plus ancie
|
||||
Ce fix n'altère ni l'identité canonique, ni la comparaison d'égalité, ni la politique de conflit, ni le Store schema, ni la stratégie d'acquisition. `serde_json` est utilisé uniquement dans le backend PostgreSQL pour classifier les composants du payload RAW v1 déjà canonique au moment d'un conflit.
|
||||
|
||||
Le prochain live Yellowstone + HTTP Block Polling doit permettre de distinguer immédiatement un désaccord de `slot`/`block_time`, de transaction wire, de transaction index, de version ou d'un sous-ensemble précis de `meta` (par exemple `logMessages` ou `rewards`).
|
||||
### `pre.013` — découplage borné Yellowstone Block / HTTP `getBlock`
|
||||
|
||||
Le gate de `pre.012-fix.004` est propre sur les nouveaux canaris Store et Worker. Le live Mainnet ne reproduit aucun `content_conflict`, mais reproduit deux fois un terminal Yellowstone `source_failed / onchain_transport.grpc_backpressure_overflow`. Les WARN Transport apparaissent à `22:06:52.734796` puis `22:08:39.746262`, alors que les Stop Yellowstone n'arrivent qu'à `22:07:10.781900` puis `22:08:51.337483`. Le Stop ne crée donc pas l'overflow ; il révèle ensuite le terminal déjà produit par Transport.
|
||||
|
||||
La cause est le chemin Yellowstone Block historique entièrement séquentiel :
|
||||
|
||||
```text
|
||||
Block update gRPC
|
||||
-> await HTTP getBlock
|
||||
-> await admission de toutes les transactions du bloc
|
||||
-> seulement ensuite next_update gRPC
|
||||
```
|
||||
|
||||
Cette source était en outre exclue de `uses_hydration()`, donc ne recevait aucun quota `pending/in-flight` du supervisor multi-source. Une queue Transport plus grande ne ferait que retarder le même défaut.
|
||||
|
||||
`pre.013` corrige le débit sans modifier Transport : Yellowstone Block est désormais une source hydratante pour le partitionnement des budgets existants. Un coordinateur privé de slots borne les pending ; jusqu'au quota `in-flight`, chaque tâche possédée exécute `getBlock` puis l'admission complète du bloc. La boucle source reste disponible pour `session.next_update()` tant qu'une place pending existe. Le slot n'est `settled` qu'après admission complète. Stop/abort joint toutes les tâches et purge les pending sans faux settlement.
|
||||
|
||||
La politique reste fail-closed : aucune hausse de `YellowstoneGrpcSessionSettings.update_channel_capacity`, aucune queue non bornée, aucun silent drop et aucun masquage de `grpc_backpressure_overflow`. Si le débit aval reste durablement inférieur à la chaîne malgré la concurrence bornée, une saturation terminale reste correcte et observable.
|
||||
|
||||
Canaris ajoutés :
|
||||
|
||||
```text
|
||||
v0_3_15_pre_013_yellowstone_block_hydration_coordinator_is_bounded_before_http_work
|
||||
v0_3_15_pre_013_yellowstone_block_hydration_is_bounded_concurrent_and_stop_preemptible
|
||||
v0_3_15_pre_013_yellowstone_block_backpressure_fix_adds_no_public_surface
|
||||
```
|
||||
|
||||
Aucun type du coordinateur n'est exporté publiquement.
|
||||
|
||||
Validation live requise : Yellowstone Mainnet seul pendant une durée supérieure aux ~80 s de reproduction, puis Yellowstone + HTTP Block Polling en parallèle. Le run doit rester `Healthy`, sans `grpc_backpressure_overflow`, et les Stop ciblés doivent finir `Stopped`. Le diagnostic `pre.012-fix.004` reste actif si un `content_conflict` réapparaît.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user