v0.3.5-pre.002
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Validation `0.3.5` — Interface passive acquisition events
|
||||
|
||||
## 1. Portée
|
||||
|
||||
Ce document est ouvert par `0.3.5-pre.001` et corrigé par `0.3.5-pre.001-fix.001`. Le fix enregistre les corrections sémantiques du gate ainsi que le gate Cargo réellement rejoué par l'opérateur sur `0.3.5-pre.1`.
|
||||
Ce document est ouvert par `0.3.5-pre.001`, corrigé par `0.3.5-pre.001-fix.001` puis enrichi par `0.3.5-pre.002`. `pre.002` matérialise uniquement la famille `SlotLifecycleEvent` admise par le gate corrigé, sans avancer `TransactionExecutionEvent`.
|
||||
|
||||
Base :
|
||||
|
||||
@@ -17,7 +17,7 @@ workspace.package.version = 0.3.4
|
||||
Version de travail :
|
||||
|
||||
```text
|
||||
0.3.5-pre.1
|
||||
0.3.5-pre.2
|
||||
```
|
||||
|
||||
## 2. Gate d'entrée `v0.3.4`
|
||||
@@ -161,22 +161,22 @@ Yellowstone gRPC -------------+
|
||||
|
||||
## 10. Threat gates
|
||||
|
||||
| Gate | Attendu `0.3.5` | Statut `pre.001` |
|
||||
| ------------------------------------ | ------------------------------------------------- | ---------------- |
|
||||
| mega enum | absent | PLAN PASS |
|
||||
| protocol/provider enum leakage | absent | PLAN PASS |
|
||||
| timestamp semantics conflated | absent | PLAN PASS |
|
||||
| root/finalized label confusion | évitée par le stage KSP `Rooted` | PLAN PASS |
|
||||
| optimistic/confirmed label confusion | évitée par le stage KSP `OptimisticallyConfirmed` | PLAN PASS |
|
||||
| dead diagnostic in shared API | absent | PLAN PASS |
|
||||
| RAW Store duplication | absent | PLAN PASS |
|
||||
| event persistence | absent | PLAN PASS |
|
||||
| event bus/runtime | absent | PLAN PASS |
|
||||
| network id duplicated from Store | absent | PLAN PASS |
|
||||
| cross-network use | composition doit conserver son scope réseau | À CANARIER |
|
||||
| public enum evolution | `SlotLifecycleStage` doit être non-exhaustive | À IMPLÉMENTER |
|
||||
| Core-only graph | aucune dependency nouvelle | PASS opérateur |
|
||||
| external consumer | type consommable depuis crate externe | À IMPLÉMENTER |
|
||||
| Gate | Attendu `0.3.5` | Statut courant |
|
||||
| ------------------------------------ | ------------------------------------------------- | ------------------ |
|
||||
| mega enum | absent | PLAN PASS |
|
||||
| protocol/provider enum leakage | absent | PLAN PASS |
|
||||
| timestamp semantics conflated | absent | PLAN PASS |
|
||||
| root/finalized label confusion | évitée par le stage KSP `Rooted` | PLAN PASS |
|
||||
| optimistic/confirmed label confusion | évitée par le stage KSP `OptimisticallyConfirmed` | PLAN PASS |
|
||||
| dead diagnostic in shared API | absent | PLAN PASS |
|
||||
| RAW Store duplication | absent | PLAN PASS |
|
||||
| event persistence | absent | PLAN PASS |
|
||||
| event bus/runtime | absent | PLAN PASS |
|
||||
| network id duplicated from Store | absent | PLAN PASS |
|
||||
| cross-network use | composition doit conserver son scope réseau | À CANARIER |
|
||||
| public enum evolution | `SlotLifecycleStage` doit être non-exhaustive | IMPLÉMENTÉ pre.002 |
|
||||
| Core-only graph | aucune dependency nouvelle | PASS opérateur |
|
||||
| external consumer | type consommable depuis crate externe | CANARI pre.002 |
|
||||
|
||||
## 11. Fichiers de `pre.001`
|
||||
|
||||
@@ -260,3 +260,129 @@ Helius transactionSubscribe et Yellowstone Entry restent des DTOs Transport
|
||||
un futur fait provider-neutral produit par une extension provider peut appartenir à Interface après gate
|
||||
aucun fichier Rust/Transport/Store/Cargo n'est modifié par le fix
|
||||
```
|
||||
|
||||
## 15. Gate opérateur post-`pre.001-fix.001`
|
||||
|
||||
Avant l'ouverture de `pre.002`, l'opérateur a rejoué les audits demandés sur l'état corrigé :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Résultat fourni : **PASS**.
|
||||
|
||||
```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))
|
||||
```
|
||||
|
||||
Ce résultat constitue le gate d'entrée immédiat de `0.3.5-pre.002`.
|
||||
|
||||
## 16. Implémentation `0.3.5-pre.002`
|
||||
|
||||
`pre.002` ajoute exactement une famille passive provider-neutral à `ksp-interface-lib` :
|
||||
|
||||
```text
|
||||
SlotLifecycleStage
|
||||
Processed
|
||||
FirstShredReceived
|
||||
Completed
|
||||
CreatedBank
|
||||
Dead
|
||||
OptimisticallyConfirmed
|
||||
Rooted
|
||||
|
||||
SlotLifecycleEvent
|
||||
new(slot, stage)
|
||||
slot()
|
||||
stage()
|
||||
```
|
||||
|
||||
Propriétés de représentation matérialisées :
|
||||
|
||||
```text
|
||||
SlotLifecycleStage -> #[non_exhaustive] + Clone + Copy + Debug + Eq + PartialEq
|
||||
SlotLifecycleEvent -> champs privés + Clone + Copy + Debug + Eq + PartialEq
|
||||
slot -> u64 conservé exactement, y compris u64::MAX
|
||||
validation -> aucune admission faillible
|
||||
error code -> aucun nouvel error code
|
||||
serde/codec -> absent
|
||||
runtime/logging -> absent
|
||||
Transport/Store -> aucune dépendance ni conversion
|
||||
```
|
||||
|
||||
Le graphe Cargo reste inchangé pour `ksp-interface-lib` : son manifest n'est pas modifié et sa seule dépendance normale demeure `ksp-core-lib`.
|
||||
|
||||
Canaris ajoutés/ajustés :
|
||||
|
||||
```text
|
||||
unit_tests/slot_lifecycle.rs
|
||||
-> 7 stages distincts
|
||||
-> traits Copy/Eq attendus
|
||||
-> domaine u64 complet
|
||||
-> Debug borné et provider-neutral
|
||||
|
||||
tests/slot_lifecycle_public_api.rs
|
||||
-> construction et getters depuis crate root
|
||||
-> match downstream avec wildcard imposé par #[non_exhaustive]
|
||||
|
||||
tests/release_completeness.rs
|
||||
-> inventaire crate-root mis à jour à 8 reexports
|
||||
-> inventaire de modules mis à jour avec slot_lifecycle uniquement
|
||||
-> absence de serde/tracing/Transport/Store dans la racine Interface
|
||||
```
|
||||
|
||||
`TransactionExecutionEvent` reste **non implémenté** et réservé au gate `pre.003`.
|
||||
|
||||
## 17. Fichiers de `pre.002`
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
Explicitement inchangés :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## 18. Gate opérateur demandé pour `pre.002`
|
||||
|
||||
Après application de l'overlay :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Les validations Cargo de `pre.002` restent **à exécuter par l'opérateur** ; elles ne sont pas déclarées réussies par l'environnement d'assemblage.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user