v0.3.13-pre.003
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Validation v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source
|
||||
|
||||
## 1. Rôle
|
||||
|
||||
Ce document enregistre les preuves réellement exécutées et les non-claims de `0.3.13`. `pre.001` ferme l'audit/planification ; `pre.002` matérialise la composition runtime multi-source et l'identité logique sans activer encore la supervision simultanée ni une nouvelle famille de source productive.
|
||||
Ce document enregistre les preuves réellement exécutées et les non-claims de `0.3.13`. `pre.001` ferme l'audit/planification, `pre.002` matérialise la composition runtime multi-source et `pre.003` ajoute la source productive Standard Solana `logsSubscribe` + hydration HTTP observée, sans activer encore la supervision simultanée.
|
||||
|
||||
## 2. Archive stable contrôlée
|
||||
|
||||
@@ -658,3 +658,156 @@ cargo tree --duplicates
|
||||
|
||||
`pre.003` ne doit pas commencer si cette livraison révèle une anomalie de règles, API, version, archive ou dépendance non corrigée.
|
||||
|
||||
## 28. Gate opérateur pre.002-fix.001 reçu avant pre.003
|
||||
|
||||
Le correctif de format `0.3.13-pre.002-fix.001` a été validé par l’opérateur après `cargo clean` :
|
||||
|
||||
```text
|
||||
cargo fmt --all : PASS
|
||||
cargo fmt --all -- --check : PASS, silencieux
|
||||
General Rust rule audit : clean
|
||||
Rust export completeness audit : 0 candidate
|
||||
KSP workspace Rust rule audit : clean
|
||||
Markdown table audit : clean (340 tables, 830 files)
|
||||
cargo check --workspace : PASS
|
||||
clippy workspace/all-targets/all-features -D warnings : PASS
|
||||
ksp-onchain-transport-lib unit tests : 389 pass
|
||||
transport public_api : 52 pass
|
||||
transport release_completeness : 44 pass
|
||||
transport doc-tests : 4 pass
|
||||
live transport smokes : ignored opt-in, comme prévu
|
||||
ksp-worker-raw-transaction-ingest-lib unit tests : 70 pass
|
||||
cross_layer_completeness : 4 pass
|
||||
dependency_boundary : 9 pass
|
||||
hardening : 16 pass
|
||||
public_api : 10 pass
|
||||
release_completeness : 4 pass
|
||||
worker doc-tests : 0
|
||||
```
|
||||
|
||||
Le gate `pre.002-fix.001 -> pre.003` est satisfait.
|
||||
|
||||
## 29. Implémentation pre.003 — Standard Logs + hydration
|
||||
|
||||
`pre.003` ajoute `RawTransactionIngestStandardLogsSource`, construite exclusivement à partir de surfaces Transport déjà publiques :
|
||||
|
||||
```text
|
||||
WsEndpointSettings kind solana_standard
|
||||
SolanaLogsSubscribeFilter
|
||||
SolanaCommitment Confirmed ou Finalized
|
||||
HttpTransportPool
|
||||
HttpRoleName hydration
|
||||
```
|
||||
|
||||
La construction reste sans I/O et valide avant spawn : endpoint/protocole, commitment, réseau, provenance sûre et existence d’une route `getTransaction` compatible sur le même cluster. Aucun endpoint URL, filtre brut, credential ou client inférieur n’est exposé par l’API Worker.
|
||||
|
||||
Au runtime :
|
||||
|
||||
```text
|
||||
SolanaStandardWsSession::connect
|
||||
-> logs_subscribe
|
||||
-> context.slot + signature seulement
|
||||
-> coordinator d’hydration Worker source-neutral
|
||||
-> get_transaction_observed
|
||||
encoding = base64
|
||||
maxSupportedTransactionVersion = 1
|
||||
-> Common RAW
|
||||
-> admission centrale existante
|
||||
-> Store
|
||||
```
|
||||
|
||||
`logs` et `err` ne sont jamais copiés dans le signal Worker. Le reconnect, le resubscribe et le backpressure de la subscription restent possédés par le même acteur WebSocket Transport. Retry/reroutage/rate-limit HTTP restent possédés par Transport.
|
||||
|
||||
La voie Yellowstone réutilise le même contrat d’hydration source-neutral et passe elle aussi à `maxSupportedTransactionVersion = 1`; aucune nouvelle queue, aucun second client HTTP et aucun acteur WebSocket Worker ne sont introduits.
|
||||
|
||||
## 30. Identité et bornes pre.003
|
||||
|
||||
L’identité logique Standard Logs est déterministe et opaque :
|
||||
|
||||
```text
|
||||
domain KSP live source key
|
||||
family = standard_logs
|
||||
network
|
||||
safe provider identity
|
||||
safe endpoint identity
|
||||
commitment
|
||||
private filter fingerprint
|
||||
SHA-256 -> [u8; 32]
|
||||
```
|
||||
|
||||
Le rôle/pool HTTP d’hydration est volontairement exclu de l’identité live. Les trois variantes `All`, `AllWithVotes`, `Mentions(pubkey)` produisent des empreintes distinctes ; la valeur d’un pubkey `Mentions` n’apparaît pas dans `Debug`.
|
||||
|
||||
Les bornes du coordinator sont maintenant alignées sur les settings effectifs :
|
||||
|
||||
```text
|
||||
in-flight hydration <= persistence_concurrency
|
||||
pending source signals <= admission_queue_capacity
|
||||
```
|
||||
|
||||
Une activation mono-source Yellowstone ou Standard Logs est autorisée. Une composition `2..32` reste validable mais son démarrage demeure `runtime_resources.multi_source_activation_pending` avant spawn jusqu’à `pre.007`.
|
||||
|
||||
## 31. Preuves déterministes ajoutées pre.003
|
||||
|
||||
Worker unit tests ajoutés :
|
||||
|
||||
```text
|
||||
validation protocole/commitment/route HTTP Standard Logs
|
||||
source_key filter-sensitive et hydration-role-neutral
|
||||
redaction Mentions/URL/source-key bytes
|
||||
projection reference-only slot/signature
|
||||
fixture logs -> une hydration HTTP -> exact matériau Common RAW
|
||||
requête getTransaction = base64 + maxSupportedTransactionVersion 1
|
||||
rejet duplicate Standard Logs identity
|
||||
```
|
||||
|
||||
Canaris externes ajoutés/étendus :
|
||||
|
||||
```text
|
||||
public_api : construction et composition Standard Logs depuis crate root
|
||||
dependency_boundary : Transport facade only, sans Config/Job/backend/direct network crate
|
||||
hardening : aucune copie logs/err/payload/url, Debug borné
|
||||
release_completeness : nouvelle surface et nouveaux canaris obligatoires
|
||||
```
|
||||
|
||||
Les preuves de reconnect/resubscribe/backpressure restent celles de `ksp-onchain-transport-lib`, car le Worker délègue ces mécanismes au `SolanaStandardWsSession` existant plutôt que de les réimplémenter.
|
||||
|
||||
## 32. Validations locales post-modification pre.003
|
||||
|
||||
Le toolchain Cargo/Rustfmt n’est pas disponible dans l’environnement d’assemblage. Les commandes Cargo post-`pre.003` sont donc `NON EXÉCUTÉ LOCAL` et devront être confirmées par l’opérateur.
|
||||
|
||||
Les audits statiques réellement exécutés sont consignés dans `deltas/0.3.13/pre.003.md`.
|
||||
|
||||
## 33. Non-claims pre.003
|
||||
|
||||
`pre.003` ne prétend pas :
|
||||
|
||||
```text
|
||||
avoir ajouté blockSubscribe productif
|
||||
avoir ajouté Helius transactionSubscribe productif
|
||||
avoir ajouté HTTP live polling
|
||||
avoir activé plusieurs sources simultanément
|
||||
avoir implémenté le fanout d’observations Store multi-source
|
||||
avoir rendu le coordinator partagé entre plusieurs tâches source simultanées
|
||||
avoir ajouté du gap repair ou du backfill
|
||||
avoir ajouté une dépendance réseau directe au Worker
|
||||
avoir exécuté Cargo localement après modification
|
||||
```
|
||||
|
||||
## 34. Gate opérateur requis avant pre.004
|
||||
|
||||
Après application du delta :
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
`pre.004` ne doit pas commencer si une anomalie de format, règle, compilation, API, dépendance ou test apparaît.
|
||||
|
||||
Reference in New Issue
Block a user