v0.3.9-pre.007-fix.001

This commit is contained in:
2026-09-05 14:54:01 +02:00
parent 9da372e4a2
commit ecfa123a79
5 changed files with 112 additions and 25 deletions

View File

@@ -1,12 +1,12 @@
# file: Cargo.toml # file: Cargo.toml
# version: 485 # version: 486
[workspace] [workspace]
resolver = "3" resolver = "3"
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api"] members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api"]
[workspace.package] [workspace.package]
version = "0.3.9-pre.7" version = "0.3.9-pre.7.fix.1"
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"

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-onchain-transport-lib/tests/release_completeness.rs // file: crates/ksp-onchain-transport-lib/tests/release_completeness.rs
// version: 41 // version: 42
//! Release-level completeness canaries for staged HTTP and WebSocket Transport coverage. //! Release-level completeness canaries for staged HTTP and WebSocket Transport coverage.
@@ -1000,14 +1000,10 @@ fn release_v0_2_8_pre_010_live_smoke_policy_preserves_secret_and_dependency_owne
#[test] #[test]
fn release_v0_2_9_pre_002_materializes_minimal_yellowstone_engine_without_provider_or_ws_coupling() { fn release_v0_2_9_pre_002_materializes_minimal_yellowstone_engine_without_provider_or_ws_coupling() {
let manifest_directory = std::path::Path::new(env!("CARGO_MANIFEST_DIR")); let manifest_directory = std::path::Path::new(env!("CARGO_MANIFEST_DIR"));
let workspace = manifest_directory.parent().and_then(std::path::Path::parent).expect("Transport test must resolve workspace root");
let root_manifest = std::fs::read_to_string(workspace.join("Cargo.toml")).expect("workspace manifest must be readable");
let transport_manifest = std::fs::read_to_string(manifest_directory.join("Cargo.toml")).expect("Transport manifest must be readable"); let transport_manifest = std::fs::read_to_string(manifest_directory.join("Cargo.toml")).expect("Transport manifest must be readable");
let settings_source = include_str!("../src/grpc_settings.rs"); let settings_source = include_str!("../src/grpc_settings.rs");
let channel_source = include_str!("../src/grpc_channel.rs"); let channel_source = include_str!("../src/grpc_channel.rs");
let crate_root = include_str!("../src/lib.rs"); let crate_root = include_str!("../src/lib.rs");
assert!(root_manifest.contains("tonic = { version = \"^0.14\", default-features = false }"));
assert!(root_manifest.contains("yellowstone-grpc-proto = { version = \"^12.6\", default-features = false }"));
assert!(transport_manifest.contains("tonic = { workspace = true, features = [\"channel\"")); assert!(transport_manifest.contains("tonic = { workspace = true, features = [\"channel\""));
assert!(transport_manifest.contains("yellowstone-grpc-proto.workspace = true")); assert!(transport_manifest.contains("yellowstone-grpc-proto.workspace = true"));
assert!(!transport_manifest.contains("yellowstone-grpc-client")); assert!(!transport_manifest.contains("yellowstone-grpc-client"));
@@ -1028,15 +1024,11 @@ fn release_v0_2_9_pre_002_materializes_minimal_yellowstone_engine_without_provid
#[test] #[test]
fn release_v0_2_9_pre_003_adds_tls_metadata_and_exactly_seven_standard_unary_methods_without_subscribe() { fn release_v0_2_9_pre_003_adds_tls_metadata_and_exactly_seven_standard_unary_methods_without_subscribe() {
let manifest_directory = std::path::Path::new(env!("CARGO_MANIFEST_DIR")); let manifest_directory = std::path::Path::new(env!("CARGO_MANIFEST_DIR"));
let workspace = manifest_directory.parent().and_then(std::path::Path::parent).expect("Transport test must resolve workspace root");
let root_manifest = std::fs::read_to_string(workspace.join("Cargo.toml")).expect("workspace manifest must be readable");
let transport_manifest = std::fs::read_to_string(manifest_directory.join("Cargo.toml")).expect("Transport manifest must be readable"); let transport_manifest = std::fs::read_to_string(manifest_directory.join("Cargo.toml")).expect("Transport manifest must be readable");
let settings_source = include_str!("../src/grpc_settings.rs"); let settings_source = include_str!("../src/grpc_settings.rs");
let channel_source = include_str!("../src/grpc_channel.rs"); let channel_source = include_str!("../src/grpc_channel.rs");
let unary_source = include_str!("../src/grpc_unary.rs"); let unary_source = include_str!("../src/grpc_unary.rs");
let crate_root = include_str!("../src/lib.rs"); let crate_root = include_str!("../src/lib.rs");
assert!(root_manifest.contains("http = { version = \"^1.5\", default-features = false }"));
assert!(root_manifest.contains("tonic-prost = { version = \"^0.14\", default-features = false }"));
assert!(transport_manifest.contains("tonic = { workspace = true, features = [\"channel\", \"tls-aws-lc\", \"tls-webpki-roots\"] }")); assert!(transport_manifest.contains("tonic = { workspace = true, features = [\"channel\", \"tls-aws-lc\", \"tls-webpki-roots\"] }"));
assert!(transport_manifest.contains("tonic = { workspace = true, features = [\"codegen\", \"server\"] }")); assert!(transport_manifest.contains("tonic = { workspace = true, features = [\"codegen\", \"server\"] }"));
assert!(transport_manifest.contains("tonic-prost.workspace = true")); assert!(transport_manifest.contains("tonic-prost.workspace = true"));

View File

@@ -0,0 +1,78 @@
<!-- file: deltas/0.3.9/pre.007-fix.001.md -->
<!-- version: 1 -->
# Delta `0.3.9-pre.007-fix.001`
## 1. Objet
Corriger l'unique échec du premier gate technique `pre.007` : une canary historique Yellowstone de `ksp-onchain-transport-lib` inspectait textuellement des contraintes de versions appartenant au `Cargo.toml` racine. Le correctif remet la responsabilité au bon niveau sans changer le runtime, les APIs Transport ou la contrainte de dépendance Yellowstone.
## 2. Baseline
Entrée : `0.3.9-pre.7`.
Le gate opérateur du 5 septembre 2026 a établi :
```text
cargo fmt --all -- --check PASS
Rust audits PASS
Markdown audit PASS (332 tables / 744 files)
cargo check --workspace PASS
clippy all-targets/all-features -D warnings PASS
cargo test workspace all targets/features FAIL: 1 historical Transport canary
ksp-worker-api PASS (28 tests + doc-tests)
Worker dependency trees PASS / Core-only
cargo tree --duplicates executed
```
L'échec exact était `release_v0_2_9_pre_002_materializes_minimal_yellowstone_engine_without_provider_or_ws_coupling`, sur une assertion littérale du manifeste racine pour `yellowstone-grpc-proto = ^12.6`. Le même gate a ensuite observé une résolution Cargo compatible `yellowstone-grpc-proto 12.7.0`.
## 3. Correction
`crates/ksp-onchain-transport-lib/tests/release_completeness.rs` cesse, dans les deux canaries historiques Yellowstone concernées, de lire le `Cargo.toml` racine et de vérifier textuellement les contraintes `tonic`, `yellowstone-grpc-proto`, `http` et `tonic-prost`.
Cette inspection globale n'appartient pas au Transport : `DEP-CARGO-007` réserve les canaries de politique workspace à la surface de gouvernance/fondation. Les tests Transport conservent les preuves propres à leur domaine :
- dépendances consommées via `.workspace = true` ;
- features runtime/dev attendues ;
- absence de `yellowstone-grpc-client` ;
- absence de dépendance `ksp-config-lib` ;
- présence des surfaces Yellowstone KSP attendues ;
- absence de réexport public de `tonic` ou `yellowstone_grpc_proto`.
La contrainte racine reste :
```text
yellowstone-grpc-proto = { version = "^12.6", default-features = false }
```
Elle accepte déjà les versions `12.x` compatibles selon la sémantique caret Cargo ; aucun pin exact vers `12.6.0` et aucun bump artificiel vers `^12.7` n'est requis par ce défaut.
## 4. Version
Le correctif modifie un test Rust consommé par le build/gate. Conformément à `VER-ID-007` et `VER-ID-010` :
```text
workspace.package.version = 0.3.9-pre.7.fix.1
```
## 5. Fichiers
Modifiés :
```text
Cargo.toml
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md
docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md
```
Ajouté :
```text
deltas/0.3.9/pre.007-fix.001.md
```
## 6. Validations d'assemblage
À exécuter avant livraison : audits Rust/Markdown, contrôle du diff et intégrité de l'archive. Cargo/rustfmt ne sont pas disponibles dans l'environnement d'assemblage ; le gate opérateur doit être rejoué sur `0.3.9-pre.7.fix.1`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md --> <!-- file: docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md -->
<!-- version: 14 --> <!-- version: 15 -->
# Plan v0.3.9 — Worker API générique + audit RAW Transaction # Plan v0.3.9 — Worker API générique + audit RAW Transaction
@@ -620,10 +620,16 @@ La décision de `pre.006-fix.002` est matérialisée immédiatement pendant N1 R
### `pre.007` — gate technique final ### `pre.007` — gate technique final
**Statut : livré ; gate opérateur final en attente.** **Statut : livré ; premier gate opérateur interrompu par une canary historique Transport trop couplée au manifeste workspace.**
Budget cible : **10-15 min**. Fermer les gates workspace/Worker API, les arbres de dépendances et laudit des doublons sans ajouter de nouvelle fonctionnalité. La tranche synchronise uniquement `workspace.package.version = 0.3.9-pre.7` puis exige le gate sur cet état exact. Le clean gate complet de `pre.006-fix.003` est une précondition PASS, pas un substitut à la preuve `pre.007`. Budget cible : **10-15 min**. Fermer les gates workspace/Worker API, les arbres de dépendances et laudit des doublons sans ajouter de nouvelle fonctionnalité. La tranche synchronise uniquement `workspace.package.version = 0.3.9-pre.7` puis exige le gate sur cet état exact. Le clean gate complet de `pre.006-fix.003` est une précondition PASS, pas un substitut à la preuve `pre.007`.
#### `pre.007-fix.001` — ownership des canaries de dépendances Yellowstone
**Statut : livré ; correctif de test, revalidation opérateur requise.**
Le premier gate `pre.007` a échoué sur une canary historique de `ksp-onchain-transport-lib` qui inspectait littéralement des contraintes de versions externes dans le `Cargo.toml` racine, notamment `yellowstone-grpc-proto = ^12.6`. Cette responsabilité est globale au workspace et contrevient à `DEP-CARGO-007`, qui la réserve à la surface de gouvernance/fondation. Le correctif retire des deux canaries Yellowstone historiques les lectures/assertions de versions du manifeste racine et conserve leurs preuves propres au Transport : dépendances workspace locales, features nécessaires, absence de `yellowstone-grpc-client`, firewall Config et non-exposition des crates externes. La contrainte racine `^12.6` reste inchangée ; elle autorise déjà la résolution compatible `12.7.0` observée pendant le gate, sans pin arbitraire. La version Cargo devient `0.3.9-pre.7.fix.1`.
### `pre.008` — réconciliation documentaire finale ### `pre.008` — réconciliation documentaire finale
**Statut : prévu.** **Statut : prévu.**

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md --> <!-- file: docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md -->
<!-- version: 13 --> <!-- version: 14 -->
# Validation v0.3.9 — Worker API + audit RAW Transaction # Validation v0.3.9 — Worker API + audit RAW Transaction
@@ -265,17 +265,28 @@ Cette preuve ferme la précondition fonctionnelle/configuration de `pre.007`. El
### `pre.007` — gate technique final ### `pre.007` — gate technique final
État livré : `workspace.package.version = 0.3.9-pre.7`. Aucun fichier de production, Config, Store, Transport, Worker ou Job n'est modifié par la tranche hors propagation mécanique de la version workspace. Premier gate opérateur exécuté le 5 septembre 2026 sur `workspace.package.version = 0.3.9-pre.7` :
- [ ] `cargo fmt --all -- --check`. - [X] `cargo fmt --all -- --check`.
- [ ] audits Rust/Markdown complets. - [X] audits Rust/Markdown complets : Rust clean, export completeness 0, Markdown clean (332 tables / 744 fichiers).
- [ ] `cargo check --workspace`. - [X] `cargo check --workspace`.
- [ ] `cargo clippy --workspace --all-targets --all-features -- -D warnings`. - [X] `cargo clippy --workspace --all-targets --all-features -- -D warnings`.
- [ ] `cargo test --workspace --all-targets --all-features`. - [ ] `cargo test --workspace --all-targets --all-features` : **FAIL unique observé** dans `ksp-onchain-transport-lib/tests/release_completeness.rs`, canary historique `release_v0_2_9_pre_002_materializes_minimal_yellowstone_engine_without_provider_or_ws_coupling` couplée textuellement à la contrainte workspace `yellowstone-grpc-proto = ^12.6` ; 42 autres tests de ce fichier PASS.
- [ ] `cargo test -p ksp-worker-api`. - [X] `cargo test -p ksp-worker-api` : 28 tests PASS, doc-tests PASS.
- [ ] `cargo tree -p ksp-worker-api --edges normal`. - [X] `cargo tree -p ksp-worker-api --edges normal` : `ksp-worker-api -> ksp-core-lib` uniquement.
- [ ] `cargo tree -p ksp-worker-api -e features`. - [X] `cargo tree -p ksp-worker-api -e features` : feature `default` de Core uniquement.
- [ ] `cargo tree --duplicates`. - [X] `cargo tree --duplicates` exécuté après le test ; la résolution compatible observée a notamment avancé `yellowstone-grpc-proto` de `12.6.0` à `12.7.0`.
Le gate n'est donc pas fermé : l'unique défaut est traité par `pre.007-fix.001`.
#### `pre.007-fix.001` — correction de la canary Yellowstone
- [X] Les deux canaries Yellowstone historiques de `ksp-onchain-transport-lib` ne lisent plus le `Cargo.toml` racine pour imposer des versions de dépendances workspace.
- [X] Les assertions Transport propres à la crate sont conservées : consommation `.workspace = true`, features runtime/dev, absence de `yellowstone-grpc-client`, absence de dépendance Config et non-exposition de `tonic`/`yellowstone_grpc_proto`.
- [X] Le correctif respecte `DEP-CARGO-007` : les politiques générales du workspace restent propriété de la surface fondation/Core.
- [X] La contrainte racine `yellowstone-grpc-proto = { version = "^12.6", default-features = false }` reste inchangée ; aucun pin `12.6.0` n'est introduit.
- [X] `workspace.package.version = 0.3.9-pre.7.fix.1`.
- [ ] Rejouer le gate `pre.007` sur `0.3.9-pre.7.fix.1`.
### `pre.008` — réconciliation documentaire ### `pre.008` — réconciliation documentaire
@@ -310,4 +321,4 @@ Après la synthèse multi-source `pre.006`, l'état courant est :
workspace.package.version = 0.3.9-pre.6 workspace.package.version = 0.3.9-pre.6
``` ```
`pre.002` reste la tranche non-fix `0.3.9-pre.2`. Les correctifs de conformité/compilation portent successivement `0.3.9-pre.2.fix.1` puis `0.3.9-pre.2.fix.2` conformément à `VER-ID-007` et `VER-ID-010`. `pre.003` reprend ensuite la séquence prerelease normale avec `0.3.9-pre.3`; son gate opérateur est PASS et freeze Worker API. `pre.004` poursuit avec `0.3.9-pre.4` sans changement runtime, uniquement l'audit standard Solana/KSP et la création de l'owner durable d'acquisition. `pre.005` passe à `0.3.9-pre.5` et enrichit cet owner avec l'audit Helius/Yellowstone/providers/kbot3 sans modifier le runtime. `pre.006` passe à `0.3.9-pre.6` et ferme la synthèse exhaustive possibilités/support/preuve ainsi que les handoffs `0.3.10`/`0.3.12`. `pre.006-fix.001` réécrit ensuite l'owner d'architecture comme synthèse Store-centrique et corrige la séparation Worker live / Job historique sans modifier Cargo ; `pre.006-fix.002` fixe `mainnet` comme identité canonique sans runtime. `pre.006-fix.003` matérialise finalement cette normalisation dans Config/Store/Transport/tests et porte la version Cargo `0.3.9-pre.6.fix.3`. L'état précédent `0.3.9-pre.1.fix.2` reste documenté dans `pre.001-fix.002`. `pre.002` reste la tranche non-fix `0.3.9-pre.2`. Les correctifs de conformité/compilation portent successivement `0.3.9-pre.2.fix.1` puis `0.3.9-pre.2.fix.2` conformément à `VER-ID-007` et `VER-ID-010`. `pre.003` reprend ensuite la séquence prerelease normale avec `0.3.9-pre.3`; son gate opérateur est PASS et freeze Worker API. `pre.004` poursuit avec `0.3.9-pre.4` sans changement runtime, uniquement l'audit standard Solana/KSP et la création de l'owner durable d'acquisition. `pre.005` passe à `0.3.9-pre.5` et enrichit cet owner avec l'audit Helius/Yellowstone/providers/kbot3 sans modifier le runtime. `pre.006` passe à `0.3.9-pre.6` et ferme la synthèse exhaustive possibilités/support/preuve ainsi que les handoffs `0.3.10`/`0.3.12`. `pre.006-fix.001` réécrit ensuite l'owner d'architecture comme synthèse Store-centrique et corrige la séparation Worker live / Job historique sans modifier Cargo ; `pre.006-fix.002` fixe `mainnet` comme identité canonique sans runtime. `pre.006-fix.003` matérialise finalement cette normalisation dans Config/Store/Transport/tests et porte la version Cargo `0.3.9-pre.6.fix.3`. `pre.007` ouvre ensuite le gate technique en `0.3.9-pre.7`; son premier passage révèle une canary Transport historique trop couplée au manifeste racine. `pre.007-fix.001` corrige cet ownership sans modifier la contrainte Yellowstone et porte Cargo en `0.3.9-pre.7.fix.1`. L'état précédent `0.3.9-pre.1.fix.2` reste documenté dans `pre.001-fix.002`.