v0.3.7-pre.014

This commit is contained in:
2026-09-02 22:10:06 +02:00
parent 0847edda4c
commit 76f671b8c5
6 changed files with 132 additions and 13 deletions

View File

@@ -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"

View File

@@ -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,

View File

@@ -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),

86
deltas/0.3.7/pre.014.md Normal file
View File

@@ -0,0 +1,86 @@
<!-- file: deltas/0.3.7/pre.014.md -->
<!-- version: 1 -->
# 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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md -->
<!-- version: 13 -->
<!-- version: 14 -->
# 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 dinté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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/024-V0_3_7_BACKFILL_DESK.md -->
<!-- version: 23 -->
<!-- version: 24 -->
# 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`.