v0.3.13-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Plan v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source RawTransaction
|
||||
|
||||
@@ -1145,3 +1145,104 @@ L'empreinte de profil inclut les identités sûres endpoint/provider et les capa
|
||||
|
||||
La supervision simultanée, le lifecycle par source et l'inventaire multi-source restent exclusivement `pre.007`. `pre.006` ne transforme pas le poller HTTP en Backfill et ne crée aucun checkpoint durable inter-run.
|
||||
|
||||
## 56. Gate opérateur pre.006-fix.001 reçu avant pre.007
|
||||
|
||||
Le gate opérateur communiqué le 10 septembre 2026 est vert sur le périmètre exécuté après `pre.006-fix.001` :
|
||||
|
||||
```text
|
||||
cargo fmt --all + --check : PASS
|
||||
audit Rust général : clean
|
||||
export completeness : 0 candidate
|
||||
workspace Rust rules : clean
|
||||
Markdown : clean, 340 tables / 840 files
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
|
||||
worker unit : 88/88 PASS
|
||||
cross_layer_completeness : 4/4 PASS
|
||||
dependency_boundary : 13/13 PASS
|
||||
hardening : 20/20 PASS
|
||||
public_api : 14/14 PASS
|
||||
release_completeness : 4/4 PASS
|
||||
doc-tests Worker : 0/0 PASS
|
||||
```
|
||||
|
||||
Le log communiqué ne contient pas les sorties séparées `cargo test -p ksp-onchain-transport-lib` ni les trois `cargo tree`; elles restent à reprendre dans un gate technique ultérieur et ne sont pas déclarées PASS ici.
|
||||
|
||||
## 57. Implémentation pre.007 — supervisor et inventaire multi-source
|
||||
|
||||
La barrière `runtime_resources.multi_source_activation_pending` disparaît. Après validation réseau/identité/borne de la collection, `RawTransactionIngestRuntimeResources::run_live_sources` consomme les `1..32` sources et lance chacune dans un `tokio::task::JoinSet` privé.
|
||||
|
||||
Le supervisor source possède :
|
||||
|
||||
```text
|
||||
un stop receiver Worker
|
||||
un stop sender privé partagé vers toutes les sources
|
||||
un JoinSet de toutes les tasks source
|
||||
un inventaire privé borné par source_key
|
||||
le sender de frontier agrégée vers le supervisor Worker
|
||||
```
|
||||
|
||||
Il n'existe aucun ordre de priorité, source primaire, standby ou first-provider-wins. Toutes les sources configurées sont démarrées dans le même run.
|
||||
|
||||
## 58. Terminalité, stop et joins pre.007
|
||||
|
||||
Politique conservatrice :
|
||||
|
||||
```text
|
||||
stop Worker -> stop toutes les sources -> join toutes -> résultat supervisor
|
||||
source Err -> stop des sœurs -> join toutes -> faute source terminale
|
||||
source Ok avant stop Worker -> perte inattendue d'une source configurée -> faute terminale
|
||||
join panic/cancel -> faute terminale sûre
|
||||
```
|
||||
|
||||
Cette politique ne tente aucun failover implicite. KSP ne possède encore aucune preuve que deux sources couvrent le même ensemble de transactions ou de filtres.
|
||||
|
||||
Le supervisor imbriqué retourne son résultat au supervisor Worker existant, qui conserve la sémantique globale `source_failed`, la transition Stopping et le drain borné admission/persistence déjà établis.
|
||||
|
||||
## 59. Inventaire et processing frontier multi-source
|
||||
|
||||
L'inventaire privé contient au plus 32 couples logiques `source_key -> latest RawTransactionIngestProcessingFrontierProjection`. Les clés ne sont jamais publiées par l'API ou les snapshots.
|
||||
|
||||
Chaque source continue d'émettre sa projection latest-value locale. Un wrapper privé la reporte dans l'inventaire, qui publie ensuite une projection source-neutral agrégée :
|
||||
|
||||
```text
|
||||
hydration_pending = somme saturante temporaire des projections source
|
||||
oldest_pending_slot = minimum des pending connus
|
||||
processing_frontier_slot = None tant qu'une source n'a pas de frontier ; sinon minimum de toutes les frontiers
|
||||
source_state = Failed > Reconnecting > Closing > Active > Closed/None
|
||||
reconnect/replay/gap counters = agrégés sans wrap
|
||||
```
|
||||
|
||||
Le choix du minimum est volontairement conservateur : une source plus avancée ne prouve jamais que les autres couvrent le même univers. Cette frontier reste run-local et ne devient ni checkpoint durable ni preuve de completeness blockchain.
|
||||
|
||||
## 60. Frontière de tranche pre.007
|
||||
|
||||
`pre.007` active la simultanéité et le lifecycle source mais ne ferme pas encore la convergence transactionnelle cross-source. En particulier :
|
||||
|
||||
```text
|
||||
pas encore de coalescence globale entre signaux de sources différentes
|
||||
pas encore d'unique hydration cross-source garantie
|
||||
pas encore de lot canonique multi-observations
|
||||
pas encore de persistence observation supplémentaire cross-source
|
||||
pas encore de fairness durcie contre duplicate storm
|
||||
pas encore de nouveaux compteurs publics source_total/source_active/source_failed
|
||||
```
|
||||
|
||||
Les coordinators d'hydration des sources reference-bearing restent donc source-local pendant cette tranche. La borne absolue reste finie par source et par nombre de sources ; la borne globale/coalescence prévue par l'architecture sera fermée en `pre.008/pre.009` avant la release stable.
|
||||
|
||||
## 61. Gate opérateur requis avant pre.008
|
||||
|
||||
```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: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Validation v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source
|
||||
|
||||
@@ -1155,3 +1155,90 @@ cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
|
||||
cargo tree --duplicates
|
||||
```
|
||||
|
||||
## 57. Gate opérateur pre.006-fix.001 reçu
|
||||
|
||||
Preuve communiquée le 10 septembre 2026 sur les commandes exécutées :
|
||||
|
||||
```text
|
||||
fmt : PASS
|
||||
audits Rust : clean / export completeness 0
|
||||
Markdown : clean, 340 tables / 840 files
|
||||
cargo check --workspace : PASS
|
||||
clippy workspace all-targets all-features -D warnings : PASS
|
||||
worker unit : 88/88 PASS
|
||||
cross-layer : 4/4 PASS
|
||||
dependency boundary : 13/13 PASS
|
||||
hardening : 20/20 PASS
|
||||
public API : 14/14 PASS
|
||||
release completeness : 4/4 PASS
|
||||
```
|
||||
|
||||
Les sorties Transport ciblées et `cargo tree` demandées dans le gate complet ne figurent pas dans le log reçu et ne sont donc pas déclarées PASS.
|
||||
|
||||
## 58. Surface pre.007 matérialisée
|
||||
|
||||
```text
|
||||
RawTransactionIngestRuntimeResources::run_live_sources
|
||||
RawTransactionIngestSourceInventory privé
|
||||
RawTransactionIngestSourceInventoryPublisher privé
|
||||
JoinSet privé 1..32 sources
|
||||
stop fanout privé
|
||||
drain/join de toutes les sources
|
||||
projection processing frontier agrégée
|
||||
suppression de multi_source_activation_pending
|
||||
```
|
||||
|
||||
Aucune nouvelle API publique n'est nécessaire : les méthodes `from_*`, `try_push_*`, `source_count` et `start_with_runtime_resources` existantes suffisent à composer puis lancer plusieurs sources.
|
||||
|
||||
## 59. Invariants supervisor/source inventory vérifiés statiquement
|
||||
|
||||
La tranche exige :
|
||||
|
||||
```text
|
||||
1..32 sources validées avant run
|
||||
toutes les sources présentes sont spawnees
|
||||
aucun sous-ensemble silencieux
|
||||
aucune politique primary/standby/fallback
|
||||
une source fautive arrête les autres et le supervisor les join
|
||||
une fermeture source avant stop est terminale
|
||||
source_key reste privée
|
||||
inventaire borné initialisé depuis les source_key validées
|
||||
frontier globale conservatrice = minimum seulement si toutes les sources ont une frontier
|
||||
oldest pending global = minimum
|
||||
état source agrégé sans provider material
|
||||
```
|
||||
|
||||
Les tests déterministes ajoutés utilisent des tasks factices pour prouver le join de trois sources au stop et le stop/join d'une sœur après faute, sans I/O réseau.
|
||||
|
||||
## 60. Validation locale d'assemblage pre.007
|
||||
|
||||
Le toolchain Cargo/Rustfmt n'est pas disponible dans l'environnement d'assemblage. Les commandes Cargo post-modification restent `NON EXÉCUTÉ LOCAL`; seuls les audits statiques effectivement exécutés sont déclarés PASS dans le delta.
|
||||
|
||||
## 61. Non-claims pre.007
|
||||
|
||||
```text
|
||||
pas de coalescence cross-source complète avant pre.008
|
||||
pas d'unique hydration globale cross-source garantie avant pre.008
|
||||
pas d'observations Store multiples convergées avant pre.008
|
||||
pas de fairness duplicate-storm fermée avant pre.009
|
||||
pas de nouveaux compteurs/health publics multi-source avant pre.010
|
||||
pas de failover/degraded non-terminal d'une source
|
||||
pas de preuve de coverage entre sources
|
||||
```
|
||||
|
||||
## 62. Gate opérateur requis avant pre.008
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user