5.3 KiB
Delta 0.3.5-pre.001-fix.001 — correction du gate Interface acquisition events
Base requise
0.3.5-pre.001
workspace.package.version = 0.3.5-pre.1
Ce fix est strictement documentaire. Conformément au workflow KSP, il ne modifie pas workspace.package.version et ne touche aucun fichier Cargo/Rust/runtime/config.
Motif du fix
Le brainstorming post-gate a identifié deux décisions trop conservatrices dans pre.001 :
OptimisticConfirmation <-> Yellowstone ConfirmedetRoot <-> Yellowstone Finalizedreprésentent bien les mêmes faits de lifecycle lorsqu'ils sont normalisés avec des noms KSP qui conservent la sémantique source ;- la catégorie générique « transaction status » mélangeait snapshot, commitment et exécution, masquant un candidat event-only transversal possible.
Corrections de conception
Slot lifecycle
L'intersection admise devient :
SlotLifecycleStage
+ Processed
+ FirstShredReceived
+ Completed
+ CreatedBank
+ Dead
+ OptimisticallyConfirmed
+ Rooted
Mappings corrigés :
Solana slotsUpdates::OptimisticConfirmation
-> SlotLifecycleStage::OptimisticallyConfirmed
<- Yellowstone SlotStatus::Confirmed
Solana rootSubscribe / slotsUpdates::Root
-> SlotLifecycleStage::Rooted
<- Yellowstone SlotStatus::Finalized
Les noms OptimisticallyConfirmed et Rooted évitent de promouvoir les labels Yellowstone Confirmed/Finalized en terminologie KSP universelle. Frozen reste hors intersection.
Transaction execution
TransactionExecutionEvent est rouvert comme candidat actif de 0.3.5, conceptuellement :
TransactionExecutionEvent {
slot,
signature,
outcome = Succeeded | Failed,
}
Producers candidats :
Solana logsSubscribe
Yellowstone TransactionStatus
Helius transactionSubscribe
Le type n'est pas encore admis. pre.003 doit d'abord auditer la représentation KSP de signature, les mappings exacts, l'anti-duplication Store et le consumer concret. Aucun type partiel ne doit être créé si ce gate échoue.
Logs et commitment
Les familles sont désormais explicitement séparées :
TransactionLogEvent
-> idée différée ; bornes/consumer/multi-producer à démontrer
getSignatureStatuses
-> snapshot Transport
signatureSubscribe
-> transition one-shot de commitment Transport
TransactionCommitmentEvent
-> non admis ; ne jamais fusionner avec TransactionExecutionEvent par Option soup
Extensions provider/protocol
La règle d'ownership est clarifiée :
DTO provider/protocol spécifique
-> Transport
fait passif provider-neutral réellement commun
-> Interface après gate sémantique
Ainsi Helius transactionSubscribe et Yellowstone Entry restent Transport-owned comme DTOs. Leur caractère non standard n'interdit pas qu'un futur fait commun qu'ils permettent d'observer soit Interface-owned.
Traçabilité TODO/IDEAS
Le fix ne crée pas artificiellement une entrée durable séparée pendant que le gate 0.3.5 est encore actif :
TransactionExecutionEvent -> suivi actif dans plan/validation 0.3.5
TransactionLogEvent -> idée différée explicitement tracée dans plan/validation
Si TransactionLogEvent reste hors scope à la réconciliation documentaire finale, il devra être transféré dans le TODO/IDEAS durable approprié.
Plan de prereleases corrigé
pre.002 implémentation SlotLifecycleEvent/Stage à 7 stages
pre.003 gate TransactionExecutionEvent + implémentation seulement si gate complet
pre.004 canaris externes + complétude API
pre.005 hardening final
pre.006 gate technique final
pre.007 réconciliation documentaire finale
pre.008 préparation de publication
rel.001 stable 0.3.5
Gate opérateur reçu pour pre.001
Avant ce fix, l'opérateur a rejoué :
cargo clean
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
Résultat fourni :
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean (251 table(s), 137 file(s))
cargo check --workspace: PASS
cargo clippy --workspace --all-targets: PASS
cargo test -p ksp-interface-lib: PASS
Les tests Interface détaillés fournis sont tous propres : 10 unitaires, 4 dependency-boundary, 1 external-consumer, 5 public-api, 3 release-completeness, aucun échec de doc-test.
Fichiers modifiés
docs/plans/026-V0_3_5_INTERFACE_ACQUISITION_EVENTS_PLAN.md
docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md
Fichiers ajoutés
deltas/0.3.5/pre.001-fix.001.md
Fichiers explicitement inchangés
Cargo.toml
crates/**
README.md
ROADMAP.md
CHANGELOG.md
Gate demandé après application du fix
Le fix ne change que Markdown. Rejouer :
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
Aucun rerun Cargo n'est requis par le contenu du fix lui-même.