v0.3.10-pre.003

This commit is contained in:
2026-09-06 10:41:47 +02:00
parent aabe8dedb2
commit 8309d829cc
12 changed files with 546 additions and 289 deletions

View File

@@ -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 dingestion
@@ -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
```
Larbre normal confirme uniquement `ksp-core-lib`, `ksp-store-api`, `serde_json` et `sha2` côté common. Larbre 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 dexiger :
```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
```
Lobservation 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 lidempotence 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 ladapter Transport (`SolanaWireField<serde_json::Value>`), mais aucune canonicalisation JSON Backfill nexiste 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 dassemblage `pre.003`
Exécuté dans lenvironnement dassemblage :
```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))
```
Lenvironnement dassemblage 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
```