# Delta `0.3.5-pre.001-fix.001` — correction du gate Interface acquisition events ## Base requise ```text 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` : 1. `OptimisticConfirmation <-> Yellowstone Confirmed` et `Root <-> Yellowstone Finalized` représentent bien les mêmes faits de lifecycle lorsqu'ils sont normalisés avec des noms KSP qui conservent la sémantique source ; 2. 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 : ```text SlotLifecycleStage + Processed + FirstShredReceived + Completed + CreatedBank + Dead + OptimisticallyConfirmed + Rooted ``` Mappings corrigés : ```text 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 : ```text TransactionExecutionEvent { slot, signature, outcome = Succeeded | Failed, } ``` Producers candidats : ```text 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 : ```text 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 : ```text 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 : ```text 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é ```text 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é : ```text 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 : ```text 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 ```text docs/plans/026-V0_3_5_INTERFACE_ACQUISITION_EVENTS_PLAN.md docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md ``` ## Fichiers ajoutés ```text deltas/0.3.5/pre.001-fix.001.md ``` ## Fichiers explicitement inchangés ```text Cargo.toml crates/** README.md ROADMAP.md CHANGELOG.md ``` ## Gate demandé après application du fix Le fix ne change que Markdown. Rejouer : ```text 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.