v0.3.13-pre.008

This commit is contained in:
2026-09-10 17:52:35 +02:00
parent 8bb530e9b4
commit 1f2720463b
18 changed files with 899 additions and 36 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Plan v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source RawTransaction
@@ -1246,3 +1246,40 @@ cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
cargo tree --duplicates
```
## 62. Gate opérateur pre.007 reçu avant pre.008
Le gate communiqué le 10 septembre 2026 est vert pour toutes les commandes effectivement exécutées : fmt, audits Rust/Markdown, `cargo check --workspace`, Clippy strict et toutes les suites Worker (`90` unit, `4` cross-layer, `14` dependency-boundary, `21` hardening, `15` public-api, `4` release-completeness, `0` doc-test). Les sorties Transport ciblées et `cargo tree` ne figurent pas dans le log reçu et ne sont pas déclarées PASS.
## 63. Implémentation pre.008 — convergence cross-source
Les trois familles reference-bearing Yellowstone, Standard Logs et Helius Transaction partagent un `RawTransactionIngestGlobalHydrationRegistry` privé au run. La clé reste exactement `(network, signature, commitment)`. La première source devient leader et exécute `getTransaction observed`; les suivantes attendent le même résultat via un canal `watch` privé. Le registre est borné par `admission_queue_capacity` et retiré après publication du résultat.
La canonicalisation reste inchangée et source-neutral. La convergence persistence utilise `(network, signature)` puis compare le `RawContentHash` canonique. Une divergence de hash devient le content conflict terminal existant.
## 64. Observations multiples et persistence
La première acquisition d'une identité canonique passe par l'écriture Store atomique existante `RawTransaction + RawTransactionObservation`. Tant que le hash reste identique, les acquisitions suivantes de la même identité n'écrivent plus l'entité : elles appellent uniquement `record_raw_transaction_observation` via `ksp-store-lib`.
Les `RawObservationKey` restent déterministes et source-dépendantes. Deux sources distinctes peuvent donc produire deux observations durables pour une seule entité RAW, tandis qu'un replay de la même observation reste idempotent (`AlreadyPresent`). `NotRecorded` sur une observation supplémentaire est considéré incohérent et devient une faute runtime sûre.
La cache persistence est privée, run-local et bornée à `max(admission_queue_capacity, persistence_concurrency)` dans le runtime productif afin de couvrir toutes les tâches persistence simultanées sans bypass de convergence.
## 65. Frontière de tranche pre.008
`pre.008` ferme la coalescence cross-source, l'unique hydration globale par clé et les observations Store multiples. Elle ne ferme pas encore les scénarios de disagreement/fairness sous charge hostile, les duplicate storms prolongés, la starvation ou les bornes adversariales détaillées : ces preuves appartiennent à `pre.009`.
## 66. Gate opérateur requis avant pre.009
```bash
cargo fmt --all
cargo fmt --all -- --check
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
```