v0.3.13-pre.004

This commit is contained in:
2026-09-10 14:25:30 +02:00
parent 31c0a83e51
commit 28e4da3879
13 changed files with 1303 additions and 33 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Plan v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source RawTransaction
@@ -512,6 +512,29 @@ Retry/reconnect/resubscribe : Transport WS.
Preuve : parité bytes/hash entre notification blockSubscribe et `getBlock`/fixture Common RAW pour Legacy/V0 puis V1 ; canari `block:null` ; unsupported validator explicite.
### 14.1 Décisions matérialisées en pre.004
`RawTransactionIngestStandardBlockSource` est caller-composed à partir d'un `WsEndpointSettings` `solana_standard`, d'un `SolanaBlockSubscribeFilter` et d'un commitment explicite `Confirmed` ou `Finalized`. Elle réutilise exclusivement `SolanaStandardWsSession` et son `block_subscribe`; aucun acteur WebSocket Worker parallèle n'est ajouté.
La requête runtime est figée à :
```text
encoding = Base64
transactionDetails = Full
maxSupportedTransactionVersion = 1
showRewards = false
```
La tranche qualifie RAW-direct exactement `Legacy`, `V0` et `V1`. La preuve V1 est locale et déterministe : une fixture wire V1 est sérialisée avec les types publics de `ksp-raw-transaction-lib`, injectée dans le projecteur de bloc, puis comparée au Common RAW canonique attendu. Une version omise/nulle ou `>1` reste non qualifiée et produit une faute sûre. Aucun fallback HTTP `getBlock` ou `getTransaction` n'est inventé dans cette source.
Le matériau direct conserve la signature embarquée, le slot de notification, le `blockTime`, le `meta`, la version explicitement qualifiée et l'index de transaction dans le bloc. `block: null`, une erreur distante, un mismatch `context.slot`, un champ transactions omis/nul ou un encodage non Base64 échouent avant toute progression de frontier.
Pour un bloc de plusieurs transactions, le Worker ne projette le slot settled qu'après l'admission réussie de toutes ses transactions. La voie RAW-direct n'utilise pas le compteur `hydration_pending`; un stop ou une faute au milieu du bloc laisse la frontier en deçà du slot.
L'identité logique inclut la famille `standard_block`, le réseau, les identités provider/endpoint sûres, le commitment et une empreinte privée du filtre. La valeur brute d'un filtre `MentionsAccountOrProgram(pubkey)` ne sort pas dans `Debug` ou la provenance.
La barrière de `pre.002` reste active : une seule source Yellowstone, Standard Logs ou Standard Block peut être exécutée. Une collection `2..32` reste rejetée avant spawn jusqu'au supervisor `pre.007`.
## 15. Contrat source Helius transactionSubscribe
Entrée caller-composed :