v0.3.12-pre.009

This commit is contained in:
2026-09-09 22:06:18 +02:00
parent 223f11b989
commit f9d4e6bc74
6 changed files with 447 additions and 22 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md -->
<!-- version: 18 -->
<!-- version: 19 -->
# Validation v0.3.12 — Yellowstone + hydration HTTP + continuité de run du Worker RawTransaction
@@ -1705,3 +1705,104 @@ history remediation remains outside this crate
```
Le correctif ne modifie aucun comportement reconnect/replay, aucune ownership de `from_slot`/`ReplayInfo`, aucune processing frontier, hydration, admission, persistence ou API publique.
## 73. Gate opérateur `pre.008-fix.002`
Le gate opérateur communiqué pour `0.3.12-pre.8.fix.2` est entièrement vert :
```text
General Rust rule audit : clean
Rust export completeness audit : 0 candidate(s)
KSP workspace Rust rule audit : clean
Markdown table audit : clean (340 tables, 817 fichiers)
cargo check --workspace : PASS
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
ksp-onchain-transport-lib : 388 unit PASS, 51 public_api PASS, 43 release_completeness PASS, doc-tests PASS
ksp-worker-raw-transaction-ingest-lib : 63 unit PASS, 9 dependency_boundary PASS, 15 hardening PASS, 9 public_api PASS, 3 release_completeness PASS
```
Les smokes réseau restent `ignored` et operator-only. `pre.008-fix.002` devient la base autoritaire de `pre.009`.
## 74. No-orphan et frontier conservative `pre.009`
Le cleanup terminal du source task conserve l'ordre suivant :
```text
stop/fault source
-> abort_all des hydrations privées
-> join de toutes les tâches privées
-> clear de la coalescence/pending source
-> abandon des pending de processing frontier
-> Closing
-> close session Transport
-> Closed ou Failed
```
L'abandon d'un pending n'est jamais transformé en `settled`. `discard_all_pending` supprime de la frontier toute slot qui possédait encore du travail pending, même si d'autres signaux de cette même slot avaient déjà été settled. La dernière `processing_frontier_slot` publiée reste donc conservative et ne peut pas avancer à travers du travail abandonné pendant stop/fault.
Aucun nouvel état public ou compteur n'est ajouté.
## 75. Hardening races/retry/backpressure `pre.009`
Les nouveaux canaris déterministes couvrent :
```text
duplicate storm bornée par max_pending_signals
hydration réellement in-flight -> abort/join puis projection pending nettoyée
même network/signature/commitment -> une seule entrée de coalescence
saturation -> source.hydration_pending_saturated, aucun drop silencieux
abort -> pending_signal_count = 0, map vide, JoinSet vide
abort -> hydration_pending = 0 sans faux settlement de la slot abandonnée
settle_pending overflow -> aucune mutation partielle du pending/frontier
un seul appel Worker get_transaction_observed
aucun timer sleep/interval de retry Worker
```
Le retry HTTP reste exclusivement propriété de `ksp-onchain-transport-lib`. Le Worker ne superpose donc aucun retry loop au retry Transport.
Les canaris runtime déjà présents depuis le socle `0.3.11` restent les preuves de :
```text
Store lent -> backpressure observable sans drop ni admission unbounded
source failure -> compteur source_failure et terminal fault stable
stop pendant drain -> une erreur Store déjà observée n'est pas masquée
drain timeout -> abort/join de tous les source/persistence tasks possédés
counter exhaustion snapshot -> ERROR_CODE_RAW_TRANSACTION_INGEST_COUNTER_EXHAUSTED sans wrap
```
Les fixtures hydration existantes restent les preuves de `getTransaction null -> Missing` et des erreurs de validation/hydration terminales sans payload distant.
## 76. Non-claims et gate `pre.009`
`pre.009` ne modifie pas :
```text
Transport reconnect/from_slot/ReplayInfo
politique proven retention gap -> source fault
provenance composite
format Common RAW
Store API/backend
processing frontier publique
API publique Worker
Config ou Backfill
```
Aucun retry missing futur, failover multi-provider, repair automatique, checkpoint durable ou exactly-once n'est introduit.
Gate opérateur requis :
```bash
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-onchain-transport-lib
cargo test -p ksp-worker-raw-transaction-ingest-lib
cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal
cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
cargo tree --duplicates
```
Dans l'environnement d'assemblage, `cargo`, `rustc` et `rustfmt` ne sont pas installés ; aucun gate Cargo local n'est revendiqué.