Files
khadhroony-solana-project/deltas/0.3.15/pre.012-fix.004.md

3.6 KiB

Delta 0.3.15-pre.012-fix.004

Base

base archive : ksp-general-0.3.15-pre.012-fix.003.zip
base SHA-256 : da69b2bb468af431ca156885bd5150e8e690b57ffdfd1dec60f3e32393deeecf
base version : 0.3.15-pre.12.fix.3

Motif du fix

Le live Mainnet de pre.012-fix.003 reproduit un terminal Yellowstone worker_raw_transaction_ingest.content_conflict avec content_conflict_total=13 pendant l'exécution simultanée de yellowstone-hydrated et http-block-polling. Les deux routes étant deux Workers indépendants sur le même Store, le conflit inter-routes est détecté par PostgreSQL et le diagnostic Worker seul ne peut pas dire quels composants RAW divergent.

Un autre run reproduit séparément source_failed / onchain_transport.grpc_backpressure_overflow; ce second défaut reste inchangé et n'est pas masqué par ce fix.

Correction

Le backend PostgreSQL classe maintenant tout conflit actif raw_acquisition_content_conflict avant de renvoyer le même fault. Le log structurel expose uniquement des booléens de divergence pour slot, block_time, format, hash/bytes, transaction, meta, version, transactionIndex, plus une liste statique de champs meta divergents.

Les champs meta admis dans le diagnostic sont bornés à :

err
status
fee
preBalances
postBalances
innerInstructions
logMessages
preTokenBalances
postTokenBalances
rewards
loadedAddresses
returnData
computeUnitsConsumed
costUnits
accounts

Les clés inconnues sont agrégées sous other. Aucune valeur distante n'est journalisée.

Sur le même conflit, une lecture best-effort de l'observation durable la plus ancienne projette uniquement la provenance logique sûre du contenu stocké face à l'observation entrante : provider, protocol, acquisition method, endpoint id et commitment. Signature, payload, hashes, bytes, capture session et filter id restent absents des logs. L'échec de cette lecture de diagnostic ne remplace jamais le conflit original.

Version

workspace.package.version : 0.3.15-pre.12.fix.4
root Cargo header counter  : 626

Frontières

Aucun changement de :

Store schema / migrations
identité canonique RAW
comparaison d'égalité RAW
politique fail-closed content_conflict
Worker health/fault
routes / Start / Stop / shutdown
Config / Transport / Common RAW
replay / repair

Le seul nouvel edge de dépendance est serde_json dans ksp-store-postgres-lib, utilisé pour classifier en mémoire un payload RAW v1 déjà canonique au point de conflit.

Validation attendue

Le gate opérateur doit notamment confirmer :

cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-store-postgres-lib --all-targets --all-features
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features
cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features
cargo test --workspace --all-targets --all-features

Puis un live simultané Yellowstone + HTTP Block Polling doit capturer les deux lignes store.raw_transaction.content_conflict si le désaccord réapparaît.

Inventaire exact du delta

Ajout :

deltas/0.3.15/pre.012-fix.004.md

Modifications :

Cargo.toml
crates/ksp-store-postgres-lib/Cargo.toml
crates/ksp-store-postgres-lib/src/raw_transaction.rs
crates/ksp-store-postgres-lib/unit_tests/raw_transaction.rs
crates/ksp-store-postgres-lib/tests/dependency_boundary.rs
crates/ksp-store-postgres-lib/tests/hardening_completeness.rs
docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md

Suppressions : aucune.