v0.3.5-pre.003
This commit is contained in:
193
deltas/0.3.5/pre.003.md
Normal file
193
deltas/0.3.5/pre.003.md
Normal file
@@ -0,0 +1,193 @@
|
||||
<!-- 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.
|
||||
Reference in New Issue
Block a user