194 lines
5.2 KiB
Markdown
194 lines
5.2 KiB
Markdown
<!-- file: deltas/0.3.5/pre.003.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.3.5-pre.003` — `TransactionExecutionEvent`
|
|
|
|
## Base requise
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
TransactionSignature([u8; 64])
|
|
|
|
TransactionExecutionOutcome {
|
|
Succeeded,
|
|
Failed,
|
|
}
|
|
|
|
TransactionExecutionEvent {
|
|
slot,
|
|
signature,
|
|
outcome,
|
|
}
|
|
```
|
|
|
|
La convergence retenue est :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
unit_tests/transaction_execution.rs
|
|
tests/transaction_execution_public_api.rs
|
|
```
|
|
|
|
Le canari `tests/release_completeness.rs` évolue pour figer :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
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.
|