Files
khadhroony-solana-project/deltas/0.3.5/pre.003.md
2026-08-31 11:01:45 +02:00

5.2 KiB

Delta 0.3.5-pre.003TransactionExecutionEvent

Base requise

0.3.5-pre.2.fix.1

Le gate opérateur de cette base confirme les audits Rust, cargo check --workspace, Clippy, cargo test -p ksp-interface-lib et cargo test -p ksp-program-api. Le seul défaut restant est une double ligne vide dans docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md; conformément à la décision opérateur, cette correction documentaire est absorbée par le présent delta au lieu de créer un fix dédié.

Version

Le delta modifie la surface Rust Interface. La version workspace devient :

0.3.5-pre.3

Mission

Fermer le gate dédié à TransactionExecutionEvent prévu par le plan corrigé de 0.3.5 : représentation de signature, convergence Solana/Yellowstone/Helius, anti-duplication Store et consumer concret doivent tous être démontrés avant création du type.

Décision de gate

Le gate passe avec une projection strictement minimale :

TransactionSignature([u8; 64])

TransactionExecutionOutcome {
    Succeeded,
    Failed,
}

TransactionExecutionEvent {
    slot,
    signature,
    outcome,
}

La convergence retenue est :

Solana logsSubscribe
    context.slot + signature + err

Yellowstone TransactionStatus
    slot + signature + err

Helius transactionSubscribe
    slot + signature + résultat d'exécution seulement lorsque la forme/detail mode le rend déterminable

err n'est jamais copié dans Interface. Solana err: null, Yellowstone err: None et un Helius err: null explicitement disponible donnent Succeeded; une erreur explicite donne Failed.

Pour Helius, la projection est conservative : un err omis, une forme none, inconnue ou sans information d'erreur exploitable ne produit pas artificiellement un TransactionExecutionEvent.

Signature

TransactionSignature possède exactement 64 octets déjà décodés.

Interface n'ajoute :

aucun base58
aucun serde
aucun codec
aucune crate Solana/Anza supplémentaire
aucune capability Wallet de signature

Le Debug est redacted et ne rend jamais les bytes.

ksp-store-api::RawTransactionSignature reste Store-owned. Aucun alias/reexport/converter cross-domain n'est ajouté ; la future composition convertit explicitement les 64 octets si nécessaire.

Ownership

Restent Transport-owned :

Solana logs notification DTO
Yellowstone TransactionStatus DTO
Helius transactionSubscribe DTOs
commitment
subscription/filter metadata
transaction index
logs
memo
block time
confirmation status
provider timestamps
opaque transaction errors

Interface possède uniquement le fait passif commun.

Consumer

Le futur worker RAW live peut utiliser TransactionExecutionEvent comme signal provider-neutral d'exécution observée et décider ensuite d'hydrater/persister un RawTransaction par sa propre composition/policy.

Le premier backfill historique 0.3.6 reste indépendant de cette API.

Surface Rust

Ajouts crate-root :

TransactionSignature
TransactionExecutionOutcome
TransactionExecutionEvent

TransactionExecutionOutcome est #[non_exhaustive].

Les champs des structs restent privés et la surface ne possède ni runtime ni comportement réseau.

Tests/canaris

Ajoutés :

unit_tests/transaction_execution.rs
tests/transaction_execution_public_api.rs

Le canari tests/release_completeness.rs évolue pour figer :

5 modules privés de production
11 reexports crate-root
transaction_execution comme seule nouvelle famille pre.003
absence de serde/tracing/Transport/Store dans la racine Interface

Documentation

Le plan et la validation passent TransactionExecutionEvent de candidat actif à ADMIS pre.003.

TransactionLogEvent reste une idée différée distincte. TransactionCommitmentEvent reste non admis. Yellowstone Entry et les DTOs Helius restent Transport-owned même lorsqu'ils pourront contribuer à de futurs faits Interface réellement transversaux.

La double ligne vide signalée par le gate opérateur précédent est supprimée dans la validation.

Fichiers

Modifiés :

Cargo.toml
crates/ksp-interface-lib/src/lib.rs
crates/ksp-interface-lib/tests/release_completeness.rs
docs/plans/026-V0_3_5_INTERFACE_ACQUISITION_EVENTS_PLAN.md
docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md

Ajoutés :

crates/ksp-interface-lib/src/transaction_execution.rs
crates/ksp-interface-lib/unit_tests/transaction_execution.rs
crates/ksp-interface-lib/tests/transaction_execution_public_api.rs
deltas/0.3.5/pre.003.md

Explicitement inchangés :

crates/ksp-interface-lib/Cargo.toml
crates/ksp-onchain-transport-lib/**
crates/ksp-store-api/**
crates/ksp-store-lib/**
crates/ksp-store-postgres-lib/**
README.md
ROADMAP.md
CHANGELOG.md

Gate opérateur

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/0.3.5
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-interface-lib
cargo test -p ksp-program-api

Les gates Cargo ne sont pas déclarés réussis par l'environnement d'assemblage.