v0.3.8-pre.002-fix.001

This commit is contained in:
2026-09-03 11:31:41 +02:00
parent 6a1892792c
commit 74890a6268
8 changed files with 243 additions and 22 deletions

View File

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

View File

@@ -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() {

View File

@@ -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::Value> {
serde_json::from_str::<serde_json::Value>(source)
return serde_json::from_str::<serde_json::Value>(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"));

View File

@@ -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::Value> {
serde_json::from_str::<serde_json::Value>(source)
return serde_json::from_str::<serde_json::Value>(source);
}
#[test]

View File

@@ -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() {

View File

@@ -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/**"],
},

View File

@@ -0,0 +1,169 @@
<!-- file: deltas/0.3.8/pre.002-fix.001.md -->
<!-- version: 1 -->
# 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 dintégration du nouveau Desk.
Aucune capability Store, requête métier, pagination server-side ou dépendance backend nest 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 dinté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 dinté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 lunique 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 lapplication
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 lenvironnement dassemblage
```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 lenvironnement dassemblage
`cargo` nest 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 quaprès fermeture de ce gate.
## Décisions prises
- `vite.config.ts` du Store Desk suit strictement le template KSP commun ; seules lidentité, 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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# 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 lopérateur.
La case `pre.002` de la section « Gates futures » reste ouverte jusquau 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`, lopé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` nest 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`. Laudit 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 didentité et de ports 1438/1439 ;
- ajout dun 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 dintégration afin de supprimer les warnings observés ;
- aucune capability Store, aucun SQL, aucun changement darchitecture pagination.
La case `pre.002` reste ouverte jusquau gate opérateur du fix.