v0.3.12-pre.005
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user