Files
khadhroony-solana-project/deltas/0.3.5/pre.002.md
2026-08-31 10:36:10 +02:00

4.6 KiB

Delta 0.3.5-pre.002SlotLifecycleEvent

Base requise

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 :

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 :

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 :

SlotLifecycleStage
SlotLifecycleEvent

SlotLifecycleStage est #[non_exhaustive] et contient exactement :

Processed
FirstShredReceived
Completed
CreatedBank
Dead
OptimisticallyConfirmed
Rooted

SlotLifecycleEvent reste volontairement minimal :

slot: u64
stage: SlotLifecycleStage

avec uniquement :

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é :

ksp-interface-lib -> ksp-core-lib

Absent :

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 :

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

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

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

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 :

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é

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

0.3.5-pre.003 — gate TransactionExecutionEvent ; implémentation uniquement si le gate est complet