diff --git a/Cargo.toml b/Cargo.toml index 908280b..225819e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 485 +# version: 486 [workspace] 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"] [workspace.package] -version = "0.3.9-pre.7" +version = "0.3.9-pre.7.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-onchain-transport-lib/tests/release_completeness.rs b/crates/ksp-onchain-transport-lib/tests/release_completeness.rs index 8b4a379..18e53c6 100644 --- a/crates/ksp-onchain-transport-lib/tests/release_completeness.rs +++ b/crates/ksp-onchain-transport-lib/tests/release_completeness.rs @@ -1,5 +1,5 @@ // 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. @@ -1000,14 +1000,10 @@ fn release_v0_2_8_pre_010_live_smoke_policy_preserves_secret_and_dependency_owne #[test] 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 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 settings_source = include_str!("../src/grpc_settings.rs"); let channel_source = include_str!("../src/grpc_channel.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("yellowstone-grpc-proto.workspace = true")); 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] 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 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 settings_source = include_str!("../src/grpc_settings.rs"); let channel_source = include_str!("../src/grpc_channel.rs"); let unary_source = include_str!("../src/grpc_unary.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 = [\"codegen\", \"server\"] }")); assert!(transport_manifest.contains("tonic-prost.workspace = true")); diff --git a/deltas/0.3.9/pre.007-fix.001.md b/deltas/0.3.9/pre.007-fix.001.md new file mode 100644 index 0000000..e42f63c --- /dev/null +++ b/deltas/0.3.9/pre.007-fix.001.md @@ -0,0 +1,78 @@ + + + +# 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`. diff --git a/docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md b/docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md index a8e4125..e818ab4 100644 --- a/docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md +++ b/docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md @@ -1,5 +1,5 @@ - + # 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 -**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 l’audit 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 **Statut : prévu.** diff --git a/docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md b/docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md index fdf5526..d6865bf 100644 --- a/docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md +++ b/docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md @@ -1,5 +1,5 @@ - + # 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 -É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`. -- [ ] audits Rust/Markdown complets. -- [ ] `cargo check --workspace`. -- [ ] `cargo clippy --workspace --all-targets --all-features -- -D warnings`. -- [ ] `cargo test --workspace --all-targets --all-features`. -- [ ] `cargo test -p ksp-worker-api`. -- [ ] `cargo tree -p ksp-worker-api --edges normal`. -- [ ] `cargo tree -p ksp-worker-api -e features`. -- [ ] `cargo tree --duplicates`. +- [X] `cargo fmt --all -- --check`. +- [X] audits Rust/Markdown complets : Rust clean, export completeness 0, Markdown clean (332 tables / 744 fichiers). +- [X] `cargo check --workspace`. +- [X] `cargo clippy --workspace --all-targets --all-features -- -D warnings`. +- [ ] `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. +- [X] `cargo test -p ksp-worker-api` : 28 tests PASS, doc-tests PASS. +- [X] `cargo tree -p ksp-worker-api --edges normal` : `ksp-worker-api -> ksp-core-lib` uniquement. +- [X] `cargo tree -p ksp-worker-api -e features` : feature `default` de Core uniquement. +- [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 @@ -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 ``` -`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`.