v0.3.13-pre.004
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# 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 `pre.003` ajoute la source productive Standard Solana `logsSubscribe` + hydration HTTP observée, 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 et `pre.004` ajoute Standard Solana `blockSubscribe` RAW-direct qualifié Legacy/V0/V1, sans activer encore la supervision simultanée.
|
||||
|
||||
## 2. Archive stable contrôlée
|
||||
|
||||
@@ -811,3 +811,157 @@ cargo tree --duplicates
|
||||
```
|
||||
|
||||
`pre.004` ne doit pas commencer si une anomalie de format, règle, compilation, API, dépendance ou test apparaît.
|
||||
|
||||
## 35. Gate opérateur pre.003-fix.003 reçu avant pre.004
|
||||
|
||||
Le gate fourni par l'opérateur sur `0.3.13-pre.3.fix.3` est vert pour toutes les commandes exécutées :
|
||||
|
||||
```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, 834 files)
|
||||
cargo check --workspace : PASS
|
||||
clippy workspace/all-targets/all-features -D warnings : PASS
|
||||
ksp-worker-raw-transaction-ingest-lib unit tests : 75 pass
|
||||
cross_layer_completeness : 4 pass
|
||||
dependency_boundary : 10 pass
|
||||
hardening : 17 pass
|
||||
public_api : 11 pass
|
||||
release_completeness : 4 pass
|
||||
worker doc-tests : 0
|
||||
```
|
||||
|
||||
Cette exécution ne contenait pas `cargo test -p ksp-onchain-transport-lib` ni les commandes `cargo tree`; aucune nouvelle affirmation n'est ajoutée pour ces commandes. Le gate Worker demandé après `pre.003-fix.003` est satisfait.
|
||||
|
||||
## 36. Implémentation pre.004 — Standard Block RAW-direct
|
||||
|
||||
`pre.004` ajoute `RawTransactionIngestStandardBlockSource` à l'agrégat runtime existant. La construction reste sans I/O et exige :
|
||||
|
||||
```text
|
||||
WsEndpointSettings kind solana_standard
|
||||
SolanaBlockSubscribeFilter
|
||||
SolanaCommitment Confirmed ou Finalized
|
||||
```
|
||||
|
||||
Au runtime, la source réutilise `SolanaStandardWsSession::connect` et `block_subscribe` avec :
|
||||
|
||||
```text
|
||||
encoding = Base64
|
||||
transactionDetails = Full
|
||||
maxSupportedTransactionVersion = 1
|
||||
showRewards = false
|
||||
```
|
||||
|
||||
Aucun `HttpTransportPool`, aucun `getBlock` HTTP et aucun second acteur WebSocket ne sont ajoutés à cette source.
|
||||
|
||||
## 37. Qualification RAW-direct et sûreté block:null
|
||||
|
||||
La projection accepte uniquement des versions explicitement qualifiées :
|
||||
|
||||
```text
|
||||
Legacy -> RawTransactionVersion::Legacy
|
||||
0 -> RawTransactionVersion::Number(0)
|
||||
1 -> RawTransactionVersion::Number(1)
|
||||
>1 -> source.standard_block_transaction_version_unsupported
|
||||
omise/null -> source.standard_block_transaction_version_unqualified
|
||||
```
|
||||
|
||||
Le matériau Common RAW direct est construit à partir du wire Base64 de chaque transaction avec signature embarquée, slot, `blockTime`, `meta`, version et index de transaction. La fixture V1 locale sérialise un vrai `RawSolanaTransactionMessage::V1` par les types publics de `ksp-raw-transaction-lib` avant projection ; la tranche ne déduit donc pas V1 d'une simple étiquette.
|
||||
|
||||
Les gardes suivantes sont fail-closed avant progression de frontier :
|
||||
|
||||
```text
|
||||
context.slot != notification.slot
|
||||
notification.err != null
|
||||
block == null
|
||||
transactions omitted/null
|
||||
transaction non Base64
|
||||
version omise/null/>1
|
||||
signature embarquée invalide
|
||||
index usize non représentable en u32
|
||||
```
|
||||
|
||||
`block: null` n'est jamais traité comme bloc vide ou slot settled. Pour un bloc non vide, le slot n'est enregistré settled qu'après l'admission réussie de toutes ses transactions. La voie directe ne détourne pas `hydration_pending`; un arrêt ou une faute au milieu du bloc ne produit aucune progression transitoire.
|
||||
|
||||
## 38. Identité, redaction et composition pre.004
|
||||
|
||||
La clé logique Standard Block est dérivée de :
|
||||
|
||||
```text
|
||||
domain KSP live source key
|
||||
family = standard_block
|
||||
network
|
||||
safe provider identity
|
||||
safe endpoint identity
|
||||
commitment
|
||||
private block-filter fingerprint
|
||||
SHA-256 -> [u8; 32]
|
||||
```
|
||||
|
||||
`Debug` n'expose que des identités sûres, le type de filtre et les longueurs d'empreinte/clé. Un pubkey de `MentionsAccountOrProgram` n'est pas recopié. L'agrégat public gagne `from_standard_block_source` et `try_push_standard_block_source` avec les mêmes bornes `1..32`, invariant réseau unique et rejet transactionnel des doublons.
|
||||
|
||||
Une seule source reste productivement activable. Une collection `2..32` demeure `runtime_resources.multi_source_activation_pending` avant spawn jusqu'à `pre.007`.
|
||||
|
||||
## 39. Preuves déterministes ajoutées pre.004
|
||||
|
||||
Worker unit tests ajoutés couvrent :
|
||||
|
||||
```text
|
||||
validation protocol/commitment Standard Block
|
||||
source_key stable, filter-sensitive et redacted
|
||||
qualification exacte Legacy/V0/V1
|
||||
rejet version omise/null/>1
|
||||
fixture V1 wire -> matériau Common RAW direct exact
|
||||
rejet duplicate Standard Block identity
|
||||
```
|
||||
|
||||
Canaris externes ajoutés/étendus :
|
||||
|
||||
```text
|
||||
public_api : construction et composition Standard Block depuis crate root
|
||||
dependency_boundary : façade Transport uniquement, sans getBlock HTTP/direct network crate
|
||||
hardening : block:null/version/encoding/redaction explicites
|
||||
release_completeness : export et canaris pre.004 obligatoires
|
||||
```
|
||||
|
||||
## 40. Validations locales post-modification pre.004
|
||||
|
||||
Le toolchain Cargo/Rustfmt reste indisponible dans l'environnement d'assemblage. Les commandes Cargo post-`pre.004` sont donc `NON EXÉCUTÉ LOCAL`; seuls les audits statiques effectivement lancés sont déclarés PASS dans le delta de livraison.
|
||||
|
||||
## 41. Non-claims pre.004
|
||||
|
||||
`pre.004` ne prétend pas :
|
||||
|
||||
```text
|
||||
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 ajouté un fallback HTTP getBlock/getTransaction à Standard Block
|
||||
avoir étendu le RAW-direct à une version >1 ou ambiguë
|
||||
avoir transformé block:null en progression
|
||||
avoir ajouté une dépendance réseau directe au Worker
|
||||
avoir exécuté Cargo localement après modification
|
||||
```
|
||||
|
||||
## 42. Gate opérateur requis avant pre.005
|
||||
|
||||
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.005` 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