v0.3.13-pre.005
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Plan v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source RawTransaction
|
||||
|
||||
@@ -827,7 +827,7 @@ Source block, projection full/base64, qualification Legacy/V0/V1, `block:null` e
|
||||
|
||||
### pre.005 — Helius transactionSubscribe
|
||||
|
||||
Source Helius, max version 1, hydration, Config uniquement si réellement requis, tests redaction/tier non codé.
|
||||
Source Helius `transactionSubscribe` Full/Base64, max version 1, projection référence signature/slot/index, hydration commune, Config uniquement si réellement requis, tests redaction/tier non codé.
|
||||
|
||||
### pre.006 — HTTP live block polling
|
||||
|
||||
@@ -903,3 +903,143 @@ historical replay/backfill
|
||||
EARLY feeds
|
||||
consumer Desk 0.3.15
|
||||
```
|
||||
|
||||
## 43. Gate opérateur pre.004-fix.001 reçu avant pre.005
|
||||
|
||||
Le gate opérateur communiqué le 10 septembre 2026 est vert après `pre.004-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 / 836 files
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
|
||||
worker unit : 79/79 PASS
|
||||
cross_layer_completeness : 4/4 PASS
|
||||
dependency_boundary : 11/11 PASS
|
||||
hardening : 18/18 PASS
|
||||
public_api : 12/12 PASS
|
||||
release_completeness : 4/4 PASS
|
||||
doc-tests Worker : 0/0 PASS
|
||||
```
|
||||
|
||||
Cette preuve ferme `pre.004-fix.001` et autorise la tranche Helius.
|
||||
|
||||
## 44. Implémentation pre.005 — Helius transactionSubscribe + hydration
|
||||
|
||||
`pre.005` ajoute `RawTransactionIngestHeliusTransactionSource` à l'agrégat borné existant. La construction sans I/O reçoit :
|
||||
|
||||
```text
|
||||
WsEndpointSettings kind helius_laserstream
|
||||
HeliusTransactionSubscribeFilter
|
||||
SolanaCommitment Confirmed ou Finalized
|
||||
HttpTransportPool
|
||||
HttpRoleName hydration
|
||||
```
|
||||
|
||||
Le Worker construit la requête provider à partir des types Transport existants avec :
|
||||
|
||||
```text
|
||||
encoding = Base64
|
||||
transactionDetails = Full
|
||||
showRewards = false
|
||||
maxSupportedTransactionVersion = 1
|
||||
```
|
||||
|
||||
`HeliusLaserStreamWsSession::connect` et `transaction_subscribe` restent les seules primitives WebSocket utilisées ; aucun SDK provider, socket parallèle ou accès Config n'est ajouté.
|
||||
|
||||
## 45. Projection Helius et convergence Common RAW
|
||||
|
||||
Bien que la notification `Full` contienne un nested payload transaction provider, `pre.005` ne le traite pas comme Common RAW directement. Le signal privé Worker conserve seulement :
|
||||
|
||||
```text
|
||||
network
|
||||
signature
|
||||
slot
|
||||
transaction_index
|
||||
commitment via hydration context
|
||||
safe route identity
|
||||
private filter fingerprint
|
||||
```
|
||||
|
||||
Puis le coordinateur source-neutral existant exécute `getTransaction observed` en `Base64` et `maxSupportedTransactionVersion = 1`. Le même pipeline de canonicalisation/admission est donc utilisé par Yellowstone, Standard Logs et Helius.
|
||||
|
||||
Une notification Helius qui n'est pas `Full` malgré la requête `Full` devient `source.helius_transaction_notification_unqualified`. Aucun `Signature`/`Unknown` inattendu n'est transformé en succès silencieux.
|
||||
|
||||
## 46. Identité, secrets, Config et tier Helius
|
||||
|
||||
La clé live logique Helius est dérivée de :
|
||||
|
||||
```text
|
||||
domain KSP live source key
|
||||
family = helius_transaction
|
||||
network
|
||||
safe provider identity
|
||||
safe endpoint identity
|
||||
commitment
|
||||
private normalized filter fingerprint
|
||||
SHA-256 -> [u8; 32]
|
||||
```
|
||||
|
||||
Les listes de pubkeys Helius sont normalisées avant hash afin qu'une permutation de listes sémantiquement ensemblistes ne contourne pas la détection de doublon. Signature exacte, pubkeys et mode tokenAccounts participent à l'empreinte privée mais ne sont pas rendus par `Debug`.
|
||||
|
||||
Le rôle/pool HTTP reste exclu de l'identité live comme pour Standard Logs et Yellowstone. Les profils Config Helius Mainnet/Devnet et `KSP_SECRET_HELIUS_API_KEY` existent déjà dans la base ; aucun changement Config ni `.env` n'est requis pour cette tranche. Aucun tier `Developer`, `Business`, quota ou politique payante n'est codé dans le Worker.
|
||||
|
||||
## 47. Preuves déterministes pre.005
|
||||
|
||||
Les preuves ajoutées couvrent :
|
||||
|
||||
```text
|
||||
validation endpoint Helius / commitment / route HTTP
|
||||
requête Full + Base64 + maxSupportedTransactionVersion=1 + showRewards=false
|
||||
source_key filter-sensitive, order-normalized et hydration-role-neutral
|
||||
Debug redacted : signature/pubkeys/URL/API key/source key absents
|
||||
projection Full -> signature/slot/index uniquement
|
||||
Helius reference -> one getTransaction observed -> Common RAW exact
|
||||
provenance protocol helius_ws_http + transaction_get_transaction
|
||||
rejet duplicate Helius source identity
|
||||
public API root + composition aggregate
|
||||
firewall Transport-only + un seul get_transaction_observed
|
||||
hardening payload nested non copié + tier provider non codé
|
||||
```
|
||||
|
||||
La supervision simultanée reste volontairement différée à `pre.007` : une collection de plusieurs sources est composable/validable mais échoue fermée avant spawn.
|
||||
|
||||
## 48. Non-claims pre.005
|
||||
|
||||
`pre.005` ne prétend pas :
|
||||
|
||||
```text
|
||||
avoir activé plusieurs sources simultanément
|
||||
avoir ajouté HTTP live polling
|
||||
avoir utilisé le nested payload Helius comme Common RAW direct
|
||||
avoir ajouté un SDK Helius
|
||||
avoir ajouté ou lu un secret dans le Worker
|
||||
avoir codé un tier/quota/prix provider
|
||||
avoir ajouté un nouveau profil Config
|
||||
avoir modifié Transport
|
||||
avoir exécuté Cargo localement après modification dans l'environnement d'assemblage
|
||||
```
|
||||
|
||||
## 49. Gate opérateur requis avant pre.006
|
||||
|
||||
Après application du delta :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
`pre.006` ne commence pas tant qu'une anomalie de format, règle, compilation, test ou frontière de dépendances subsiste.
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# 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, `pre.003` ajoute Standard Solana `logsSubscribe` + hydration HTTP observée et `pre.004` ajoute Standard Solana `blockSubscribe` RAW-direct qualifié Legacy/V0/V1, sans activer encore la supervision simultanée.
|
||||
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, `pre.003` ajoute Standard Solana `logsSubscribe` + hydration HTTP observée, `pre.004` ajoute Standard Solana `blockSubscribe` RAW-direct qualifié Legacy/V0/V1 et `pre.005` ajoute Helius `transactionSubscribe` + hydration commune, sans activer encore la supervision simultanée.
|
||||
|
||||
## 2. Archive stable contrôlée
|
||||
|
||||
@@ -965,3 +965,106 @@ cargo tree --duplicates
|
||||
```
|
||||
|
||||
`pre.005` ne doit pas commencer si une anomalie de format, règle, compilation, API, dépendance ou test apparaît.
|
||||
|
||||
## 43. Gate opérateur pre.004-fix.001
|
||||
|
||||
Preuve reçue le 10 septembre 2026 :
|
||||
|
||||
```text
|
||||
fmt : PASS
|
||||
audits Rust : clean / export completeness 0
|
||||
Markdown : clean, 340 tables / 836 files
|
||||
cargo check --workspace : PASS
|
||||
clippy workspace all-targets all-features -D warnings : PASS
|
||||
worker unit : 79/79 PASS
|
||||
cross-layer : 4/4 PASS
|
||||
dependency boundary : 11/11 PASS
|
||||
hardening : 18/18 PASS
|
||||
public API : 12/12 PASS
|
||||
release completeness : 4/4 PASS
|
||||
```
|
||||
|
||||
## 44. Surface pre.005 matérialisée
|
||||
|
||||
```text
|
||||
RawTransactionIngestHeliusTransactionSource
|
||||
RawTransactionIngestRuntimeResources::from_helius_transaction_source
|
||||
RawTransactionIngestRuntimeResources::try_push_helius_transaction_source
|
||||
HeliusLaserStreamWsSession::connect
|
||||
HeliusLaserStreamWsSession::transaction_subscribe
|
||||
HeliusTransactionSubscribeOptions Full/Base64/maxV1/showRewards=false
|
||||
project_helius_transaction_signal
|
||||
hydration source-neutral get_transaction_observed
|
||||
```
|
||||
|
||||
Aucun changement Config/Transport/manifeste de crate n'est requis.
|
||||
|
||||
## 45. Contrats Helius vérifiés statiquement
|
||||
|
||||
La tranche exige :
|
||||
|
||||
```text
|
||||
protocol = helius_laserstream
|
||||
commitment = confirmed | finalized
|
||||
HTTP hydration route = get_transaction sur même réseau
|
||||
notification productive = Full uniquement
|
||||
signal Worker = signature + slot + transactionIndex + route/filter safe identity
|
||||
nested transaction payload = non copié
|
||||
protocol de provenance convergée = helius_ws_http
|
||||
acquisition method = transaction_get_transaction
|
||||
```
|
||||
|
||||
La source key inclut le filtre complet sous empreinte SHA-256 privée, avec normalisation de l'ordre des listes de pubkeys. Le rôle d'hydration n'entre pas dans l'identité live.
|
||||
|
||||
## 46. Config, secret et tier
|
||||
|
||||
Les profils Helius LaserStream Mainnet/Devnet et `KSP_SECRET_HELIUS_API_KEY` existaient avant `pre.005`. Le Worker reçoit seulement `WsEndpointSettings` déjà résolu et ne dépend jamais de Config. Aucun tier provider, prix, quota ou entitlement n'est codé ; l'éligibilité réelle d'un compte Helius reste une propriété externe/live.
|
||||
|
||||
## 47. Preuves unitaires et externes attendues
|
||||
|
||||
```text
|
||||
unit : request fixed Full/Base64/maxV1/showRewards=false
|
||||
unit : protocol/commitment/cross-network hydration rejection
|
||||
unit : source key stable/filter-sensitive/order-normalized/redacted
|
||||
unit : Full reference projection signature/slot/index only
|
||||
unit : reference -> HTTP getTransaction -> Common RAW exact
|
||||
unit : duplicate Helius source rejected transactionally
|
||||
public_api : root constructor/from/push typed
|
||||
boundary : facade Helius + one common getTransaction only
|
||||
hardening : nested payload/secret/tier absent
|
||||
release : export inventory + canaries pre.005
|
||||
```
|
||||
|
||||
## 48. Validation locale d'assemblage pre.005
|
||||
|
||||
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 peuvent être déclarés PASS dans le delta.
|
||||
|
||||
## 49. Non-claims pre.005
|
||||
|
||||
```text
|
||||
pas de multi-source simultané avant pre.007
|
||||
pas de HTTP live polling avant pre.006
|
||||
pas de RAW-direct depuis le nested payload Helius
|
||||
pas de SDK Helius
|
||||
pas de secret/Config dans le Worker
|
||||
pas de tier/quota provider codé
|
||||
pas de nouveau profil Config
|
||||
pas de changement Transport
|
||||
```
|
||||
|
||||
## 50. Gate opérateur requis avant pre.006
|
||||
|
||||
```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