From 74890a62687c48c9a79e9be068fc4091d13af680 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Thu, 3 Sep 2026 11:31:41 +0200 Subject: [PATCH] v0.3.8-pre.002-fix.001 --- Cargo.toml | 4 +- .../tests/dependency_boundary.rs | 4 +- .../tests/desktop_contract.rs | 18 +- .../tests/desktop_security.rs | 6 +- crates/ksp-app-store-desk/tests/public_api.rs | 4 +- crates/ksp-app-store-desk/vite.config.ts | 23 ++- deltas/0.3.8/pre.002-fix.001.md | 169 ++++++++++++++++++ docs/validation/025-V0_3_8_STORE_DESK.md | 37 +++- 8 files changed, 243 insertions(+), 22 deletions(-) create mode 100644 deltas/0.3.8/pre.002-fix.001.md diff --git a/Cargo.toml b/Cargo.toml index d9c87d0..3881e6c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 446 +# version: 447 [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"] [workspace.package] -version = "0.3.8-pre.2" +version = "0.3.8-pre.2.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-app-store-desk/tests/dependency_boundary.rs b/crates/ksp-app-store-desk/tests/dependency_boundary.rs index 2533452..0b9e3ab 100644 --- a/crates/ksp-app-store-desk/tests/dependency_boundary.rs +++ b/crates/ksp-app-store-desk/tests/dependency_boundary.rs @@ -1,5 +1,7 @@ // file: crates/ksp-app-store-desk/tests/dependency_boundary.rs -// version: 1 +// version: 2 + +//! Dependency-boundary tests for the Store Desk scaffold. #[test] fn pre_002_manifest_keeps_store_and_transport_runtime_dependencies_out_of_scaffold() { diff --git a/crates/ksp-app-store-desk/tests/desktop_contract.rs b/crates/ksp-app-store-desk/tests/desktop_contract.rs index 68a9589..9864d31 100644 --- a/crates/ksp-app-store-desk/tests/desktop_contract.rs +++ b/crates/ksp-app-store-desk/tests/desktop_contract.rs @@ -1,8 +1,10 @@ // file: crates/ksp-app-store-desk/tests/desktop_contract.rs -// version: 1 +// version: 2 + +//! Desktop template and frontend contract tests for the Store Desk scaffold. fn parse_json(source: &str) -> serde_json::Result { - serde_json::from_str::(source) + return serde_json::from_str::(source); } #[test] @@ -23,6 +25,18 @@ fn pre_002_tauri_package_and_ports_match_store_desk_identity() { assert!(vite.contains("port: 1439")); } +#[test] +fn pre_002_fix_001_vite_config_matches_ksp_desk_template_except_identity_ports_and_header() { + let store = include_str!("../vite.config.ts") + .replace("crates/ksp-app-store-desk/vite.config.ts", "crates/ksp-app-backfill-desk/vite.config.ts") + .replace("// version: 2", "// version: 1") + .replace("ksp-app-store-desk", "ksp-app-backfill-desk") + .replace("1438", "1436") + .replace("1439", "1437"); + let reference = include_str!("../../ksp-app-backfill-desk/vite.config.ts"); + assert_eq!(store, reference); +} + #[test] fn pre_002_frontend_dependency_baseline_is_ksp_owned_and_select_free() { let parsed = parse_json(include_str!("../package.json")); diff --git a/crates/ksp-app-store-desk/tests/desktop_security.rs b/crates/ksp-app-store-desk/tests/desktop_security.rs index a54d3ca..2851306 100644 --- a/crates/ksp-app-store-desk/tests/desktop_security.rs +++ b/crates/ksp-app-store-desk/tests/desktop_security.rs @@ -1,8 +1,10 @@ // file: crates/ksp-app-store-desk/tests/desktop_security.rs -// version: 1 +// version: 2 + +//! Security boundary tests for the Store Desk scaffold. fn parse_json(source: &str) -> serde_json::Result { - serde_json::from_str::(source) + return serde_json::from_str::(source); } #[test] diff --git a/crates/ksp-app-store-desk/tests/public_api.rs b/crates/ksp-app-store-desk/tests/public_api.rs index 2c9ee55..c54a79d 100644 --- a/crates/ksp-app-store-desk/tests/public_api.rs +++ b/crates/ksp-app-store-desk/tests/public_api.rs @@ -1,5 +1,7 @@ // file: crates/ksp-app-store-desk/tests/public_api.rs -// version: 1 +// version: 2 + +//! Public API boundary test for the Store Desk scaffold. #[test] fn pre_002_public_surface_exposes_only_application_run_entry_point() { diff --git a/crates/ksp-app-store-desk/vite.config.ts b/crates/ksp-app-store-desk/vite.config.ts index 6d0b3f9..6fe461c 100644 --- a/crates/ksp-app-store-desk/vite.config.ts +++ b/crates/ksp-app-store-desk/vite.config.ts @@ -1,5 +1,5 @@ // file: crates/ksp-app-store-desk/vite.config.ts -// version: 1 +// version: 2 import { NodePackageImporter } from "sass-embedded"; import { fileURLToPath } from "node:url"; @@ -41,7 +41,7 @@ export default defineConfig({ if (["png", "jpg", "jpeg", "gif", "svg", "webp", "ico"].includes(extension)) { return "imgs/[name][extname]"; } - return "otherassets/[name][hash][extname]"; + return "otherassets/[name][extname]"; }, }, }, @@ -49,6 +49,9 @@ export default defineConfig({ css: { preprocessorOptions: { scss: { + quietDeps: true, + silenceDeprecations: ["import", "color-functions", "global-builtin"], + verbose: false, importers: [new NodePackageImporter()], }, }, @@ -57,17 +60,11 @@ export default defineConfig({ port: 1438, strictPort: true, host: devHost || false, - hmr: devHost - ? { - protocol: "ws", - host: devHost, - port: 1439, - } - : { - protocol: "ws", - host: "localhost", - port: 1439, - }, + ws: { + protocol: "ws", + host: devHost || "localhost", + port: 1439, + }, watch: { ignored: ["**/src/**"], }, diff --git a/deltas/0.3.8/pre.002-fix.001.md b/deltas/0.3.8/pre.002-fix.001.md new file mode 100644 index 0000000..4474b61 --- /dev/null +++ b/deltas/0.3.8/pre.002-fix.001.md @@ -0,0 +1,169 @@ + + + +# Delta `0.3.8-pre.002-fix.001` — conformité Vite Desk et Clippy du scaffold Store Desk + +## Base requise + +Base directe attendue : + +```text +0.3.8-pre.002 +workspace.package.version = 0.3.8-pre.2 +``` + +La livraison est : + +```text +0.3.8-pre.002-fix.001 +workspace.package.version = 0.3.8-pre.2.fix.1 +commit = v0.3.8-pre.002-fix.001 +tag = aucun +``` + +Le fix modifie du code/configuration consommé par le build ; la version Cargo est donc synchronisée conformément à `VER-ID-007` et `VER-ID-010`. + +## Objectif + +Corriger deux défauts réels du scaffold `pre.002` sans ouvrir le périmètre de `pre.003` : + +1. `crates/ksp-app-store-desk/vite.config.ts` n’était pas strictement conforme au gabarit des autres `ksp-app-*-desk` ; +2. le gate opérateur a révélé deux erreurs `clippy::implicit-return` dans les tests d’intégration du nouveau Desk. + +Aucune capability Store, requête métier, pagination server-side ou dépendance backend n’est introduite. + +## Diagnostic Vite + +La comparaison avec `ksp-app-config-desk`, `ksp-app-wallet-desk`, `ksp-app-solprices-desk` et `ksp-app-backfill-desk` a identifié trois divergences non justifiées : + +```text +server.hmr au lieu de server.ws +options SCSS quietDeps/silenceDeprecations/verbose absentes +otherassets/[name][hash][extname] au lieu de otherassets/[name][extname] +``` + +Le fichier Store Desk est réaligné sur le template Backfill Desk. Après normalisation : + +```text +nom fichier/app Store -> Backfill +ports 1438/1439 -> 1436/1437 +header version 2 -> 1 +``` + +les deux fichiers doivent être byte-for-byte identiques. + +Un test d’intégration matérialise désormais ce canari. + +## Correction Clippy et warnings de tests + +Le retour opérateur a montré : + +```text +cargo check --workspace: PASS +cargo clippy --workspace --all-targets: FAIL +``` + +avec exactement deux erreurs `clippy::implicit-return` dans les helpers `parse_json` de : + +```text +crates/ksp-app-store-desk/tests/desktop_contract.rs +crates/ksp-app-store-desk/tests/desktop_security.rs +``` + +Les retours sont rendus explicites avec `return ...;`. + +Les quatre crates de tests d’intégration reçoivent aussi une documentation crate-level afin de supprimer les warnings `missing_docs` observés : + +```text +dependency_boundary.rs +desktop_contract.rs +desktop_security.rs +public_api.rs +``` + +## Invariants préservés + +```text +DataTables reste l’unique owner visuel de la pagination +aucun pager Store parallèle +serverSide Store réel reste différé +aucun Store ouvert par le scaffold +aucun SQL dans l’application +aucune dépendance ksp-store-* ajoutée +aucune dépendance Transport/Job ajoutée +ports Store Desk = 1438/1439 +``` + +Le fix ne change pas le sizing ni le périmètre fonctionnel de `pre.002`. + +## Fichiers ajoutés + +```text +deltas/0.3.8/pre.002-fix.001.md +``` + +## Fichiers modifiés + +```text +Cargo.toml +crates/ksp-app-store-desk/vite.config.ts +crates/ksp-app-store-desk/tests/dependency_boundary.rs +crates/ksp-app-store-desk/tests/desktop_contract.rs +crates/ksp-app-store-desk/tests/desktop_security.rs +crates/ksp-app-store-desk/tests/public_api.rs +docs/validation/025-V0_3_8_STORE_DESK.md +``` + +## Fichiers supprimés + +```text +aucun +``` + +## Validations exécutées dans l’environnement d’assemblage + +```text +python3 scripts/audit_rust_workspace_rules.py +-> General Rust rule audit: clean +-> Rust export completeness audit: 0 candidate(s) +-> KSP workspace Rust rule audit: clean + +python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas +-> Markdown table audit: clean (314 table(s), 693 file(s)) +``` + +Contrôles complémentaires : + +```text +Vite template normalization equality against the common Desk pattern: PASS +Store Desk test lint regression audit: PASS +fix scope audit: 1 ajout, 7 modifications, 0 suppression +archive integrity: unzip -t +``` + +## Validations non exécutées dans l’environnement d’assemblage + +`cargo` n’est pas disponible dans cet environnement. Le gate opérateur requis après application est : + +```bash +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 +cargo check --workspace +cargo clippy --workspace --all-targets +cargo test -p ksp-app-store-desk +cargo tree -p ksp-app-store-desk --edges normal +cargo tree -p ksp-app-store-desk -e features +``` + +`pre.003` ne doit commencer qu’après fermeture de ce gate. + +## Décisions prises + +- `vite.config.ts` du Store Desk suit strictement le template KSP commun ; seules l’identité, les ports et le header de version peuvent différer. +- le canari d’égalité Vite devient une preuve durable du scaffold ; +- les erreurs/warnings révélés par le gate opérateur appartiennent au fix de `pre.002` et sont corrigés avant toute progression fonctionnelle. + +## Questions ouvertes + +Aucune pour ce correctif. diff --git a/docs/validation/025-V0_3_8_STORE_DESK.md b/docs/validation/025-V0_3_8_STORE_DESK.md index 13cc43e..0d5bd55 100644 --- a/docs/validation/025-V0_3_8_STORE_DESK.md +++ b/docs/validation/025-V0_3_8_STORE_DESK.md @@ -1,5 +1,5 @@ - + # Validation v0.3.8 — Store Desk V1 RAW @@ -185,3 +185,38 @@ Cette preuve opérateur ferme le gate technique de la base `0.3.8-pre.1` avant m - [ ] `cargo tree -p ksp-app-store-desk -e features` : à exécuter par l’opérateur. La case `pre.002` de la section « Gates futures » reste ouverte jusqu’au retour de ces gates Cargo opérateur. + +## 13. Retour opérateur `pre.002` et ouverture de `pre.002-fix.001` + +Après application de `pre.002`, l’opérateur a exécuté le gate demandé. Les résultats fournis établissent : + +```text +General Rust rule audit: clean +Rust export completeness audit: 0 candidate(s) +KSP workspace Rust rule audit: clean +Markdown table audit: clean (314 table(s), 692 file(s)) +cargo check --workspace: PASS +cargo test -p ksp-app-store-desk: PASS (12 unit + 2 dependency boundary + 5 desktop contract + 3 desktop security + 1 public API) +cargo tree -p ksp-app-store-desk --edges normal: produit +cargo tree -p ksp-app-store-desk -e features: produit +``` + +`cargo clippy --workspace --all-targets` n’est pas vert : deux erreurs `clippy::implicit-return` sont présentes dans les helpers `parse_json` des tests `desktop_contract.rs` et `desktop_security.rs`. Quatre crates de tests signalent aussi `missing_docs` comme warnings. + +Le même retour opérateur signale une divergence de `vite.config.ts` par rapport au gabarit `ksp-app-*-desk`. L’audit comparatif confirme trois écarts non justifiés : + +```text +server.hmr au lieu de server.ws +options SCSS quietDeps/silenceDeprecations/verbose absentes +otherassets/[name][hash][extname] au lieu de otherassets/[name][extname] +``` + +Le correctif `pre.002-fix.001` reste strictement dans le couloir scaffold de `pre.002` : + +- réalignement de `vite.config.ts` sur le gabarit Desk KSP, avec seules différences d’identité et de ports 1438/1439 ; +- ajout d’un canari d’égalité du template Vite après normalisation identité/ports/header ; +- correction explicite des deux retours Clippy dans les helpers de tests ; +- ajout des crate-level docs manquantes aux quatre crates d’intégration afin de supprimer les warnings observés ; +- aucune capability Store, aucun SQL, aucun changement d’architecture pagination. + +La case `pre.002` reste ouverte jusqu’au gate opérateur du fix.