v0.3.10-pre.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# Validation v0.3.10 — RAW Transaction commune + Worker d’ingestion
|
||||
|
||||
@@ -513,3 +513,151 @@ workspace.package.version = 0.3.10-pre.2.fix.1
|
||||
|
||||
Le gate Clippy complet doit être rejoué après application du fix avant ouverture de `pre.003`.
|
||||
|
||||
## 12. `pre.002-fix.001` fermé et `pre.003` — migration Backfill vers common
|
||||
|
||||
### 12.1 Fermeture opérateur de `pre.002-fix.001`
|
||||
|
||||
Le rejeu communiqué le 2026-09-06 ferme le fix précédent :
|
||||
|
||||
```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), 755 file(s))
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
|
||||
cargo test -p ksp-raw-transaction-lib : PASS
|
||||
```
|
||||
|
||||
Détail des tests common communiqué :
|
||||
|
||||
```text
|
||||
9 unitaires : PASS
|
||||
8 intégration : PASS
|
||||
0 échec
|
||||
0 doctest
|
||||
```
|
||||
|
||||
L’arbre normal confirme uniquement `ksp-core-lib`, `ksp-store-api`, `serde_json` et `sha2` côté common. L’arbre de features ne révèle aucune feature KSP/runtime inattendue. `pre.003` peut donc être ouverte.
|
||||
|
||||
### 12.2 Migration réalisée dans `pre.003`
|
||||
|
||||
`ksp-job-backfill-lib` dépend désormais explicitement de `ksp-raw-transaction-lib`. La conversion Backfill ne possède plus :
|
||||
|
||||
```text
|
||||
algorithme Base58 64-byte
|
||||
canonical JSON récursif
|
||||
construction RawPayload
|
||||
SHA-256 du payload RAW
|
||||
conversion block_time RAW
|
||||
assemblage direct RawTransaction + RawTransactionObservation
|
||||
```
|
||||
|
||||
Le chemin productif devient :
|
||||
|
||||
```text
|
||||
BackfillSignature
|
||||
-> ksp-raw-transaction-lib::parse_raw_transaction_signature
|
||||
|
||||
SolanaConfirmedTransaction
|
||||
-> adapter Transport local
|
||||
-> RawTransactionMaterial::binary_base64
|
||||
-> ksp-raw-transaction-lib::canonicalize_raw_transaction
|
||||
|
||||
Backfill provenance + Backfill observation key
|
||||
-> ksp-raw-transaction-lib::assemble_raw_transaction_acquisition
|
||||
-> Store facade
|
||||
```
|
||||
|
||||
Le Backfill conserve volontairement :
|
||||
|
||||
```text
|
||||
getTransaction observed + rôle HTTP
|
||||
commitment/campagne/job_id/scope_fingerprint
|
||||
provider + endpoint réel gagnant
|
||||
RawAcquisitionOrigin::Backfill
|
||||
capture_session = JobId
|
||||
algorithme de RawObservationKey Backfill v1
|
||||
remapping des erreurs common vers ERROR_CODE_BACKFILL_RAW_CONVERSION_INVALID
|
||||
persistence Store et sémantique Missing
|
||||
```
|
||||
|
||||
### 12.3 Parité gelée
|
||||
|
||||
Les canaris Backfill continuent d’exiger :
|
||||
|
||||
```text
|
||||
RAW_TRANSACTION_FORMAT_ID = ksp.solana.raw_transaction
|
||||
RAW_TRANSACTION_FORMAT_VERSION = 1
|
||||
byte_len golden = 112
|
||||
sha256 golden = 220792d2b15d262fda242cb220774ee9ddeffebf04dcfadabcf8ef76a9b1a7c3
|
||||
block_time golden = 1700000000000 ms
|
||||
network = devnet
|
||||
signature = 64 octets zéro pour le vecteur de référence
|
||||
provider = publicnode
|
||||
protocol = solana.http.json_rpc
|
||||
method = getTransaction
|
||||
endpoint = devnet-primary
|
||||
commitment = finalized
|
||||
capture_session = backfill:pre006
|
||||
```
|
||||
|
||||
L’observation key Backfill du vecteur `provider` / `endpoint-a` est désormais verrouillée byte-for-byte :
|
||||
|
||||
```text
|
||||
b8550f0f2165f370de918bd4fb0ec782391afdddb88c57f010743e000b136702
|
||||
```
|
||||
|
||||
Ce canari prouve que la migration common ne déplace pas l’idempotence producer-owned vers la lower layer.
|
||||
|
||||
### 12.4 Frontières de dépendances
|
||||
|
||||
Le graphe Backfill attendu devient :
|
||||
|
||||
```text
|
||||
ksp-job-backfill-lib
|
||||
-> ksp-core-lib
|
||||
-> ksp-job-api
|
||||
-> ksp-logging-lib
|
||||
-> ksp-onchain-transport-lib
|
||||
-> ksp-raw-transaction-lib
|
||||
-> ksp-store-lib default-features=false
|
||||
-> futures-util
|
||||
-> serde_json
|
||||
-> sha2
|
||||
-> tokio macros+sync
|
||||
```
|
||||
|
||||
`serde_json` reste un type direct de l’adapter Transport (`SolanaWireField<serde_json::Value>`), mais aucune canonicalisation JSON Backfill n’existe plus. `sha2` reste Job-owned pour scope fingerprint et observation key ; le hash du payload RAW appartient désormais uniquement à common.
|
||||
|
||||
### 12.5 Validation locale d’assemblage `pre.003`
|
||||
|
||||
Exécuté dans l’environnement d’assemblage :
|
||||
|
||||
```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), 756 file(s))
|
||||
```
|
||||
|
||||
L’environnement d’assemblage ne fournit toujours ni `cargo`, ni `rustc`, ni `rustfmt`. Les gates Cargo de `pre.003` restent donc à rejouer côté opérateur.
|
||||
|
||||
### 12.6 Gate opérateur demandé pour `pre.003`
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
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-raw-transaction-lib
|
||||
cargo test -p ksp-job-backfill-lib
|
||||
cargo tree -p ksp-job-backfill-lib --edges normal
|
||||
cargo tree -p ksp-job-backfill-lib -e features
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user