7.6 KiB
Delta v0.3.8-pre.2 — scaffold KSP Store Desk
Base requise
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 :
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 :
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 :
ksp-config-lib
ksp-core-lib
ksp-logging-lib
chrono
fs2
serde
tauri
tauri-plugin-tracing
tokio(time)
ts-rs
Explicitement absentes :
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 :
@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 :
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 dialoguealert/confirm/prompt; - frontend tracing couvre navigation, boutons, refresh et IPC ;
- nouveau Rust sans
unsafe,panic!,unwrapniexpect; - 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, header445vers446, version0.3.8-pre.1vers0.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érateurpre.001et validation d’assemblagepre.002.
Validations exécutées dans l’environnement d’assemblage
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 :
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 :
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-libouksp-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
serverSideStore 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.