v0.3.8-pre.002-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 446
|
# version: 447
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
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"]
|
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]
|
[workspace.package]
|
||||||
version = "0.3.8-pre.2"
|
version = "0.3.8-pre.2.fix.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
// file: crates/ksp-app-store-desk/tests/dependency_boundary.rs
|
// file: crates/ksp-app-store-desk/tests/dependency_boundary.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
|
//! Dependency-boundary tests for the Store Desk scaffold.
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pre_002_manifest_keeps_store_and_transport_runtime_dependencies_out_of_scaffold() {
|
fn pre_002_manifest_keeps_store_and_transport_runtime_dependencies_out_of_scaffold() {
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
// file: crates/ksp-app-store-desk/tests/desktop_contract.rs
|
// 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> {
|
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]
|
#[test]
|
||||||
@@ -23,6 +25,18 @@ fn pre_002_tauri_package_and_ports_match_store_desk_identity() {
|
|||||||
assert!(vite.contains("port: 1439"));
|
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]
|
#[test]
|
||||||
fn pre_002_frontend_dependency_baseline_is_ksp_owned_and_select_free() {
|
fn pre_002_frontend_dependency_baseline_is_ksp_owned_and_select_free() {
|
||||||
let parsed = parse_json(include_str!("../package.json"));
|
let parsed = parse_json(include_str!("../package.json"));
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
// file: crates/ksp-app-store-desk/tests/desktop_security.rs
|
// 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> {
|
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]
|
#[test]
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
// file: crates/ksp-app-store-desk/tests/public_api.rs
|
// file: crates/ksp-app-store-desk/tests/public_api.rs
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
|
//! Public API boundary test for the Store Desk scaffold.
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pre_002_public_surface_exposes_only_application_run_entry_point() {
|
fn pre_002_public_surface_exposes_only_application_run_entry_point() {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-app-store-desk/vite.config.ts
|
// file: crates/ksp-app-store-desk/vite.config.ts
|
||||||
// version: 1
|
// version: 2
|
||||||
|
|
||||||
import { NodePackageImporter } from "sass-embedded";
|
import { NodePackageImporter } from "sass-embedded";
|
||||||
import { fileURLToPath } from "node:url";
|
import { fileURLToPath } from "node:url";
|
||||||
@@ -41,7 +41,7 @@ export default defineConfig({
|
|||||||
if (["png", "jpg", "jpeg", "gif", "svg", "webp", "ico"].includes(extension)) {
|
if (["png", "jpg", "jpeg", "gif", "svg", "webp", "ico"].includes(extension)) {
|
||||||
return "imgs/[name][extname]";
|
return "imgs/[name][extname]";
|
||||||
}
|
}
|
||||||
return "otherassets/[name][hash][extname]";
|
return "otherassets/[name][extname]";
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -49,6 +49,9 @@ export default defineConfig({
|
|||||||
css: {
|
css: {
|
||||||
preprocessorOptions: {
|
preprocessorOptions: {
|
||||||
scss: {
|
scss: {
|
||||||
|
quietDeps: true,
|
||||||
|
silenceDeprecations: ["import", "color-functions", "global-builtin"],
|
||||||
|
verbose: false,
|
||||||
importers: [new NodePackageImporter()],
|
importers: [new NodePackageImporter()],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -57,17 +60,11 @@ export default defineConfig({
|
|||||||
port: 1438,
|
port: 1438,
|
||||||
strictPort: true,
|
strictPort: true,
|
||||||
host: devHost || false,
|
host: devHost || false,
|
||||||
hmr: devHost
|
ws: {
|
||||||
? {
|
protocol: "ws",
|
||||||
protocol: "ws",
|
host: devHost || "localhost",
|
||||||
host: devHost,
|
port: 1439,
|
||||||
port: 1439,
|
},
|
||||||
}
|
|
||||||
: {
|
|
||||||
protocol: "ws",
|
|
||||||
host: "localhost",
|
|
||||||
port: 1439,
|
|
||||||
},
|
|
||||||
watch: {
|
watch: {
|
||||||
ignored: ["**/src/**"],
|
ignored: ["**/src/**"],
|
||||||
},
|
},
|
||||||
|
|||||||
169
deltas/0.3.8/pre.002-fix.001.md
Normal file
169
deltas/0.3.8/pre.002-fix.001.md
Normal 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 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.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
|
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
|
||||||
<!-- version: 2 -->
|
<!-- version: 3 -->
|
||||||
|
|
||||||
# Validation v0.3.8 — Store Desk V1 RAW
|
# 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.
|
- [ ] `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.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user