v0.3.8-pre.002

This commit is contained in:
2026-09-03 10:44:49 +02:00
parent 3df8fc74c1
commit 6a1892792c
50 changed files with 3409 additions and 23 deletions

205
deltas/0.3.8/pre.002.md Normal file
View File

@@ -0,0 +1,205 @@
<!-- 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 lopé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 dinspection de `pre.003`.
Le scaffold fixe dès maintenant linvariant 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 dinspection.
## 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` nexiste que lorsquun défaut réel de la tranche correspondante doit être corrigé. Aucun fix futur nest réservé à lavance.
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 dinspection.
## 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` nest 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 nexiste dans le HTML. En `pre.007`/`pre.008`, ce même pager DataTables passera en `serverSide: true` et sera alimenté par la primitive dinspection Store définie à partir de `pre.003`. Il ne sera pas doublé.
## Sécurité et frontières
- aucune source kbot3 nest copiée ;
- aucun SQL nentre dans lapplication ;
- aucune URI Store, credential, pool ou handle backend nest exposé ;
- aucune dépendance Store physique ou API directe nest 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 dassemblage `pre.002`.
## 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
```
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` nest pas installé dans lenvironnement dassemblage. Les gates suivants doivent donc être exécutés par lopé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 dinspection ;
- 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 dentité 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 dinspection 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.