206 lines
7.6 KiB
Markdown
206 lines
7.6 KiB
Markdown
<!-- file: deltas/0.3.8/pre.002.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta v0.3.8-pre.2 — scaffold KSP Store Desk
|
||
|
||
## Base requise
|
||
|
||
```text
|
||
0.3.8-pre.1
|
||
workspace.package.version = 0.3.8-pre.1
|
||
```
|
||
|
||
La base `pre.001` a été validée par l’opérateur avec `cargo fmt`, audits Rust/Markdown, `cargo check --workspace` et `cargo clippy --workspace --all-targets` verts avant ouverture de cette tranche.
|
||
|
||
## Objectif
|
||
|
||
Matérialiser uniquement le scaffold desktop `ksp-app-store-desk` défini par le plan `pre.001`, sans ouvrir Store ni anticiper les contrats d’inspection de `pre.003`.
|
||
|
||
Le scaffold fixe dès maintenant l’invariant UX de pagination :
|
||
|
||
```text
|
||
DataTables = unique owner visuel du pager
|
||
Store pager parallèle = absent
|
||
Store serverSide réel = différé à pre.007 / pre.008
|
||
```
|
||
|
||
Les DataTables de `pre.002` sont volontairement vides et locales ; elles valident le shell et le rendu, pas encore la sémantique métier d’inspection.
|
||
|
||
## Recalibrage documentaire issu du retour opérateur
|
||
|
||
Le sizing `pre.001` contenait un placeholder préventif `pre.003-fix.NNN`. Il est supprimé : conformément au workflow KSP, un `pre.NNN-fix.MMM` n’existe que lorsqu’un défaut réel de la tranche correspondante doit être corrigé. Aucun fix futur n’est réservé à l’avance.
|
||
|
||
La screen-map est également corrigée pour supprimer le résidu `Premier / Précédent / Suivant` Store. Les seuls contrôles de pagination visibles prévus pour les tables métier sont ceux de DataTables ; `Refresh` reste un contrôle applicatif indépendant.
|
||
|
||
Enfin, `ksp-core-lib` est admis au scaffold comme dépendance KSP pour les erreurs applicatives typées, conformément au pattern des Desks existants. Cette dépendance ne donne aucun accès Store et ne modifie pas la règle selon laquelle la future application métier ouvrira Store exclusivement via `ksp-store-lib`.
|
||
|
||
## Scaffold livré
|
||
|
||
`ksp-app-store-desk` est un package Rust mixte lib + bin avec :
|
||
|
||
```text
|
||
ports Vite/HMR 1438/1439 stricts
|
||
fenêtres splash + main
|
||
single-instance crate-local
|
||
bootstrap Config standard
|
||
runtime Logging KSP + fallback sûr
|
||
tracing backend/frontend
|
||
assets/fonts/SASS KSP
|
||
capabilities core:default + tracing:default
|
||
Overview / RAW Transactions / RAW Accounts / Diagnostics
|
||
deux skeletons DataTables vides
|
||
aucun Store ouvert
|
||
aucun SQL
|
||
aucun accès réseau frontend
|
||
```
|
||
|
||
Le shell expose Diagnostics comme surface technique du gabarit Desk ; les trois écrans métier du screen-map restent Overview / RAW Transactions / RAW Accounts.
|
||
|
||
## Dépendances Rust
|
||
|
||
Autorisées dans cette tranche :
|
||
|
||
```text
|
||
ksp-config-lib
|
||
ksp-core-lib
|
||
ksp-logging-lib
|
||
chrono
|
||
fs2
|
||
serde
|
||
tauri
|
||
tauri-plugin-tracing
|
||
tokio(time)
|
||
ts-rs
|
||
```
|
||
|
||
Explicitement absentes :
|
||
|
||
```text
|
||
ksp-store-lib
|
||
ksp-store-api
|
||
ksp-store-postgres-lib
|
||
ksp-onchain-transport-lib
|
||
ksp-offchain-transport-lib
|
||
ksp-job-api
|
||
ksp-job-backfill-lib
|
||
reqwest
|
||
tokio-postgres
|
||
deadpool-postgres
|
||
```
|
||
|
||
Store est volontairement absent de `pre.002`. Le branchement Config composite + `ksp-store-lib` reste dans `pre.006`, après matérialisation et implémentation des capabilities d’inspection.
|
||
|
||
## Dépendances frontend
|
||
|
||
Socle runtime :
|
||
|
||
```text
|
||
@fltsci/tauri-plugin-tracing ^0.3
|
||
@fortawesome/fontawesome-free ^7.3
|
||
@tauri-apps/api ^2.11
|
||
bootstrap ^5.3
|
||
datatables.net-bs5 ^3.0
|
||
resize-observer-polyfill ^1.5
|
||
simplebar ^6.3
|
||
```
|
||
|
||
Les devDependencies restent celles du gabarit KSP stable. `datatables.net-select-bs5` n’est pas ajouté : aucune fonction de sélection ne le justifie dans le scaffold.
|
||
|
||
## Pagination visible
|
||
|
||
Les deux tables RAW sont initialisées avec :
|
||
|
||
```text
|
||
paging = true
|
||
pageLength = 25
|
||
lengthMenu = 25 / 50 / 100
|
||
searching = false
|
||
ordering = false
|
||
dataset = vide
|
||
```
|
||
|
||
Aucun bouton de pagination Store n’existe dans le HTML. En `pre.007`/`pre.008`, ce même pager DataTables passera en `serverSide: true` et sera alimenté par la primitive d’inspection Store définie à partir de `pre.003`. Il ne sera pas doublé.
|
||
|
||
## Sécurité et frontières
|
||
|
||
- aucune source kbot3 n’est copiée ;
|
||
- aucun SQL n’entre dans l’application ;
|
||
- aucune URI Store, credential, pool ou handle backend n’est exposé ;
|
||
- aucune dépendance Store physique ou API directe n’est admise ;
|
||
- aucun `fetch`, `XMLHttpRequest`, storage navigateur ou dialogue `alert/confirm/prompt` ;
|
||
- frontend tracing couvre navigation, boutons, refresh et IPC ;
|
||
- nouveau Rust sans `unsafe`, `panic!`, `unwrap` ni `expect` ;
|
||
- assets binaires principaux repris byte-exact du gabarit KSP.
|
||
|
||
## Fichiers ajoutés
|
||
|
||
- `crates/ksp-app-store-desk/**` ;
|
||
- `deltas/0.3.8/pre.002.md`.
|
||
|
||
## Fichiers modifiés
|
||
|
||
- `Cargo.toml` : workspace member Store Desk, header `445` vers `446`, version `0.3.8-pre.1` vers `0.3.8-pre.2` ;
|
||
- `docs/plans/029-V0_3_8_STORE_DESK_PLAN.md` : version documentaire 2, suppression du fix préventif, correction pager unique et dépendance core scaffold ;
|
||
- `docs/validation/025-V0_3_8_STORE_DESK.md` : preuve du gate opérateur `pre.001` et validation d’assemblage `pre.002`.
|
||
|
||
## 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
|
||
```
|
||
|
||
Contrôles complémentaires exécutés avant empaquetage :
|
||
|
||
```text
|
||
Markdown table audit: clean (283 table(s), 155 file(s))
|
||
Manifest parse audit: clean (4 JSON, 2 TOML)
|
||
Desk package baseline audit: clean (7 mandatory dependencies; devDependencies exact across 4 references; Select absent)
|
||
Desk binary asset audit: clean (5 assets byte-identical across 4 references)
|
||
Desk shared SASS audit: clean (5 shared files body-identical across 4 references)
|
||
Desk splash template audit: clean (body identical modulo Store Desk identity and file metadata)
|
||
Desk shell/DataTables skeleton audit: clean (header/sidebar/content/footer + SimpleBar + one visible pager owner)
|
||
Frontend interaction/security audit: clean
|
||
pre.002 dependency/capability boundary audit: clean
|
||
Desk port audit: clean (1438/1439 strict and collision-free)
|
||
Rust scaffold primitive audit: clean (no panic!/unwrap/expect/unsafe block)
|
||
TypeScript syntax audit: clean (5 file(s), transpileModule 5.8.3)
|
||
Delta scope audit: clean (47 added, 3 modified, 0 deleted; 46 app files + delta)
|
||
Final delta archive integrity: clean (`unzip -t`)
|
||
```
|
||
|
||
Le contrôle TypeScript est syntaxique par transpilation ; il ne remplace pas le typecheck npm complet avec dépendances installées et bindings TS-RS générés, ni un build Tauri.
|
||
|
||
## Validations non exécutables localement
|
||
|
||
`cargo` n’est pas installé dans l’environnement d’assemblage. Les gates suivants doivent donc être exécutés par l’opérateur après application du delta :
|
||
|
||
```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
|
||
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
|
||
```
|
||
|
||
## Non inclus
|
||
|
||
- aucune capability Store d’inspection ;
|
||
- aucune modification de `ksp-store-api`, `ksp-store-lib` ou `ksp-store-postgres-lib` ;
|
||
- aucun composite Store Desk ;
|
||
- aucun Store ouvert au runtime ;
|
||
- aucune query métier ou donnée RAW ;
|
||
- aucun détail d’entité ou observation ;
|
||
- aucun `serverSide` Store réel ;
|
||
- aucune modification CHANGELOG/ROADMAP ;
|
||
- aucune reprise de code ou package kbot3.
|
||
|
||
## Suite prévue
|
||
|
||
`pre.003` introduit les contrats backend-neutral d’inspection offset/count/summaries dans Store. Si un défaut réel de `pre.003` apparaît ensuite, et seulement dans ce cas, un `pre.003-fix.NNN` pourra être créé conformément aux règles de versionnement.
|