v0.3.13-pre.014
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 562
|
||||
# version: 563
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.3.13-pre.13"
|
||||
version = "0.3.13-pre.14"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
78
deltas/0.3.13/pre.014.md
Normal file
78
deltas/0.3.13/pre.014.md
Normal file
@@ -0,0 +1,78 @@
|
||||
<!-- file: deltas/0.3.13/pre.014.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.13-pre.014`
|
||||
|
||||
## Nature
|
||||
|
||||
Réconciliation documentaire de la verticale live multi-source `RawTransaction` après fermeture technique/live de `pre.013`.
|
||||
|
||||
Aucun code Rust, test, dépendance, feature ou contrat public n'est modifié.
|
||||
|
||||
## Gate d'entrée confirmé
|
||||
|
||||
Le gate déterministe `pre.012` reste vert et les deux smokes live keyless exécutés sur `0.3.13-pre.013` passent explicitement :
|
||||
|
||||
```text
|
||||
Solana HTTP Devnet : 1/1 PASS
|
||||
Solana WebSocket Devnet : 1/1 PASS
|
||||
```
|
||||
|
||||
Le contrôle post-smoke communiqué passe également fmt, audits Rust/Markdown, `cargo check --workspace` et Clippy strict.
|
||||
|
||||
## Réconciliation durable
|
||||
|
||||
Les documents suivants sont mis en cohérence avec l'état réellement livré :
|
||||
|
||||
```text
|
||||
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||
docs/architecture/005-DEPENDENCY_GRAPH.md
|
||||
docs/architecture/011-RAW_TRANSACTION_ACQUISITION.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md
|
||||
docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md
|
||||
```
|
||||
|
||||
Les corrections principales sont :
|
||||
|
||||
```text
|
||||
Worker RAW documenté comme composition de 1..32 sources logiques sur un même réseau
|
||||
cinq familles live : Yellowstone / Standard Logs / Standard Block / Helius Transaction / HTTP Block Polling
|
||||
registry globale d'hydration pour Yellowstone / Standard Logs / Helius
|
||||
Standard Block et HTTP Block Polling RAW-direct Legacy/V0/V1
|
||||
blockSubscribe actuel avec maxSupportedTransactionVersion = 1
|
||||
convergence canonique + observations multiples + disagreement explicite
|
||||
backpressure/fairness et bornes globales source-neutral
|
||||
health multi-source conservative et shutdown/races bornés
|
||||
reports EARLY / coverage-equivalence / repair historique maintenus hors 0.3.13
|
||||
```
|
||||
|
||||
`README.md`, `crates/ksp-worker-raw-transaction-ingest-lib/README.md` et `USAGE.md` ont été audités et sont déjà cohérents ; ils restent byte-identiques. `USAGE.md` reste version-neutral.
|
||||
|
||||
## Frontières
|
||||
|
||||
Cette tranche ne modifie pas :
|
||||
|
||||
```text
|
||||
CHANGELOG.md
|
||||
ROADMAP.md
|
||||
prompt 0.3.14
|
||||
code/test Rust
|
||||
Cargo dependencies/features
|
||||
deltas historiques
|
||||
```
|
||||
|
||||
La préparation publication reste réservée à `pre.015`.
|
||||
|
||||
## Gate opérateur avant `pre.015`
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Aucun `cargo tree`, smoke live ou rerun exhaustif des tests n'est requis pour cette tranche strictement documentaire hors bump mécanique de prerelease.
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
|
||||
<!-- version: 39 -->
|
||||
<!-- version: 40 -->
|
||||
|
||||
# Inventaire initial des composants KSP
|
||||
|
||||
@@ -46,7 +46,7 @@ Ce document maintient l'inventaire synthétique des composants retenus ou presse
|
||||
| Store Desk | `ksp-app-store-desk` | app | Implémenté | `0.3.8` | inspection RAW read-only Transaction/Account/Observation via façade Store |
|
||||
| RAW transaction common | `ksp-raw-transaction-lib` | lib | Implémenté | `0.3.10` | canonicalisation/wire RAW Transaction v1 source-neutral partagé entre producteurs |
|
||||
| Worker lifecycle | `ksp-worker-api` | API | Implémenté | `0.3.9` | lifecycle/health/progression génériques des services continus |
|
||||
| RAW transaction worker | `ksp-worker-raw-transaction-ingest-lib` | worker/lib | Implémenté | `0.3.11`, live `0.3.12` | fondation + Yellowstone productif, hydration HTTP, frontier/reconnect run-local |
|
||||
| RAW transaction worker | `ksp-worker-raw-transaction-ingest-lib` | worker/lib | Implémenté | `0.3.11`–`0.3.13` | fondation + 5 familles live, convergence multi-source, fairness, health et shutdown bornés |
|
||||
| RAW ingest Desk | `ksp-app-raw-transaction-ingest-desk` | app | Retenu | `0.3.15` | choix/supervision d’une ou plusieurs sources/méthodes sans réimplémenter le worker |
|
||||
| STRUCTURAL job | nom à fixer | job/lib | Retenu | couche STRUCTURAL | normalisation Solana générique RAW -> STRUCTURAL bornée/rejouable |
|
||||
| STRUCTURAL worker | nom à fixer | worker/lib | Retenu | fin couche STRUCTURAL | backlog RAW -> STRUCTURAL continu |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/005-DEPENDENCY_GRAPH.md -->
|
||||
<!-- version: 28 -->
|
||||
<!-- version: 29 -->
|
||||
|
||||
# Graphe de dépendances KSP
|
||||
|
||||
@@ -419,10 +419,10 @@ Il remplit RAW et ne décode aucun programme. Il ne dépend pas de Config : la c
|
||||
ksp-worker-api
|
||||
-> ksp-core-lib
|
||||
|
||||
ksp-worker-raw-transaction-ingest-lib # fondation + première source live matérialisées
|
||||
ksp-worker-raw-transaction-ingest-lib # fondation + acquisition live multi-source matérialisées
|
||||
-> ksp-core-lib
|
||||
-> ksp-logging-lib
|
||||
-> ksp-onchain-transport-lib # Yellowstone subscribe + HTTP getTransaction observed
|
||||
-> ksp-onchain-transport-lib # Yellowstone, WS standard/Helius et HTTP observed/polling
|
||||
-> ksp-raw-transaction-lib
|
||||
-> ksp-store-lib # default-features = false ; aucun backend imposé
|
||||
-> ksp-worker-api
|
||||
@@ -433,9 +433,9 @@ ksp-worker-control-lib # composant retenu, non matérialis
|
||||
-> ksp-core-lib
|
||||
```
|
||||
|
||||
`ksp-worker-api` est ouvert en `0.3.9` comme contrat générique de services continus et ne connaît ni Solana, ni Transport, ni Store, ni Tauri. `ksp-worker-raw-transaction-ingest-lib` est son premier consumer concret : sa fondation `0.3.11` possède admission/persistence/snapshots/shutdown ; l'extension live `0.3.12` ouvre l'edge direct vers `ksp-onchain-transport-lib` pour une source Yellowstone standard et l'hydration HTTP `getTransaction`. Config et le backend physique restent hors du Worker.
|
||||
`ksp-worker-api` est ouvert en `0.3.9` comme contrat générique de services continus et ne connaît ni Solana, ni Transport, ni Store, ni Tauri. `ksp-worker-raw-transaction-ingest-lib` est son premier consumer concret : sa fondation `0.3.11` possède admission/persistence/snapshots/shutdown ; `0.3.12` ouvre la première verticale Yellowstone + hydration HTTP ; `0.3.13` matérialise la composition live multi-source. Config et le backend physique restent hors du Worker.
|
||||
|
||||
La verticale actuelle n'est ni « un worker WebSocket » ni un moteur historique : `RawTransactionIngestRuntimeResources` contient exactement une source Yellowstone validée, les signaux transactionnels sont hydratés par HTTP avant Common RAW, et `BlockMeta`/`Slot` restent continuity-only. Reconnect, `from_slot` et `SubscribeReplayInfo` restent propriétaires de Transport ; le Worker observe leur projection sûre et fault sur un gap de rétention prouvé sans appeler le Job Backfill. Les extensions multi-source restent ultérieures.
|
||||
La verticale actuelle n'est ni « un worker WebSocket » ni un moteur historique : `RawTransactionIngestRuntimeResources` contient de `1` à `32` sources logiques validées d'un même réseau parmi cinq familles — Yellowstone, Standard WS `logsSubscribe`, Standard WS `blockSubscribe`, Helius `transactionSubscribe` et HTTP live block polling. Yellowstone, Standard Logs et Helius convergent vers une registry globale d'hydration HTTP `getTransaction`; Standard Block et HTTP Block Polling qualifient directement le wire Base64 Legacy/V0/V1 vers Common RAW. Toutes les acquisitions rejoignent la même admission/persistence, la convergence canonique `(network, signature)` et des observations distinctes par provenance. Reconnect, `from_slot` et `SubscribeReplayInfo` restent propriétaires de Transport ; le Worker observe leur projection sûre, conserve une processing frontier run-local, applique des bornes/fairness globales et fault sur un gap de rétention prouvé sans appeler le Job Backfill.
|
||||
|
||||
RAW worker puis STRUCTURAL worker sont introduits à la fin de leur couche respective, lorsque persistence/backlog sont disponibles. Le traitement RAW -> STRUCTURAL borné est porté par un STRUCTURAL job distinct du service continu. Les workers DECODED/DOMAIN sont introduits avec les groupes Program concernés plutôt que tous anticipés en bloc.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/011-RAW_TRANSACTION_ACQUISITION.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 14 -->
|
||||
|
||||
# Acquisition et alimentation `RawTransaction`
|
||||
|
||||
@@ -149,7 +149,7 @@ Il peut utiliser **HTTP, WS, Yellowstone gRPC, replay provider ou archive** si c
|
||||
|
||||
### 3.2 Worker Raw Transaction Ingest : acquisition continue start/stop
|
||||
|
||||
`ksp-worker-raw-transaction-ingest-lib` a pour rôle de **remplir continuellement Store à partir du moment où il est démarré**. Sa fondation runtime, l'admission, la canonicalisation Common RAW, la persistence et les snapshots sont complétés par une première source productive Yellowstone standard + hydration HTTP `getTransaction`.
|
||||
`ksp-worker-raw-transaction-ingest-lib` a pour rôle de **remplir continuellement Store à partir du moment où il est démarré**. Sa fondation runtime, l'admission, la canonicalisation Common RAW, la persistence et les snapshots supportent désormais une composition live multi-source bornée de `1` à `32` sources logiques sur un même réseau.
|
||||
|
||||
Son contrôle métier V1 est volontairement court :
|
||||
|
||||
@@ -161,22 +161,33 @@ snapshot / notifications
|
||||
|
||||
Le caller ne lui fournit pas une signature, un `program_id`, une plage historique, une limite de campagne ou une requête de backfill. Les endpoints, réseaux, sources activées, capabilities et secrets proviennent de Config/composition, pas d'un payload métier de `start`.
|
||||
|
||||
Deux entrées publiques coexistent : `start` conserve la fondation sans source productive, tandis que `start_with_runtime_resources` lance une source Yellowstone supervisée. Le pipeline productif actuel est :
|
||||
Deux entrées publiques coexistent : `start` conserve la fondation sans source productive, tandis que `start_with_runtime_resources` lance la collection de ressources live validée. Les cinq familles productives matérialisées sont :
|
||||
|
||||
```text
|
||||
Yellowstone Transaction / TransactionStatus / Block
|
||||
Standard WS logsSubscribe
|
||||
Helius transactionSubscribe
|
||||
-> signaux transactionnels source-neutral
|
||||
-> coalescence bornée (network, signature, commitment)
|
||||
-> registry globale d'hydration bornée (network, signature, commitment)
|
||||
-> HTTP getTransaction observed
|
||||
-> Common RAW
|
||||
-> admission centrale
|
||||
|
||||
Standard WS blockSubscribe Full/Base64 Legacy|V0|V1
|
||||
HTTP live block polling getSlot -> getBlocksWithLimit -> getBlock observed
|
||||
-> qualification RAW directe Legacy|V0|V1
|
||||
-> Common RAW
|
||||
|
||||
Toutes les voies
|
||||
-> admission centrale bornée
|
||||
-> convergence canonique (network, signature)
|
||||
-> RawTransaction + observations de provenance distinctes
|
||||
-> Store
|
||||
|
||||
Yellowstone BlockMeta / Slot
|
||||
-> continuité run-local uniquement
|
||||
```
|
||||
|
||||
La source est caller-composed : le Worker ne lit pas Config et ne reçoit pas de secret. `RawTransactionIngestRuntimeResources` contient actuellement exactement une source Yellowstone validée, pas encore une collection multi-source.
|
||||
La composition est caller-owned : le Worker ne lit pas Config et ne reçoit pas de secret. `RawTransactionIngestRuntimeResources` accepte de `1` à `32` sources logiques d'un même réseau, refuse les identités source dupliquées et supervise toutes les sources simultanément. Une faute source reste terminale pour le Worker faute d'équivalence de coverage prouvée.
|
||||
|
||||
Il ne lance pas de campagne historique arbitraire.
|
||||
|
||||
@@ -253,7 +264,7 @@ Une source concrète peut fournir plusieurs capabilities. Une capability peut ê
|
||||
| HTTP `getSlot` / `getFirstAvailableBlock` / `minimumLedgerSlot` | bornes de ledger | non | oui, continuité | oui, admission d'une campagne | aucune transaction directe |
|
||||
| WS `logsSubscribe` | signature + logs | non | oui, discovery live + hydration | non pour historique pur | `mentions` standard limité à un pubkey |
|
||||
| WS `signatureSubscribe` | statut d'une signature connue | non | oui, confirmation ciblée interne | possible pour une requête ciblée en attente | one-shot |
|
||||
| WS `blockSubscribe` full/base64, legacy-v0 | bloc + transactions | oui, parité RAW v1 prouvée | oui, direct pour le sous-ensemble qualifié | non sans mécanisme de replay historique | méthode standard instable ; capability validator-dependent |
|
||||
| WS `blockSubscribe` full/base64, Legacy/V0/V1 | bloc + transactions | oui, Legacy/V0/V1 qualifiés | oui, direct pour le sous-ensemble qualifié | non sans mécanisme de replay historique | méthode standard instable ; capability validator-dependent |
|
||||
| Helius `transactionSubscribe` full/base64 | transaction + meta + signature/index | non sans hydration | oui, signal riche puis hydration HTTP | non comme source historique | absence de blockTime/version dans l’enveloppe qualifiée |
|
||||
| Yellowstone `transactions` | transaction exécutée + meta | oui | oui | oui si replay borné demandé/disponible | filters server-side |
|
||||
| Yellowstone `blocks` avec transactions | bloc + transactions | oui | oui | oui si replay borné demandé/disponible | utile au live et au backfill |
|
||||
@@ -274,15 +285,17 @@ Cette matrice est intentionnellement **usage-first**. HTTP n'est pas « Backfill
|
||||
|
||||
### 6.1 Acquisition directe
|
||||
|
||||
Sources capables de produire directement un matériau transactionnel complet :
|
||||
Sources capables de produire directement un matériau transactionnel complet dans l'architecture générale :
|
||||
|
||||
```text
|
||||
Yellowstone transactions
|
||||
Yellowstone blocks avec transactions
|
||||
WS blockSubscribe full/base64 legacy-v0 qualifié
|
||||
Yellowstone transactions/blocks lorsque l'adapter choisi qualifie directement leur wire
|
||||
WS blockSubscribe full/base64 Legacy/V0/V1 qualifié
|
||||
HTTP getBlock full/base64 Legacy/V0/V1
|
||||
provider stream compatible full transaction après parité prouvée
|
||||
```
|
||||
|
||||
Dans le Worker V1 actuel, Yellowstone reste volontairement traité comme signal puis hydraté par HTTP `getTransaction` afin de conserver un seul chemin de canonicalisation productif pour cette famille. Les voies directes effectivement matérialisées dans le Worker sont Standard Block et HTTP Block Polling.
|
||||
|
||||
Chemin logique :
|
||||
|
||||
```text
|
||||
@@ -567,7 +580,7 @@ Helius transactionSubscribe
|
||||
|
||||
Le runtime WS possède des queues bornées et une logique de reconnect/resubscribe. Un reconnect ne constitue toutefois pas un replay adressable.
|
||||
|
||||
La qualification `pre.005` ferme deux cas distincts : `blockSubscribe` standard en `full/base64` avec `maxSupportedTransactionVersion = 0` produit, sur fixture identique, les mêmes bytes/hash RAW v1 que `getBlock`; Helius `transactionSubscribe` full/base64 conserve l’identité, le slot, le transaction wire, la meta et l’index mais ne transporte pas `blockTime` ni `version` dans l’enveloppe qualifiée. Helius reste donc un signal live riche à hydrater par HTTP avant persistence RAW directe.
|
||||
La qualification actuelle ferme deux cas distincts : `blockSubscribe` standard en `full/base64` avec `maxSupportedTransactionVersion = 1` qualifie explicitement Legacy/V0/V1 et produit le matériau Common RAW directement ; Helius `transactionSubscribe` full/base64 conserve l’identité, le slot, le transaction wire, la meta et l’index mais ne transporte pas `blockTime` ni `version` dans l’enveloppe qualifiée. Helius reste donc un signal live riche à hydrater par HTTP avant persistence RAW.
|
||||
|
||||
### 12.3 Yellowstone gRPC
|
||||
|
||||
@@ -721,7 +734,7 @@ RAW v1 complet -> hydration HTTP avant persistence
|
||||
|
||||
Cette qualification cross-source a préparé le contrat sans créer d'edge Common RAW -> Transport. L'extension Worker live utilise désormais cette décision conservative : Yellowstone produit des signaux structurés dans le Worker concret, puis HTTP `getTransaction` fournit le matériau RAW complet avant canonicalisation. Common RAW reste entièrement Transport-neutral.
|
||||
|
||||
## 14. État du Worker live après `0.3.12`
|
||||
## 14. État du Worker live après `0.3.13`
|
||||
|
||||
### 14.0 Verticale matérialisée
|
||||
|
||||
@@ -731,20 +744,24 @@ La verticale productive possède :
|
||||
consumer de ksp-worker-api
|
||||
settings réseau/Worker bornés
|
||||
start/stop sur runtime Tokio caller-owned
|
||||
supervision privée des tâches
|
||||
supervision privée de 1..32 sources logiques sur un même réseau
|
||||
cinq familles live : Yellowstone / Standard Logs / Standard Block / Helius Transaction / HTTP Block Polling
|
||||
mpsc central borné + backpressure
|
||||
une source Yellowstone standard caller-composed
|
||||
Transaction / TransactionStatus / Block -> signaux transactionnels
|
||||
BlockMeta / Slot -> continuity-only
|
||||
registry globale d'hydration pour Yellowstone / Standard Logs / Helius
|
||||
qualification RAW directe pour Standard Block / HTTP Block Polling
|
||||
coalescence bornée par network/signature/commitment
|
||||
HTTP getTransaction observed pour hydration
|
||||
canonicalisation et assembly via ksp-raw-transaction-lib
|
||||
persistence atomique via ksp-store-lib en mode Normal
|
||||
processing frontier run-local bornée
|
||||
projection source Active/Reconnecting/Closing/Closed/Failed
|
||||
convergence canonique par (network, signature) + disagreement explicite
|
||||
persistence atomique via ksp-store-lib en mode Normal + observations supplémentaires idempotentes
|
||||
quotas pending/in-flight par source et bornes globales exactes
|
||||
fairness minimale / anti-starvation sous duplicate storm
|
||||
processing frontier run-local multi-source conservative
|
||||
projection source-neutral Active/Reconnecting/Closing/Closed/Failed + gauges source_total/active/reconnecting/failed
|
||||
observation des compteurs reconnect/replay/gap Transport
|
||||
health conservative Healthy/Degraded/Unhealthy
|
||||
fault sur gap de rétention prouvé
|
||||
shutdown deadline + abort/join sans tâche orpheline
|
||||
shutdown deadline + abort/join sans tâche orpheline ni late persistence
|
||||
```
|
||||
|
||||
Elle conserve explicitement les frontières suivantes :
|
||||
@@ -786,21 +803,27 @@ attendre un Job pour continuer
|
||||
hardcoder un provider unique
|
||||
```
|
||||
|
||||
### 14.2 Sources Worker V1 à représenter
|
||||
### 14.2 Sources Worker V1 matérialisées et reports
|
||||
|
||||
À implémenter autant que possible, même si certaines preuves live restent bloquées par tier :
|
||||
Matérialisé dans `0.3.13` :
|
||||
|
||||
```text
|
||||
Yellowstone transactions
|
||||
Yellowstone blocks
|
||||
Yellowstone status + hydration
|
||||
Yellowstone transactions / blocks / status + HTTP hydration
|
||||
WS logsSubscribe + HTTP getTransaction
|
||||
WS blockSubscribe full/base64 legacy-v0 direct qualifié
|
||||
Helius transactionSubscribe full/base64 + HTTP hydration
|
||||
HTTP live block polling
|
||||
HTTP hydration
|
||||
replay Yellowstone pour continuité du run
|
||||
sources EARLY via adapter extensible
|
||||
WS blockSubscribe Full/Base64 Legacy/V0/V1 direct qualifié
|
||||
Helius transactionSubscribe Full + HTTP hydration
|
||||
HTTP live block polling getSlot/getBlocksWithLimit/getBlock observed
|
||||
HTTP hydration partagée et coalescée cross-source
|
||||
replay Yellowstone conservé propriétaire de Transport pour continuité du run
|
||||
```
|
||||
|
||||
Reste hors de cette verticale et nécessite une tranche dédiée :
|
||||
|
||||
```text
|
||||
sources EARLY / pre-execution
|
||||
coverage-equivalence ou failover non-terminal entre sources
|
||||
repair historique multi-source
|
||||
Worker multi-source -> Store live E2E avec environnement complet provisionné
|
||||
```
|
||||
|
||||
### 14.3 Gaps Transport Worker
|
||||
@@ -858,9 +881,9 @@ Ordre conseillé :
|
||||
0.3.11 P0 : Worker foundation/runtime + persistence déterministe
|
||||
0.3.12 P0 : Yellowstone transactions/blocks/status + hydration + replay continuity
|
||||
0.3.13 P0 : WS logs + hydration, blockSubscribe, Helius transactionSubscribe, HTTP live polling
|
||||
0.3.13 P1 : multi-source convergence, dedup, provenance, content conflict, backpressure
|
||||
0.3.14 P0 : continuity repair complet + hardening + smokes gratuits accessibles
|
||||
0.3.14 P2 : EARLY adapters accessibles seulement si prouvés
|
||||
0.3.13 P1 : multi-source convergence, dedup, provenance, content conflict, backpressure/fairness
|
||||
0.3.13 P2 : health source-neutral, shutdown/races, completeness/security et gate live keyless
|
||||
0.3.14 : trajectoire suivante définie par son prompt dédié ; ne pas réintroduire implicitement un scope reporté
|
||||
0.3.16 P0 : block scan historique
|
||||
0.3.16 P0 : replay Yellowstone borné
|
||||
0.3.16 P1 : provider history/archive
|
||||
@@ -984,7 +1007,8 @@ Yellowstone pre.006 = transaction wire V1 qualifié ; RAW complet via h
|
||||
TR-C2 = adapter productif Transport DTO -> common réservé au Worker concret
|
||||
0.3.10 = common RAW + preuves cross-source
|
||||
0.3.11 = fondation Worker source-neutral, persistence et observabilité
|
||||
0.3.12 à 0.3.14 = sources live multi-source, continuité et hardening par responsabilités bornées
|
||||
0.3.12 = première verticale Yellowstone + hydration/replay continuity
|
||||
0.3.13 = cinq familles live + convergence/fairness/health/shutdown/completeness
|
||||
0.3.16 = Job Backfill multi-stratégie historique
|
||||
```
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
|
||||
<!-- version: 98 -->
|
||||
<!-- version: 99 -->
|
||||
|
||||
# Séquence des releases fonctionnelles KSP
|
||||
|
||||
@@ -583,7 +583,9 @@ La séquence effective a évolué par sizing et validation réels. La référenc
|
||||
0.3.9 ksp-worker-api + audit acquisition RawTransaction
|
||||
0.3.10 common ksp-raw-transaction-lib + preuves cross-source
|
||||
0.3.11 fondation source-neutral ksp-worker-raw-transaction-ingest-lib
|
||||
0.3.12-0.3.14 sources live, convergence et continuité Worker RAW ingest
|
||||
0.3.12 première verticale live Yellowstone + hydration/replay continuity
|
||||
0.3.13 cinq familles live + convergence multi-source/fairness/health/hardening
|
||||
0.3.14 tranche suivante de la trajectoire RAW selon prompt dédié
|
||||
0.3.15 ksp-app-raw-transaction-ingest-desk
|
||||
0.3.16 Backfill multi-source / multi-stratégie
|
||||
```
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 14 -->
|
||||
|
||||
# Plan v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source RawTransaction
|
||||
|
||||
@@ -1638,3 +1638,82 @@ cargo tree --duplicates
|
||||
```
|
||||
|
||||
Les smokes live réellement accessibles seront exécutés/qualifiés dans `pre.013`. Un smoke inaccessible reste `NON EXÉCUTÉ`, jamais PASS. Aucun nouveau scope fonctionnel n'est autorisé dans `pre.013`.
|
||||
|
||||
## 90. Gate live keyless pre.013 reçu
|
||||
|
||||
Le 10 septembre 2026, les deux smokes live sans secret demandés après application de `0.3.13-pre.013` ont été exécutés explicitement et passent :
|
||||
|
||||
```text
|
||||
Solana HTTP Devnet foundation smoke : 1/1 PASS
|
||||
Solana WebSocket Devnet slot/unsubscribe/close smoke : 1/1 PASS
|
||||
```
|
||||
|
||||
Le contrôle post-smoke communiqué est également vert :
|
||||
|
||||
```text
|
||||
cargo fmt --all / --check : PASS
|
||||
audits Rust : clean / export completeness 0
|
||||
Markdown : clean, 340 tables / 851 files
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
|
||||
```
|
||||
|
||||
Ces preuves ferment uniquement la partie live keyless accessible. Elles ne sont pas extrapolées vers `logsSubscribe`, `blockSubscribe`, Helius, Yellowstone token-gated ou un Worker multi-source -> Store E2E.
|
||||
|
||||
## 91. Réconciliation documentaire pre.014
|
||||
|
||||
La réconciliation durable compare les documents d'architecture et d'usage à l'état effectivement livré en `0.3.13`.
|
||||
|
||||
Documents nécessitant une correction :
|
||||
|
||||
```text
|
||||
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||
docs/architecture/005-DEPENDENCY_GRAPH.md
|
||||
docs/architecture/011-RAW_TRANSACTION_ACQUISITION.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
```
|
||||
|
||||
Corrections fermées :
|
||||
|
||||
```text
|
||||
le Worker RAW n'est plus décrit comme Yellowstone-only
|
||||
RawTransactionIngestRuntimeResources est documenté comme collection 1..32 d'un même réseau
|
||||
les cinq familles live matérialisées sont énumérées
|
||||
Yellowstone / Standard Logs / Helius partagent l'hydration globale
|
||||
Standard Block / HTTP Block Polling restent RAW-direct Legacy/V0/V1
|
||||
convergence canonique, observations multiples, fairness, health et shutdown sont intégrés
|
||||
maxSupportedTransactionVersion du blockSubscribe actuel est 1, pas 0
|
||||
les reports EARLY / coverage-equivalence / repair historique restent explicitement hors 0.3.13
|
||||
```
|
||||
|
||||
`README.md`, le README de la crate Worker et `USAGE.md` ont été relus ; leur contenu est déjà cohérent avec le contrat livré et reste byte-identique. `USAGE.md` conserve ainsi son rôle de guide version-neutral au lieu de recevoir un historique de gate.
|
||||
|
||||
## 92. Frontières pre.014
|
||||
|
||||
`pre.014` ne modifie aucun code Rust, test, dépendance, feature ou API publique. Aucun nouveau comportement runtime n'est ajouté.
|
||||
|
||||
La tranche ne modifie pas :
|
||||
|
||||
```text
|
||||
CHANGELOG.md
|
||||
ROADMAP.md
|
||||
prompt 0.3.14
|
||||
anciens fichiers deltas/
|
||||
```
|
||||
|
||||
La préparation de publication, le CHANGELOG, le ROADMAP et le prompt suivant restent exclusivement `pre.015`.
|
||||
|
||||
## 93. Gate opérateur requis avant pre.015
|
||||
|
||||
La tranche étant documentaire avec bump mécanique de prerelease, le gate suivant reste limité aux contrôles de cohérence du workspace :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Aucun `cargo tree`, smoke live ou rerun exhaustif `cargo test --workspace` n'est requis : `pre.014` ne touche ni code, ni tests, ni dépendances, ni Transport.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md -->
|
||||
<!-- version: 14 -->
|
||||
<!-- version: 15 -->
|
||||
|
||||
# Validation v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source
|
||||
|
||||
@@ -1669,16 +1669,23 @@ cargo tree --duplicates : exécuté sans erreur ; inventaire multi-version non v
|
||||
|
||||
Les tests `#[ignore]` compilés par `cargo test --workspace --all-targets --all-features` ne constituent pas une preuve live. Ils restent séparés du gate déterministe.
|
||||
|
||||
## 94. Smokes live keyless à exécuter explicitement
|
||||
## 94. Smokes live keyless pre.013 exécutés
|
||||
|
||||
Deux smokes Transport existants ne nécessitent aucun secret opérateur et doivent être exécutés explicitement pour fermer la partie live accessible de `pre.013` :
|
||||
Le 10 septembre 2026, les deux smokes Transport sans secret opérateur ont été exécutés explicitement après application de `0.3.13-pre.013` :
|
||||
|
||||
```text
|
||||
transport_devnet_smoke : 1/1 PASS
|
||||
websocket_devnet_smoke : 1/1 PASS
|
||||
```
|
||||
|
||||
Les commandes exercées sont :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
cargo test -p ksp-onchain-transport-lib --test websocket_devnet_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Ils prouvent respectivement un accès HTTP Solana Devnet et un cycle WebSocket Solana Devnet. Ils ne prouvent pas à eux seuls `logsSubscribe`, `blockSubscribe`, Helius `transactionSubscribe`, HTTP block polling Worker, Yellowstone, hydration Worker ou persistence Store end-to-end.
|
||||
Elles prouvent respectivement un accès HTTP Solana Devnet et un cycle WebSocket Solana Devnet avec notification Slot, unsubscribe puis close. Elles ne prouvent pas à elles seules `logsSubscribe`, `blockSubscribe`, Helius `transactionSubscribe`, HTTP block polling Worker, Yellowstone, hydration Worker ou persistence Store end-to-end.
|
||||
|
||||
## 95. Smokes token/resource-gated
|
||||
|
||||
@@ -1703,3 +1710,76 @@ Les tokens/secrets éventuels restent saisis sur stdin ou fournis par les mécan
|
||||
|
||||
La réconciliation durable README/USAGE/architecture reste `pre.014`. La préparation publication CHANGELOG/ROADMAP/prompt suivant reste `pre.015`.
|
||||
|
||||
## 97. Contrôle post-smoke pre.013 reçu
|
||||
|
||||
Après les deux smokes keyless, l'opérateur a rejoué les contrôles de compilation/hardening de `0.3.13-pre.013` :
|
||||
|
||||
```text
|
||||
fmt : PASS
|
||||
audits Rust : clean / export completeness 0
|
||||
Markdown : clean, 340 tables / 851 files
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
|
||||
```
|
||||
|
||||
Aucune régression déterministe n'est observée après les preuves live.
|
||||
|
||||
## 98. Réconciliation documentaire pre.014
|
||||
|
||||
L'audit durable compare l'implémentation `0.3.13` aux documents qui décrivent la verticale Worker RAW.
|
||||
|
||||
Obsolescences corrigées :
|
||||
|
||||
```text
|
||||
architecture/004 : inventaire Worker limité à Yellowstone
|
||||
architecture/005 : runtime resources encore décrites comme une seule source et multi-source reporté
|
||||
architecture/011 : pipeline courant Yellowstone-only, blockSubscribe legacy-v0/maxV0 et sources encore « à représenter »
|
||||
plans/002 : plage 0.3.12-0.3.14 trop agrégée pour refléter la fermeture effective 0.3.13
|
||||
```
|
||||
|
||||
État durable réconcilié :
|
||||
|
||||
```text
|
||||
RawTransactionIngestRuntimeResources : 1..32 sources logiques d'un même réseau
|
||||
familles productives : Yellowstone / Standard Logs / Standard Block / Helius Transaction / HTTP Block Polling
|
||||
hydration globale : Yellowstone / Standard Logs / Helius via getTransaction observed
|
||||
RAW-direct : Standard Block / HTTP Block Polling, Legacy/V0/V1
|
||||
convergence : identité canonique network/signature + disagreement explicite + observations multiples
|
||||
bornes : admission/hydration/persistence bornées avec fairness minimale
|
||||
observabilité : source counts source-neutral + health conservative
|
||||
continuité : reconnect/replay Transport-owned, processing frontier run-local, gap prouvé terminal
|
||||
shutdown : stop/fault/drain/abort/join bornés sans tâche orpheline ni late persistence
|
||||
```
|
||||
|
||||
## 99. README et USAGE audités sans modification artificielle
|
||||
|
||||
Les documents suivants ont été relus pendant `pre.014` :
|
||||
|
||||
```text
|
||||
README.md
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/README.md
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/USAGE.md
|
||||
```
|
||||
|
||||
Ils décrivent déjà les cinq familles, la composition multi-source, les gauges source-neutral, la health conservative et les frontières Job/Worker. Aucun changement n'est nécessaire.
|
||||
|
||||
`USAGE.md` reste strictement version-neutral : aucun numéro de gate, historique de prerelease ou journal de validation n'y est ajouté.
|
||||
|
||||
## 100. Frontière documentaire et non-claims pre.014
|
||||
|
||||
`pre.014` est documentaire hors bump mécanique de prerelease. Aucun code Rust, test, dépendance, feature ou contrat public n'est modifié.
|
||||
|
||||
Les preuves live restantes gardent leur statut réel :
|
||||
|
||||
```text
|
||||
HTTP Devnet keyless : PASS
|
||||
WebSocket Devnet keyless : PASS
|
||||
Yellowstone OrbitFlare Devnet : NON EXÉCUTÉ dans ce gate
|
||||
Yellowstone PublicNode Mainnet/Testnet : NON EXÉCUTÉ dans ce gate
|
||||
Helius transactionSubscribe live : NON EXÉCUTÉ
|
||||
blockSubscribe provider live dédié : NON EXÉCUTÉ
|
||||
HTTP block polling Worker end-to-end : NON EXÉCUTÉ
|
||||
Worker multi-source -> Store end-to-end : NON EXÉCUTÉ
|
||||
```
|
||||
|
||||
Aucun ancien delta n'est modifié. CHANGELOG, ROADMAP et prompt `0.3.14` restent réservés à `pre.015`.
|
||||
|
||||
Reference in New Issue
Block a user