v0.3.5-pre.002
This commit is contained in:
180
deltas/0.3.5/pre.002.md
Normal file
180
deltas/0.3.5/pre.002.md
Normal file
@@ -0,0 +1,180 @@
|
||||
<!-- file: deltas/0.3.5/pre.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.5-pre.002` — `SlotLifecycleEvent`
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.3.5-pre.001-fix.001
|
||||
workspace.package.version = 0.3.5-pre.1
|
||||
```
|
||||
|
||||
Gate d'entrée opérateur reçu après le fix :
|
||||
|
||||
```text
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
Markdown table audit: clean (240 table(s), 138 file(s))
|
||||
```
|
||||
|
||||
## Objectif
|
||||
|
||||
Matérialiser uniquement la famille passive provider-neutral `SlotLifecycleEvent` admise par le gate corrigé de `pre.001`, sans ouvrir la famille candidate `TransactionExecutionEvent` et sans déplacer les DTOs protocol/provider hors de Transport.
|
||||
|
||||
## Version
|
||||
|
||||
Cette tranche est une nouvelle prerelease non-fix. La version workspace devient :
|
||||
|
||||
```text
|
||||
0.3.5-pre.2
|
||||
```
|
||||
|
||||
Le manifest `crates/ksp-interface-lib/Cargo.toml` reste inchangé et continue d'hériter de la version workspace.
|
||||
|
||||
## Implémentation
|
||||
|
||||
Nouvelle surface crate-root :
|
||||
|
||||
```text
|
||||
SlotLifecycleStage
|
||||
SlotLifecycleEvent
|
||||
```
|
||||
|
||||
`SlotLifecycleStage` est `#[non_exhaustive]` et contient exactement :
|
||||
|
||||
```text
|
||||
Processed
|
||||
FirstShredReceived
|
||||
Completed
|
||||
CreatedBank
|
||||
Dead
|
||||
OptimisticallyConfirmed
|
||||
Rooted
|
||||
```
|
||||
|
||||
`SlotLifecycleEvent` reste volontairement minimal :
|
||||
|
||||
```text
|
||||
slot: u64
|
||||
stage: SlotLifecycleStage
|
||||
```
|
||||
|
||||
avec uniquement :
|
||||
|
||||
```text
|
||||
SlotLifecycleEvent::new(slot, stage)
|
||||
SlotLifecycleEvent::slot()
|
||||
SlotLifecycleEvent::stage()
|
||||
```
|
||||
|
||||
Aucune validation faillible n'est ajoutée : tout `u64` est un slot admissible au niveau de ce contrat passif.
|
||||
|
||||
## Ownership et dépendances
|
||||
|
||||
Préservé :
|
||||
|
||||
```text
|
||||
ksp-interface-lib -> ksp-core-lib
|
||||
```
|
||||
|
||||
Absent :
|
||||
|
||||
```text
|
||||
serde
|
||||
codec wire
|
||||
tracing/logging runtime
|
||||
tokio/channel/event bus
|
||||
ksp-onchain-transport-lib
|
||||
ksp-store-api
|
||||
ksp-store-lib
|
||||
ksp-store-postgres-lib
|
||||
```
|
||||
|
||||
Aucun converter depuis les DTOs Solana WS, Yellowstone ou Helius n'est ajouté dans Interface. Les conversions appartiennent à la future composition/consumer.
|
||||
|
||||
## Canaris
|
||||
|
||||
Ajoutés :
|
||||
|
||||
```text
|
||||
crates/ksp-interface-lib/unit_tests/slot_lifecycle.rs
|
||||
crates/ksp-interface-lib/tests/slot_lifecycle_public_api.rs
|
||||
```
|
||||
|
||||
Le premier verrouille les 7 stages, le domaine `u64`, les traits passifs retenus et un `Debug` borné/provider-neutral. Le second vérifie la consommation depuis crate root et la capacité d'évolution downstream de l'enum non-exhaustive.
|
||||
|
||||
Le canari historique `tests/release_completeness.rs` est ajusté afin que son inventaire exact accepte la seule extension prévue de cette tranche : `slot_lifecycle` et ses deux reexports publics.
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-interface-lib/src/lib.rs
|
||||
crates/ksp-interface-lib/tests/release_completeness.rs
|
||||
docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md
|
||||
```
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
crates/ksp-interface-lib/src/slot_lifecycle.rs
|
||||
crates/ksp-interface-lib/unit_tests/slot_lifecycle.rs
|
||||
crates/ksp-interface-lib/tests/slot_lifecycle_public_api.rs
|
||||
deltas/0.3.5/pre.002.md
|
||||
```
|
||||
|
||||
## Fichiers explicitement hors scope
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Validations exécutées dans l'environnement d'assemblage
|
||||
|
||||
Validations statiques de l'overlay :
|
||||
|
||||
```text
|
||||
version workspace = 0.3.5-pre.2
|
||||
nouvelle source Interface sans serde/tracing/tokio/Transport/Store
|
||||
crate-root = 4 modules privés / 8 reexports publics attendus
|
||||
SlotLifecycleStage = 7 variantes prévues
|
||||
aucun TransactionExecutionEvent introduit
|
||||
archive = fichiers modifiés/ajoutés uniquement
|
||||
```
|
||||
|
||||
L'environnement d'assemblage ne fournit pas le workspace Cargo complet exécutable ; aucun `cargo check`, Clippy ou test Rust de cette tranche n'est donc déclaré réussi ici.
|
||||
|
||||
## Gate opérateur demandé
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
`ksp-program-api` est inclus car il est le consumer actuel direct de `ksp-interface-lib`, même si `pre.002` ne modifie aucun contrat Program existant.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
Aucune question ne bloque `SlotLifecycleEvent`.
|
||||
|
||||
Le seul gate fonctionnel suivant reste `TransactionExecutionEvent` : représentation de signature, convergence exacte Solana/Yellowstone/Helius, anti-duplication Store et consumer concret doivent être prouvés en `pre.003` avant toute implémentation.
|
||||
|
||||
## Suite
|
||||
|
||||
```text
|
||||
0.3.5-pre.003 — gate TransactionExecutionEvent ; implémentation uniquement si le gate est complet
|
||||
```
|
||||
Reference in New Issue
Block a user