5.2 KiB
Delta 0.3.5-pre.003 — TransactionExecutionEvent
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.