v0.3.10-pre.004
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Validation v0.3.10 — RAW Transaction commune + Worker d’ingestion
|
||||
|
||||
@@ -661,3 +661,109 @@ cargo tree -p ksp-job-backfill-lib --edges normal
|
||||
cargo tree -p ksp-job-backfill-lib -e features
|
||||
```
|
||||
|
||||
## 13. Fermeture opérateur `pre.003` et gate `pre.004` — HTTP observed block
|
||||
|
||||
### 13.1 Fermeture opérateur de `pre.003`
|
||||
|
||||
Le rejeu communiqué le 2026-09-06 ferme la migration Backfill :
|
||||
|
||||
```text
|
||||
cargo fmt --all : exécuté
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
Markdown table audit: clean (339 table(s), 756 file(s))
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
|
||||
cargo test -p ksp-raw-transaction-lib : PASS, 9 unit + 8 intégration
|
||||
cargo test -p ksp-job-backfill-lib : PASS, 51 unit + 20 intégration
|
||||
cargo tree -p ksp-job-backfill-lib --edges normal : edge common présent, graphe attendu
|
||||
cargo tree -p ksp-job-backfill-lib -e features : aucune feature KSP inattendue
|
||||
```
|
||||
|
||||
`pre.004` peut donc être ouverte sur une base entièrement validée.
|
||||
|
||||
### 13.2 Surface Transport `pre.004`
|
||||
|
||||
`HttpTransportPool::get_block_observed(...)` :
|
||||
|
||||
```text
|
||||
réutilise exactement la validation/config moderne de get_block
|
||||
utilise le même routing/admission/retry standard
|
||||
retourne Option<SolanaConfirmedBlock>
|
||||
conserve endpoint_name + provider du winner réel
|
||||
préserve result = null comme None
|
||||
n’expose ni URL, ni headers, ni raw HTTP body
|
||||
Debug de HttpObservedValue ne rend pas le block payload
|
||||
```
|
||||
|
||||
Les fixtures déterministes couvrent le retry/reroute depuis un premier endpoint `429` vers un second winner et vérifient que la provenance retournée appartient au second endpoint.
|
||||
|
||||
### 13.3 Matériau common depuis un bloc Base64
|
||||
|
||||
`ksp-raw-transaction-lib` ajoute :
|
||||
|
||||
```text
|
||||
extract_raw_transaction_signature_from_binary_base64(...)
|
||||
RawTransactionMaterial::binary_base64_with_embedded_signature(...)
|
||||
```
|
||||
|
||||
L’extracteur :
|
||||
|
||||
```text
|
||||
borne l’entrée avant décodage
|
||||
exige un Base64 STANDARD canonique
|
||||
lit le short_vec Solana de signatures sans dépendance Solana transaction runtime
|
||||
refuse count = 0
|
||||
refuse short_vec tronqué/non canonique
|
||||
refuse tableau de signatures tronqué
|
||||
exige des bytes message après le tableau déclaré
|
||||
copie uniquement la première signature exacte de 64 octets
|
||||
ne copie jamais le transaction wire dans erreur/Debug
|
||||
```
|
||||
|
||||
Les fixtures de référence utilisent deux transactions minimales de `66` octets : prefix `1`, signatures respectives `[0; 64]` et `[1; 64]`, puis un byte de message. Les signatures extraites sont donc exactement distinctes et restent associées aux index 0 et 1 du bloc.
|
||||
|
||||
### 13.4 Preuve cross-layer sans mauvais edge
|
||||
|
||||
Le canari d’intégration `ksp-job-backfill-lib/tests/http_block_material.rs` utilise les deux dépendances déjà autorisées de cette crate pour prouver :
|
||||
|
||||
```text
|
||||
get_block_observed
|
||||
-> SolanaConfirmedBlock
|
||||
-> 2 SolanaBlockTransaction distinctes
|
||||
-> full Base64 transaction + meta + version + index 0/1
|
||||
-> RawTransactionMaterial::binary_base64_with_embedded_signature
|
||||
-> canonicalize_raw_transaction
|
||||
-> signatures [0;64] / [1;64] préservées
|
||||
```
|
||||
|
||||
Cette preuve est volontairement test-only. `TR-C2` reste inchangé : l’adapter productif Transport DTO -> common sera Worker-owned. Il n’existe toujours aucun edge de production `ksp-onchain-transport-lib -> ksp-raw-transaction-lib` ni l’inverse.
|
||||
|
||||
### 13.5 Audits d’assemblage
|
||||
|
||||
Exécuté dans l’environnement d’assemblage après fermeture du delta :
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||||
Markdown table audit: clean (339 table(s), 757 file(s))
|
||||
```
|
||||
|
||||
Les gates Cargo restent à rejouer côté opérateur dans l’environnement Rust complet :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
cargo test -p ksp-raw-transaction-lib
|
||||
cargo test -p ksp-onchain-transport-lib
|
||||
cargo test -p ksp-job-backfill-lib --test http_block_material
|
||||
cargo tree -p ksp-raw-transaction-lib --edges normal
|
||||
cargo tree -p ksp-onchain-transport-lib --edges normal
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user