v0.3.10-pre.005

This commit is contained in:
2026-09-06 21:59:15 +02:00
parent eaf6fae94c
commit 0683b70abe
8 changed files with 815 additions and 70 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md -->
<!-- version: 6 -->
<!-- version: 7 -->
# Validation v0.3.10 — RAW Transaction commune + Worker dingestion
@@ -228,8 +228,8 @@ Familles à prouver séparément :
```text
HTTP getTransaction
HTTP getBlock transaction
WS blockSubscribe transaction
Helius transactionSubscribe full
WS blockSubscribe transaction legacy/v0 full/base64
Helius transactionSubscribe full/base64 -> negative parity / hydration
Yellowstone transaction
Yellowstone block transaction
Transaction V1
@@ -796,5 +796,59 @@ Version technique du fix :
workspace.package.version = 0.3.10-pre.4.fix.1
```
Le gate complet de `pre.004` doit être rejoué après application du fix avant ouverture de `pre.005`.
Le rejeu du fix communiqué le 2026-09-06 est intégralement vert :
```text
cargo fmt --all : exécuté
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean (339 table(s), 758 file(s))
cargo check --workspace : PASS
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
cargo test -p ksp-raw-transaction-lib : PASS, 12 unit + 9 intégration, 0 échec
cargo test -p ksp-onchain-transport-lib : PASS, 387 unit + 51 public API + 43 release completeness + 4 doctests, 0 échec ; smokes live ignorés comme prévu
cargo test -p ksp-job-backfill-lib : PASS, 51 unit + 21 intégration, 0 échec
```
Les arbres Cargo nont pas été rejoués sur ce fix car aucune dépendance ni feature na changé. `pre.004-fix.001` est donc fermé et `pre.005` peut souvrir.
### 13.7 Qualification WS/Helius de `pre.005`
Le canari `ksp-job-backfill-lib/tests/ws_raw_parity.rs` utilise uniquement des serveurs HTTP/WS locaux déterministes. Aucun smoke réseau ni secret provider nest requis.
Cas positif standard :
```text
HTTP getBlock observed
WS blockSubscribe confirmed/full/base64/maxSupportedTransactionVersion=0
-> même SolanaConfirmedBlock
-> même RawTransactionReference
-> même slot
-> même block_time
-> mêmes bytes RAW v1
-> même content_hash
```
Ce gate qualifie uniquement le sous-ensemble legacy/v0. Transaction V1 reste au gate `pre.006`.
Cas négatif Helius :
```text
Helius transactionSubscribe full/base64
-> même signature/identité que HTTP
-> même slot
-> transaction wire + meta + transactionIndex présents
-> blockTime absent
-> version absente
meilleure projection Helius
!= hydration HTTP complète sur block_time
!= bytes RAW v1
!= content_hash
```
Le résultat est normatif pour le Worker : Helius `transactionSubscribe` est un signal live riche qui doit être hydraté par HTTP avant persistence RAW. Aucun champ absent nest inventé et aucun RAW v2 nest introduit.
La dépendance `tokio-tungstenite` nécessaire aux fixtures WS est strictement `dev-dependencies`; `tests/dependency_boundary.rs` verrouille cette frontière. Aucun edge de production Transport -> common nest ajouté.