v0.3.13-pre.008
This commit is contained in:
@@ -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
|
||||
```
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md -->
|
||||
<!-- version: 7 -->
|
||||
<!-- version: 8 -->
|
||||
|
||||
# Validation v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source
|
||||
|
||||
@@ -1242,3 +1242,49 @@ cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
|
||||
cargo tree --duplicates
|
||||
```
|
||||
|
||||
## 63. Gate opérateur pre.007 reçu
|
||||
|
||||
Preuve communiquée le 10 septembre 2026 : fmt PASS, audits Rust clean/export completeness 0, Markdown clean `340/841`, `cargo check --workspace` PASS, Clippy strict PASS, Worker `90/90` unit, `4/4` cross-layer, `14/14` dependency-boundary, `21/21` hardening, `15/15` public-api, `4/4` release-completeness et `0` doc-test. Le log fourni ne contient pas les sorties Transport ciblées ni les trois `cargo tree`.
|
||||
|
||||
## 64. Surface pre.008 matérialisée
|
||||
|
||||
```text
|
||||
RawTransactionIngestGlobalHydrationRegistry privé
|
||||
coalescence globale (network, signature, commitment)
|
||||
leader unique getTransaction observed
|
||||
résultat partagé par watch borné/retiré
|
||||
RawTransactionIngestPersistenceConvergence privé
|
||||
clé canonique (network, signature)
|
||||
hash canonique conflict-checked
|
||||
première persistence atomique entity + observation
|
||||
observations suivantes via record_raw_transaction_observation
|
||||
RawObservationKey source-distincte et idempotente
|
||||
```
|
||||
|
||||
## 65. Invariants pre.008
|
||||
|
||||
```text
|
||||
aucun fanout HTTP pour une même clé d'hydration simultanée
|
||||
aucune fusion des identités de source dans l'API publique
|
||||
une identité RAW canonique n'est pas dupliquée par source
|
||||
hash divergent pour même network/signature => content conflict terminal
|
||||
observation source différente => observation durable supplémentaire
|
||||
replay même observation => AlreadyPresent sans réécriture RAW
|
||||
registre hydration <= admission_queue_capacity
|
||||
cache persistence runtime <= max(admission_queue_capacity, persistence_concurrency)
|
||||
aucun backend Store physique ni client HTTP direct dans Worker
|
||||
```
|
||||
|
||||
## 66. Validation locale d'assemblage pre.008
|
||||
|
||||
Le toolchain Cargo/Rustfmt n'est pas disponible dans l'environnement d'assemblage. Les commandes Cargo post-modification restent `NON EXÉCUTÉ LOCAL`; les audits statiques et contrôles de packaging sont consignés dans le delta `pre.008`.
|
||||
|
||||
## 67. Non-claims pre.008
|
||||
|
||||
```text
|
||||
pas encore de fairness adversariale complète avant pre.009
|
||||
pas encore de canari starvation/duplicate storm cross-source complet avant pre.009
|
||||
pas de failover provider implicite
|
||||
pas de préférence silencieuse entre sources divergentes
|
||||
pas de nouveaux compteurs/health publics multi-source avant pre.010
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user