v0.3.12-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md -->
|
||||
<!-- version: 12 -->
|
||||
<!-- version: 13 -->
|
||||
|
||||
# Validation v0.3.12 — Yellowstone + hydration HTTP + continuité de run du Worker RawTransaction
|
||||
|
||||
@@ -1339,3 +1339,110 @@ cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
cargo test -p ksp-worker-raw-transaction-ingest-lib
|
||||
```
|
||||
|
||||
## 57. Gate opérateur `pre.006-fix.001`
|
||||
|
||||
Le gate opérateur communiqué pour `0.3.12-pre.6.fix.1` 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, 811 fichiers)
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
|
||||
cargo test -p ksp-worker-raw-transaction-ingest-lib : 58 PASS / 0 FAIL
|
||||
```
|
||||
|
||||
Les suites `dependency_boundary`, `hardening`, `public_api`, `release_completeness` et les doc-tests passent également. `pre.006-fix.001` devient donc la base autoritaire de `pre.007`.
|
||||
|
||||
## 58. Contrat processing frontier `pre.007`
|
||||
|
||||
`pre.007` introduit une frontier strictement run-local liée uniquement au travail réellement observé par le source task :
|
||||
|
||||
```text
|
||||
source signal Transaction/Status/Block validé -> pending
|
||||
getTransaction -> Missing -> settled
|
||||
getTransaction -> Available + ingress accepté par admission -> settled
|
||||
BlockMeta/Slot continuity-only observé -> settled immédiat
|
||||
```
|
||||
|
||||
`settled` ne signifie ni persisté, ni durable, ni complet sur la blockchain. L'admission queue depth et `in_flight_persistence` restent les métriques séparées qui décrivent les étages aval.
|
||||
|
||||
La projection publique ajoute uniquement :
|
||||
|
||||
```text
|
||||
hydration_pending
|
||||
processing_frontier_slot
|
||||
oldest_pending_slot
|
||||
```
|
||||
|
||||
`processing_frontier_slot` est la plus haute slot réellement observée et settled qui n'est pas située au-delà de la plus ancienne slot pending. Une slot pending bloque donc toujours l'avancement de la frontier.
|
||||
|
||||
## 59. Borne mémoire et compaction
|
||||
|
||||
Le tracker privé conserve les slots pending exactes et compacte les slots settled-only par intervalles autour des slots pending. Il ne conserve qu'un maximum settled par intervalle, plus les slots qui possèdent encore du pending.
|
||||
|
||||
Avec `N` slots pending distinctes, la représentation reste donc bornée linéairement par le même travail déjà borné par le coordinator d'hydration ; un flux continuity-only sans pending se compacte à une seule slot settled candidate.
|
||||
|
||||
Aucune map de slots historique/non bornée n'est créée.
|
||||
|
||||
## 60. Projection supervisor et activité
|
||||
|
||||
Le source task publie sa projection par un `tokio::sync::watch` latest-value privé. Le supervisor est l'unique owner du `RawTransactionIngestSnapshotPublisher` et applique la projection dans le snapshot concret existant.
|
||||
|
||||
La projection peut coalescer des valeurs intermédiaires ; elle ne perd pas de compteur durable car elle ne transporte que des gauges/latest-values calculées à partir de l'état source courant.
|
||||
|
||||
`WorkerActivity` devient `Active` lorsque `hydration_pending > 0`, même si l'admission queue et les persistences sont momentanément à zéro.
|
||||
|
||||
Aucune signature, filter, provider, endpoint, transaction/meta ou erreur distante n'entre dans la projection.
|
||||
|
||||
## 61. Canaris `pre.007`
|
||||
|
||||
Les canaris déterministes ajoutés vérifient :
|
||||
|
||||
```text
|
||||
frontier initiale vide
|
||||
slot settled 100 -> frontier 100
|
||||
pending 102 + settled 105 -> frontier reste 100
|
||||
pending 104 puis settle 102 -> frontier 102, oldest pending 104
|
||||
settle 104 -> frontier 105
|
||||
compaction de 0..1000 avec pending 10/20 -> <= 5 états de slot
|
||||
snapshot latest-value hydration_pending/frontier/oldest_pending
|
||||
WorkerActivity active quand hydration_pending > 0
|
||||
getters publics exacts
|
||||
aucun ReplayInfo/from_slot/continuity_gap/repair
|
||||
aucun backend/Config/Backfill/direct reqwest/tonic/proto
|
||||
```
|
||||
|
||||
## 62. Non-claims `pre.007`
|
||||
|
||||
`pre.007` ne prétend pas :
|
||||
|
||||
```text
|
||||
interpréter reconnect Transport
|
||||
modifier ou décider from_slot
|
||||
interpréter SubscribeReplayInfo
|
||||
prouver un replay réussi
|
||||
prouver une continuité blockchain
|
||||
maintenir un checkpoint inter-process
|
||||
fault sur gap de rétention
|
||||
lancer un repair/backfill
|
||||
```
|
||||
|
||||
Ces responsabilités restent `pre.008` et les releases de repair ultérieures.
|
||||
|
||||
## 63. Gate opérateur requis pour `pre.007`
|
||||
|
||||
```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-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é.
|
||||
|
||||
Reference in New Issue
Block a user