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