From 76f671b8c575dd3287a4afa4f4f2214b15b72995 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Wed, 2 Sep 2026 22:10:06 +0200 Subject: [PATCH] v0.3.7-pre.014 --- Cargo.toml | 4 +- .../unit_tests/fixtures/std.store.json | 6 +- crates/ksp-config-lib/unit_tests/store.rs | 12 ++- deltas/0.3.7/pre.014.md | 86 +++++++++++++++++++ docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md | 16 ++-- docs/validation/024-V0_3_7_BACKFILL_DESK.md | 21 ++++- 6 files changed, 132 insertions(+), 13 deletions(-) create mode 100644 deltas/0.3.7/pre.014.md diff --git a/Cargo.toml b/Cargo.toml index eb64cc3..54a27ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 439 +# version: 440 [workspace] resolver = "3" members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-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"] [workspace.package] -version = "0.3.7-pre.13.fix.1" +version = "0.3.7-pre.14" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-config-lib/unit_tests/fixtures/std.store.json b/crates/ksp-config-lib/unit_tests/fixtures/std.store.json index 904a758..8653c04 100644 --- a/crates/ksp-config-lib/unit_tests/fixtures/std.store.json +++ b/crates/ksp-config-lib/unit_tests/fixtures/std.store.json @@ -16,7 +16,7 @@ "recycle_timeout_ms": 5000 }, "tls": { - "mode": "verify_full" + "mode": "disabled" }, "bootstrap": { "schema_autocreate": true, @@ -41,7 +41,7 @@ "recycle_timeout_ms": 5000 }, "tls": { - "mode": "verify_full" + "mode": "disabled" }, "bootstrap": { "schema_autocreate": true, @@ -66,7 +66,7 @@ "recycle_timeout_ms": 5000 }, "tls": { - "mode": "verify_full" + "mode": "disabled" }, "bootstrap": { "schema_autocreate": true, diff --git a/crates/ksp-config-lib/unit_tests/store.rs b/crates/ksp-config-lib/unit_tests/store.rs index 7ff7610..26e8062 100644 --- a/crates/ksp-config-lib/unit_tests/store.rs +++ b/crates/ksp-config-lib/unit_tests/store.rs @@ -1,5 +1,5 @@ // file: crates/ksp-config-lib/unit_tests/store.rs -// version: 3 +// version: 4 #[test] fn committed_store_profile_maps_exact_runtime_settings_and_secret_fallback() { @@ -30,7 +30,7 @@ fn committed_store_profile_maps_exact_runtime_settings_and_secret_fallback() { assert_eq!(postgres.pool().wait_timeout(), std::time::Duration::from_millis(5_000)); assert_eq!(postgres.pool().create_timeout(), std::time::Duration::from_millis(10_000)); assert_eq!(postgres.pool().recycle_timeout(), std::time::Duration::from_millis(5_000)); - assert_eq!(postgres.tls_mode(), ksp_store_lib::PostgresTlsMode::VerifyFull); + assert_eq!(postgres.tls_mode(), ksp_store_lib::PostgresTlsMode::Disabled); assert!(postgres.bootstrap().auto_migrate()); assert!(postgres.bootstrap().schema_autocreate()); assert!(postgres.bootstrap().schema_autoupdate()); @@ -132,6 +132,14 @@ fn named_store_targets_select_one_network_and_database_without_runtime_multiplex assert_eq!(resolved.profile_id(), target_id); assert_eq!(resolved.selection_source(), crate::ConfigProfileSelectionSource::Explicit); assert_eq!(resolved.settings().network().as_str(), network); + let postgres = match resolved.settings().backend() { + ksp_store_lib::StoreBackendSettings::Postgres(postgres) => std::option::Option::Some(postgres), + _ => std::option::Option::None, + }; + assert!(postgres.is_some(), "committed Store target should remain PostgreSQL: {target_id}"); + if let std::option::Option::Some(postgres) = postgres { + assert_eq!(postgres.tls_mode(), ksp_store_lib::PostgresTlsMode::Disabled); + } assert_eq!( resolved.effective().value().pointer("/postgres/connection_uri").and_then(serde_json::Value::as_str), std::option::Option::Some(expected_uri), diff --git a/deltas/0.3.7/pre.014.md b/deltas/0.3.7/pre.014.md new file mode 100644 index 0000000..bdb3b67 --- /dev/null +++ b/deltas/0.3.7/pre.014.md @@ -0,0 +1,86 @@ + + + +# Delta `0.3.7-pre.014` — réconciliation TLS Store committed + +## 1. Base requise + +```text +0.3.7-pre.013-fix.001 +workspace.package.version = 0.3.7-pre.13.fix.1 +``` + +## 2. Défaillance réconciliée + +Le replay workspace étendu après `pre.013` a révélé une divergence antérieure : le `config/std.store.json` réellement utilisé pour les smokes PostgreSQL locaux est en TLS `disabled`, tandis que la fixture et le test committed `ksp-config-lib` attendaient encore `verify_full`. + +Cette divergence Config/runtime est traitée dans une nouvelle prerelease conformément au lifecycle ; elle n'est pas mélangée au fix de hardening `pre.013-fix.001`. + +## 3. Contrat committed + +Les trois profils Store committed : + +```text +devnet +mainnet +testnet +``` + +utilisent désormais : + +```json +"tls": { + "mode": "disabled" +} +``` + +La fixture Config est synchronisée et les tests vérifient `PostgresTlsMode::Disabled` pour le profil par défaut comme pour les trois cibles nommées. + +Le schema/runtime Store continue à supporter `verify_full` et les autres modes admis ; seule la politique des profils committed change. + +## 4. Lane release + +Cette réconciliation consomme `pre.014`. Le gate technique final est déplacé à `pre.015`, la réconciliation documentaire à `pre.016` et la préparation publication à `pre.017`. + +## 5. Version + +```text +workspace.package.version = 0.3.7-pre.14 +label = 0.3.7-pre.014 +``` + +## 6. Fichiers ajoutés + +```text +deltas/0.3.7/pre.014.md +``` + +## 7. Fichiers modifiés + +```text +Cargo.toml +config/std.store.json +crates/ksp-config-lib/unit_tests/fixtures/std.store.json +crates/ksp-config-lib/unit_tests/store.rs +docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md +docs/validation/024-V0_3_7_BACKFILL_DESK.md +``` + +## 8. Fichiers supprimés + +Aucun. + +## 9. Gate après application + +```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.7 +cargo check --workspace +cargo clippy --workspace --all-targets +cargo test -p ksp-config-lib +cargo test -p ksp-job-backfill-lib +cargo test -p ksp-app-backfill-desk +``` + +Aucun `cargo tree` requis : aucune dépendance ni feature Cargo n'est modifiée. diff --git a/docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md b/docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md index 7231b78..86bc22f 100644 --- a/docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md +++ b/docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md @@ -1,5 +1,5 @@ - + # Plan v0.3.7 — Backfill Desk @@ -298,17 +298,23 @@ La tranche matérialise ce contrat via `ProgramIdAutocompleteOptionDto`, ajouté Aucune nouvelle capacité métier. La tranche ferme la surface V1 par des canaries dédiés : inventaire exact des dépendances KSP et interdictions des backends/clients physiques, inventaire exact des modules de production et suites d’intégration, surface Tauri/contrôles frontend finaux, composition Config exacte sur `devnet`/`mainnet`/`testnet`, scan agrégé de sécurité IPC/frontend et contrôle de la discipline crate-root pour les DTO `pub(crate)` partagés introduits par la Desk. -Les nouvelles suites `dependency_boundary.rs` et `release_completeness.rs` complètent `desktop_contract.rs`, `desktop_security.rs` et `config_composition.rs`. Elles ne modifient ni runtime Job, ni Store, ni Transport, ni DTO/IPC, ni frontend. `pre.014` reste propriétaire du gate technique final workspace/Tauri build. +Les nouvelles suites `dependency_boundary.rs` et `release_completeness.rs` complètent `desktop_contract.rs`, `desktop_security.rs` et `config_composition.rs`. Elles ne modifient ni runtime Job, ni Store, ni Transport, ni DTO/IPC, ni frontend. -### pre.014 — gate technique final +Le replay workspace étendu après `pre.013` a révélé une divergence antérieure du document Store committed : les profils réellement utilisés localement ont été passés à TLS `disabled` pour PostgreSQL local, tandis que la fixture et un test Config restaient sur `verify_full`. Cette divergence Config/runtime doit être réconciliée avant le gate final et consomme donc `pre.014`; le gate technique final est décalé à `pre.015`. + +### pre.014 — réconciliation TLS Store committed + +Synchroniser `config/std.store.json`, sa fixture Config et les assertions committed sur `PostgresTlsMode::Disabled` pour les trois profils `devnet`/`mainnet`/`testnet`. Cette tranche ne change pas les capacités TLS du Store : `verify_full` reste supporté par le schema/runtime ; seule la politique des profils committed est réconciliée avec le PostgreSQL local réellement utilisé pour les smokes Backfill Desk. Aucun runtime Backfill n'est rouvert. + +### pre.015 — gate technique final `cargo fmt`, audits, check/clippy/tests workspace, arbres Cargo utiles, `cargo tauri build`, smoke Mainnet lecture seule opt-in si environnement sûr disponible. -### pre.015 — réconciliation documentaire +### pre.016 — réconciliation documentaire README/USAGE/plan/validation et architecture seulement si la surface finale l'exige. Aucun nouveau runtime. -### pre.016 — préparation publication +### pre.017 — préparation publication Prompt suivant + CHANGELOG + ROADMAP uniquement avec le bump prerelease/delta requis. diff --git a/docs/validation/024-V0_3_7_BACKFILL_DESK.md b/docs/validation/024-V0_3_7_BACKFILL_DESK.md index e2b99fe..a4fffcd 100644 --- a/docs/validation/024-V0_3_7_BACKFILL_DESK.md +++ b/docs/validation/024-V0_3_7_BACKFILL_DESK.md @@ -1,5 +1,5 @@ - + # Validation v0.3.7 — Backfill Desk @@ -595,3 +595,22 @@ Le même replay opérateur a également révélé un échec distinct de `ksp-con - [X] audits statiques Rust/Markdown propres dans l'environnement d'assemblage ; - [ ] replay opérateur `cargo fmt/check/clippy/test` du fix à exécuter avant toute nouvelle prerelease. +## 29. `pre.014` — réconciliation TLS Store committed avant gate final + +Le replay opérateur de `pre.013-fix.001` ferme le hardening Backfill Desk : audits Rust/Markdown, `cargo check --workspace`, Clippy, les 50 tests `ksp-job-backfill-lib` et toutes les suites `ksp-app-backfill-desk`, y compris `dependency_boundary`, `desktop_security` et `release_completeness`, passent. + +L'échec workspace distinct observé pendant le replay étendu vient de `ksp-config-lib` : `config/std.store.json` utilisé par l'opérateur a été passé à TLS `disabled` pour PostgreSQL local, mais la fixture committed et le test `committed_store_profile_maps_exact_runtime_settings_and_secret_fallback` attendaient encore `VerifyFull`. Le smoke Backfill Desk Mainnet confirme également l'ouverture Store avec `tls_mode="disabled"`. Cette divergence Config/runtime, antérieure au hardening, est donc réconciliée dans une nouvelle prerelease et non dans un fix `pre.013`. + +`pre.014` synchronise les trois profils committed `devnet`, `mainnet` et `testnet` sur `tls.mode = "disabled"`, met la fixture Config à l'identique et exige `PostgresTlsMode::Disabled` dans les assertions committed, y compris pour les trois cibles nommées. Le schema et le runtime continuent à supporter les autres modes TLS, notamment `verify_full`; aucune capacité Store n'est supprimée. + +### Gate statique local `pre.014` + +- [X] `config/std.store.json` : trois profils committed en TLS `disabled` ; +- [X] fixture `ksp-config-lib` byte-for-byte cohérente sur la politique TLS ; +- [X] test committed par défaut synchronisé sur `PostgresTlsMode::Disabled` ; +- [X] cibles `devnet`/`mainnet`/`testnet` canariées sur le même mode TLS ; +- [X] aucune modification du schema TLS ni de `ksp-store-lib`/`ksp-store-postgres-lib` ; +- [X] aucun runtime/DTO/IPC/frontend Backfill modifié ; +- [X] aucune dépendance/feature Cargo ajoutée ; +- [X] gate technique final décalé à `pre.015`. +