v0.2.8-pre.007-fix.004
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 230
|
# version: 231
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.2.8-pre.7.fix.3"
|
version = "0.2.8-pre.7.fix.4"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-core-lib/tests/workspace_dependencies.rs
|
// file: crates/ksp-core-lib/tests/workspace_dependencies.rs
|
||||||
// version: 4
|
// version: 5
|
||||||
|
|
||||||
//! Workspace-level dependency policy canaries owned by the foundational KSP test surface.
|
//! Workspace-level dependency policy canaries owned by the foundational KSP test surface.
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ fn transport_manifest_preserves_ksp_dependency_firewall() {
|
|||||||
assert!(manifest.contains("tokio = { workspace = true, features = [\"macros\", \"net\", \"rt\", \"sync\", \"time\"] }"));
|
assert!(manifest.contains("tokio = { workspace = true, features = [\"macros\", \"net\", \"rt\", \"sync\", \"time\"] }"));
|
||||||
assert!(manifest.contains("tokio-tungstenite = { workspace = true, features = [\"connect\", \"rustls-tls-webpki-roots\"] }"));
|
assert!(manifest.contains("tokio-tungstenite = { workspace = true, features = [\"connect\", \"rustls-tls-webpki-roots\"] }"));
|
||||||
assert!(manifest.contains("[dev-dependencies]"));
|
assert!(manifest.contains("[dev-dependencies]"));
|
||||||
assert!(manifest.contains("tokio = { workspace = true, features = [\"net\", \"rt\"] }"));
|
assert!(manifest.contains("tokio = { workspace = true, features = [\"io-util\", \"net\", \"rt\", \"test-util\"] }"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
90
deltas/0.2.8/pre.007-fix.004.md
Normal file
90
deltas/0.2.8/pre.007-fix.004.md
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<!-- file: deltas/0.2.8/pre.007-fix.004.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta `0.2.8-pre.007-fix.004` — alignement du canari dependency-firewall Tokio dev
|
||||||
|
|
||||||
|
## 1. Base et défaut restant
|
||||||
|
|
||||||
|
Base appliquée :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.2.8-pre.7.fix.3
|
||||||
|
```
|
||||||
|
|
||||||
|
Le replay opérateur du `fix.003` ferme entièrement Transport :
|
||||||
|
|
||||||
|
```text
|
||||||
|
331/331 unit
|
||||||
|
40/40 public API
|
||||||
|
29/29 release completeness
|
||||||
|
4/4 doctests
|
||||||
|
fmt/audit/check/Clippy verts
|
||||||
|
```
|
||||||
|
|
||||||
|
`cargo test --workspace` révèle toutefois un unique défaut dans le canari workspace `transport_manifest_preserves_ksp_dependency_firewall` : il attend encore l'ancienne déclaration Tokio dev `features = ["net", "rt"]`, alors que `pre.007` a légitimement ajouté `io-util` et `test-util`.
|
||||||
|
|
||||||
|
## 2. Version technique
|
||||||
|
|
||||||
|
```text
|
||||||
|
workspace.package.version = 0.2.8-pre.7.fix.4
|
||||||
|
commit attendu = v0.2.8-pre.007-fix.004
|
||||||
|
Git tag = aucun tag prerelease
|
||||||
|
```
|
||||||
|
|
||||||
|
Le header root `Cargo.toml` passe en version `231`.
|
||||||
|
|
||||||
|
## 3. Correction
|
||||||
|
|
||||||
|
Le manifest Transport n'est pas modifié. Le canari dans `crates/ksp-core-lib/tests/workspace_dependencies.rs` est mis en cohérence avec la déclaration réellement livrée :
|
||||||
|
|
||||||
|
```text
|
||||||
|
tokio = { workspace = true, features = ["io-util", "net", "rt", "test-util"] }
|
||||||
|
```
|
||||||
|
|
||||||
|
La liste des noms de dev-dependencies reste exactement :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[tokio]
|
||||||
|
```
|
||||||
|
|
||||||
|
Le firewall KSP reste inchangé : aucune dépendance Config/Store/Program/tracing direct n'est autorisée dans Transport.
|
||||||
|
|
||||||
|
## 4. Portée explicitement inchangée
|
||||||
|
|
||||||
|
Ce fix ne modifie pas :
|
||||||
|
|
||||||
|
```text
|
||||||
|
crates/ksp-onchain-transport-lib/Cargo.toml
|
||||||
|
crates/ksp-onchain-transport-lib/src/ws_session.rs
|
||||||
|
crates/ksp-onchain-transport-lib/unit_tests/ws_session.rs
|
||||||
|
heartbeat Helius 60 s
|
||||||
|
WebSocket Ping control frame
|
||||||
|
actor/reconnect/shutdown
|
||||||
|
Config / schema / env
|
||||||
|
transaction lifecycle
|
||||||
|
```
|
||||||
|
|
||||||
|
Aucune dépendance ni feature supplémentaire n'est ajoutée.
|
||||||
|
|
||||||
|
## 5. Fichiers modifiés
|
||||||
|
|
||||||
|
```text
|
||||||
|
Cargo.toml
|
||||||
|
crates/ksp-core-lib/tests/workspace_dependencies.rs
|
||||||
|
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
|
||||||
|
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
|
||||||
|
deltas/0.2.8/pre.007-fix.004.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Gate opérateur
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo fmt --all
|
||||||
|
python3 scripts/audit_rust_workspace_rules.py
|
||||||
|
cargo check --workspace
|
||||||
|
cargo clippy --workspace --all-targets
|
||||||
|
cargo test -p ksp-onchain-transport-lib
|
||||||
|
cargo test --workspace
|
||||||
|
```
|
||||||
|
|
||||||
|
Critère de fermeture : zéro warning, audit clean, Transport **331 unit / 40 API / 29 completeness / 4 doctests** et workspace entièrement vert.
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<!-- file: docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md -->
|
<!-- file: docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md -->
|
||||||
<!-- version: 20 -->
|
<!-- version: 21 -->
|
||||||
|
|
||||||
# Plan `0.2.8` — Helius LaserStream WebSocket
|
# Plan `0.2.8` — Helius LaserStream WebSocket
|
||||||
|
|
||||||
> **Statut : `0.2.8-pre.007-fix.002` passe fmt/audit/check/Clippy mais laisse le même unique canari périodique à 330/331. Le diagnostic est affiné : `yield_now()` ne garantit pas la progression du driver I/O OS sous horloge Tokio pausée. `0.2.8-pre.007-fix.003` conserve le runtime heartbeat byte-identical et borne la propagation TCP en temps réel après franchissement du deadline virtuel.**
|
> **Statut : `0.2.8-pre.007-fix.003` ferme enfin le heartbeat Transport à 331/331, avec fmt/audit/check/Clippy verts. Le workspace révèle toutefois un canari de dépendances devenu obsolète : `ksp-core-lib/tests/workspace_dependencies.rs` attend encore l’ancienne déclaration Tokio dev `net, rt` alors que `pre.007` a ajouté `io-util, test-util` pour les tests d’horloge. `0.2.8-pre.007-fix.004` aligne ce canari workspace sans toucher au runtime heartbeat.**
|
||||||
|
|
||||||
## 1. Objet, base et état courant
|
## 1. Objet, base et état courant
|
||||||
|
|
||||||
@@ -37,10 +37,11 @@ pre.006 transactionNotification + lifecycle actor validé
|
|||||||
pre.007 heartbeat Helius WebSocket / idle — checkpoint gate à corriger
|
pre.007 heartbeat Helius WebSocket / idle — checkpoint gate à corriger
|
||||||
pre.007-fix.001 lint + close canary corrigés ; un canari périodique reste non déterministe
|
pre.007-fix.001 lint + close canary corrigés ; un canari périodique reste non déterministe
|
||||||
pre.007-fix.002 observation yield-only insuffisante — checkpoint 330/331
|
pre.007-fix.002 observation yield-only insuffisante — checkpoint 330/331
|
||||||
pre.007-fix.003 progression I/O réelle bornée après deadline virtuel — préparé
|
pre.007-fix.003 heartbeat Transport fermé ; workspace bloqué par canari Tokio dev obsolète
|
||||||
|
pre.007-fix.004 alignement canari dependency-firewall Tokio dev — préparé
|
||||||
|
|
||||||
workspace.package.version courant = 0.2.8-pre.7.fix.3
|
workspace.package.version courant = 0.2.8-pre.7.fix.4
|
||||||
commit attendu = v0.2.8-pre.007-fix.003
|
commit attendu = v0.2.8-pre.007-fix.004
|
||||||
aucun tag prerelease
|
aucun tag prerelease
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -70,9 +71,11 @@ pre.005 DONE — transactionSubscribe request typed + filters/options/tokenAcco
|
|||||||
fix.002 DONE — helpers wire non consommés en production bornés à #[cfg(test)] ; zéro warning dead_code
|
fix.002 DONE — helpers wire non consommés en production bornés à #[cfg(test)] ; zéro warning dead_code
|
||||||
pre.006 DONE — transactionNotification + handle live + actor registry/reconnect/resubscribe/unsubscribe races
|
pre.006 DONE — transactionNotification + handle live + actor registry/reconnect/resubscribe/unsubscribe races
|
||||||
+ late notifications + backpressure ciblée, sans second actor/socket
|
+ late notifications + backpressure ciblée, sans second actor/socket
|
||||||
pre.007 CHECKPOINT — heartbeat Helius WebSocket/idle + timers + interaction reconnect/control frames/shutdown
|
pre.007 FIX REQUIRED — heartbeat Helius WebSocket/idle + timers + interaction reconnect/control frames/shutdown
|
||||||
fix.001 CHECKPOINT — lint et close canary corrigés ; 330/331 unit, seul le canari périodique reste en course scheduler
|
fix.001 CHECKPOINT — lint et close canary corrigés ; 330/331 unit
|
||||||
fix.002 PREPARED — observation positive du Ping bornée en scheduler steps, sans nouvelle avance du temps virtuel
|
fix.002 CHECKPOINT — observation yield-only insuffisante ; 330/331 unit
|
||||||
|
fix.003 CHECKPOINT — heartbeat Transport fermé à 331/331 ; workspace échoue sur canari Tokio dev obsolète
|
||||||
|
fix.004 PREPARED — alignement exact du dependency-firewall sur `io-util, net, rt, test-util`
|
||||||
pre.008 provider adversarial lifecycle + capability guards + payload/backpressure + security/redaction
|
pre.008 provider adversarial lifecycle + capability guards + payload/backpressure + security/redaction
|
||||||
pre.009 compliance Helius WebSocket + non-régressions Solana standard 18/18 + HTTP 52/14
|
pre.009 compliance Helius WebSocket + non-régressions Solana standard 18/18 + HTTP 52/14
|
||||||
+ Config/API/dependency-firewall canaries
|
+ Config/API/dependency-firewall canaries
|
||||||
@@ -1276,3 +1279,38 @@ Cette fenêtre réelle ne peut pas masquer un heartbeat manquant : elle ne dure
|
|||||||
|
|
||||||
Le runtime, Config, `WsSessionSettings`, le lifecycle transaction et la cadence 60 s restent inchangés. `pre.008` reste bloqué jusqu'au replay entièrement vert de `pre.007-fix.003`.
|
Le runtime, Config, `WsSessionSettings`, le lifecycle transaction et la cadence 60 s restent inchangés. `pre.008` reste bloqué jusqu'au replay entièrement vert de `pre.007-fix.003`.
|
||||||
|
|
||||||
|
## 19. Replay `pre.007-fix.003` et préparation `pre.007-fix.004`
|
||||||
|
|
||||||
|
Checkpoint opérateur `0.2.8-pre.7.fix.3` reçu le 2026-08-23 :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[x] cargo fmt --all
|
||||||
|
[x] python3 scripts/audit_rust_workspace_rules.py = clean / 0 candidate
|
||||||
|
[x] cargo check --workspace = vert, sans warning
|
||||||
|
[x] cargo clippy --workspace --all-targets = vert, sans warning
|
||||||
|
[x] cargo test -p ksp-onchain-transport-lib = 331/331 unit + 40 API + 29 completeness + 4 doctests
|
||||||
|
[!] cargo test --workspace = échec unique dans ksp-core-lib/tests/workspace_dependencies.rs
|
||||||
|
```
|
||||||
|
|
||||||
|
Le heartbeat `pre.007` est donc fonctionnellement fermé côté Transport. L'échec workspace est indépendant du runtime :
|
||||||
|
|
||||||
|
```text
|
||||||
|
transport_manifest_preserves_ksp_dependency_firewall
|
||||||
|
attendu historique : tokio dev features = ["net", "rt"]
|
||||||
|
manifest courant : tokio dev features = ["io-util", "net", "rt", "test-util"]
|
||||||
|
```
|
||||||
|
|
||||||
|
`pre.007` a légitimement ajouté `test-util` pour `tokio::time::pause/advance` et `io-util` pour les fixtures WebSocket de test. Le canari workspace, resté textuellement figé sur l'ancien ensemble, n'a pas été mis à jour dans le delta d'origine.
|
||||||
|
|
||||||
|
`fix.004` corrige uniquement cette incohérence de validation :
|
||||||
|
|
||||||
|
```text
|
||||||
|
- aucune modification de crates/ksp-onchain-transport-lib/Cargo.toml ;
|
||||||
|
- aucune modification de src/ws_session.rs ni des canaris heartbeat ;
|
||||||
|
- mise à jour du canari dependency-firewall vers l'ensemble dev exact courant
|
||||||
|
["io-util", "net", "rt", "test-util"] ;
|
||||||
|
- aucune nouvelle dépendance ni feature.
|
||||||
|
```
|
||||||
|
|
||||||
|
`pre.008` reste bloqué jusqu'au replay workspace vert de `pre.007-fix.004`.
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<!-- file: docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md -->
|
<!-- file: docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md -->
|
||||||
<!-- version: 19 -->
|
<!-- version: 20 -->
|
||||||
|
|
||||||
# Validation `0.2.8` — Helius LaserStream WebSocket
|
# Validation `0.2.8` — Helius LaserStream WebSocket
|
||||||
|
|
||||||
> **Statut : `pre.007-fix.002` passe fmt/audit/check/Clippy mais reste à 330/331 sur le même canari périodique. `pre.007-fix.003` corrige le harness TCP/horloge pausée par une progression I/O réelle bornée après deadline virtuel, sans changement runtime heartbeat.**
|
> **Statut : `pre.007-fix.003` est vert côté Transport à 331/331 + 40 API + 29 completeness + 4 doctests, mais `cargo test --workspace` échoue sur le canari `transport_manifest_preserves_ksp_dependency_firewall`, resté figé sur les anciennes features Tokio dev. `pre.007-fix.004` met ce canari en cohérence avec le manifest déjà livré, sans changement runtime.**
|
||||||
|
|
||||||
## 1. Références
|
## 1. Références
|
||||||
|
|
||||||
@@ -28,6 +28,7 @@ pre.007 heartbeat Helius deltas/0.2.8/pre.007.md
|
|||||||
pre.007 test determinism fix deltas/0.2.8/pre.007-fix.001.md
|
pre.007 test determinism fix deltas/0.2.8/pre.007-fix.001.md
|
||||||
pre.007 scheduler observation fix deltas/0.2.8/pre.007-fix.002.md
|
pre.007 scheduler observation fix deltas/0.2.8/pre.007-fix.002.md
|
||||||
pre.007 paused-I/O observation fix deltas/0.2.8/pre.007-fix.003.md
|
pre.007 paused-I/O observation fix deltas/0.2.8/pre.007-fix.003.md
|
||||||
|
pre.007 dependency-firewall fix deltas/0.2.8/pre.007-fix.004.md
|
||||||
validation standard WS docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
|
validation standard WS docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
|
||||||
HTTP compliance docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
|
HTTP compliance docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
|
||||||
KSP-TRANSPORT-007 docs/validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md
|
KSP-TRANSPORT-007 docs/validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md
|
||||||
@@ -788,3 +789,52 @@ Critères `pre.007-fix.003` :
|
|||||||
|
|
||||||
Verdict courant : **`pre.007` FIX REQUIRED ; `fix.001` CHECKPOINT ; `fix.002` CHECKPOINT ; `fix.003` PREPARED ; `pre.008` bloqué.**
|
Verdict courant : **`pre.007` FIX REQUIRED ; `fix.001` CHECKPOINT ; `fix.002` CHECKPOINT ; `fix.003` PREPARED ; `pre.008` bloqué.**
|
||||||
|
|
||||||
|
## 21. Replay `pre.007-fix.003` et gate `pre.007-fix.004`
|
||||||
|
|
||||||
|
Résultat opérateur `0.2.8-pre.7.fix.3` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[x] cargo fmt --all
|
||||||
|
[x] audit Rust workspace = clean / 0 candidate
|
||||||
|
[x] cargo check --workspace = vert, sans warning
|
||||||
|
[x] cargo clippy --workspace --all-targets = vert, sans warning
|
||||||
|
[x] Transport unit = 331/331
|
||||||
|
[x] Transport public API = 40/40
|
||||||
|
[x] release completeness = 29/29
|
||||||
|
[x] Transport doctests = 4/4
|
||||||
|
[!] cargo test --workspace = 1 échec dependency-firewall dans ksp-core-lib
|
||||||
|
```
|
||||||
|
|
||||||
|
Échec exact :
|
||||||
|
|
||||||
|
```text
|
||||||
|
transport_manifest_preserves_ksp_dependency_firewall
|
||||||
|
assertion attend encore :
|
||||||
|
tokio = { workspace = true, features = ["net", "rt"] }
|
||||||
|
|
||||||
|
manifest Transport depuis pre.007 :
|
||||||
|
tokio = { workspace = true, features = ["io-util", "net", "rt", "test-util"] }
|
||||||
|
```
|
||||||
|
|
||||||
|
Le manifest courant est intentionnel : `test-util` permet les canaris d'horloge Tokio et `io-util` sert les fixtures I/O de test. Il n'y a ni nouvelle dépendance de production ni rupture du firewall KSP. Le défaut est donc le canari textuel non synchronisé lors de `pre.007`.
|
||||||
|
|
||||||
|
Critères `pre.007-fix.004` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[ ] version workspace = 0.2.8-pre.7.fix.4
|
||||||
|
[ ] crates/ksp-onchain-transport-lib/Cargo.toml inchangé
|
||||||
|
[ ] src/ws_session.rs inchangé
|
||||||
|
[ ] unit_tests/ws_session.rs inchangé
|
||||||
|
[ ] canari dependency-firewall attend exactement io-util/net/rt/test-util
|
||||||
|
[ ] liste des noms de dev-dependencies reste exactement [tokio]
|
||||||
|
[ ] aucune nouvelle dépendance ou feature
|
||||||
|
[ ] cargo fmt --all
|
||||||
|
[ ] audit Rust = clean
|
||||||
|
[ ] cargo check = sans warning
|
||||||
|
[ ] cargo clippy = sans warning
|
||||||
|
[ ] Transport = 331 unit + 40 public API + 29 completeness + 4 doctests
|
||||||
|
[ ] cargo test --workspace = vert
|
||||||
|
```
|
||||||
|
|
||||||
|
Verdict courant : **`pre.007` FIX REQUIRED ; `fix.001` CHECKPOINT ; `fix.002` CHECKPOINT ; `fix.003` CHECKPOINT Transport vert ; `fix.004` PREPARED ; `pre.008` bloqué.**
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user