v0.3.12-pre.005

This commit is contained in:
2026-09-09 12:45:29 +02:00
parent df1dbbb8fb
commit 3a8fa87acb
9 changed files with 846 additions and 11 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md -->
<!-- version: 8 -->
<!-- version: 9 -->
# Validation v0.3.12 — Yellowstone + hydration HTTP + continuité de run du Worker RawTransaction
@@ -968,3 +968,119 @@ Version du workspace après correctif :
```
Aucune API publique, dépendance, provenance, politique retry, surface Block/continuity ou source task productive n'est modifiée.
## 41. Gate opérateur reçu pour `pre.004-fix.001`
Après application de `pre.004-fix.001`, l'opérateur a exécuté :
```text
cargo fmt --all : PASS visible
audit Rust : clean
Rust export completeness : 0 candidate
KSP workspace Rust rule audit : clean
audit Markdown : clean (340 tables, 807 fichiers)
cargo check --workspace : PASS visible
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS visible
cargo test -p ksp-raw-transaction-lib : PASS
unit tests Common RAW : 17 PASS, 0 fail
integration Common RAW dependency_boundary : 2 PASS
integration Common RAW public_api : 5 PASS
integration Common RAW release_completeness : 2 PASS
integration Common RAW security_hardening : 2 PASS
cargo test -p ksp-worker-raw-transaction-ingest-lib : PASS
unit tests Worker : 52 PASS, 0 fail
dependency_boundary Worker : 5 PASS
hardening Worker : 11 PASS
public_api Worker : 8 PASS
release_completeness Worker : 3 PASS
doc-tests : 0 fail
```
Résultat : `0.3.12-pre.4.fix.1` devient la base autoritaire de `pre.005`.
## 42. Gate `pre.005` — Block transactionnel et continuité BlockMeta/Slot
La tranche porte `workspace.package.version = 0.3.12-pre.5`. Elle reste sans source task productive et ferme trois adapters privés contre la façade Transport existante.
`YellowstoneBlockUpdate` est adapté vers zéro ou plusieurs `RawTransactionIngestSourceSignal` :
```text
un signal par transaction réellement incluse dans transactions[]
ordre des signaux == ordre source
slot == slot du Block
transaction_index == index Yellowstone de la transaction
signature == signature Yellowstone 64 bytes
family = Block
filters/created_at/network/route réutilisent les mêmes règles que Transaction/Status
```
Aucun body/meta Yellowstone du Block n'est admis directement. Ces signaux suivent la même hydration `getTransaction` que les autres familles et utilisent la méthode de provenance `block_get_transaction`. Aucun `get_block_observed` n'est introduit.
`YellowstoneBlockMetaUpdate` et `YellowstoneSlotUpdate` convergent séparément vers `RawTransactionIngestContinuitySignal`, strictement continuity-only :
```text
created_at
family = BlockMeta | Slot
matched_filter_count
matched_filter_fingerprint
matched_filter_id optionnel
network
parent_slot optionnel
route
slot
status optionnel
```
Le signal de continuité ne contient ni signature transactionnelle, ni transaction/meta/payload, ni remote error. Pour `Slot`, les sept états Yellowstone sont mappés vers un enum Worker privé. Le texte `dead_error` n'est jamais lu ni recopié. Pour `BlockMeta`, aucun compteur n'est interprété comme preuve de complétude transactionnelle.
## 43. `RUST-API-008` et frontière productive `pre.005`
Comme `pre.006` reste la première tranche qui ouvre réellement une session Yellowstone et consomme ces adapters dans le runtime normal, les nouveaux helpers `Block`/`BlockMeta`/`Slot` demeurent sous `#[cfg(test)]`.
Cette décision évite simultanément :
```text
code privé mort dans le build normal
surface publique artificielle
#[allow(dead_code)] / #[expect(dead_code)]
activation prématurée du source task
```
Les impls contre les DTOs Transport réels sont néanmoins compilés dans les tests. Les fixtures génériques qualifient l'ordre, les identités et la séparation RAW/continuité sans nécessiter de constructeur public supplémentaire dans Transport.
## 44. Canaris déterministes `pre.005`
Les preuves ajoutées couvrent :
```text
Block -> N signaux dans l'ordre exact source
signature/index/slot de chaque transaction Block conservés
family Block distincte
provenance hydration Block -> block_get_transaction
BlockMeta -> continuity-only
Slot -> continuity-only
mapping exact des sept YellowstoneSlotStatus
absence de signature/transaction/meta/payload/error dans le signal continuity
absence de YellowstoneSlotUpdate::dead_error
absence de getBlock/get_block_observed
absence d'open_standard_subscribe/next_update/source spawn
absence Config/Backfill/backend/reqwest/tonic/proto direct dans le Worker
```
## 45. Non-claims `pre.005`
`pre.005` ne prétend pas avoir :
```text
ouvert un stream Yellowstone productif
hydraté une transaction Block reçue en live
coalescé Block + Transaction + TransactionStatus
persisté un RAW depuis une update Block live
utilisé BlockMeta ou Slot comme preuve de complétude transactionnelle
branché la processing frontier
interprété from_slot ou ReplayInfo
détecté/réparé un gap de continuité
introduit une politique reconnect Worker
```
La tranche suivante reste `pre.006` : source task productive, session Yellowstone via Transport, hydration/admission et coalescence bornée dans le supervisor existant.