Files
khadhroony-solana-project/deltas/0.3.8/pre.001.md
2026-09-03 09:56:41 +02:00

128 lines
5.8 KiB
Markdown

<!-- file: deltas/0.3.8/pre.001.md -->
<!-- version: 1 -->
# Delta v0.3.8-pre.1 — audit, brainstorming et planification Store Desk
## Base requise
```text
v0.3.7
workspace.package.version = 0.3.7
```
La source de code est exclusivement l'archive stable KSP v0.3.7 fournie. kbot3 a été extrait séparément et utilisé uniquement comme référence fonctionnelle/UX conformément au prompt 027.
## Résumé
Cette tranche ouvre v0.3.8 sans scaffold Tauri lourd. Elle vérifie archives/règles, audite Store/API/PostgreSQL, les Desks KSP et DataTables, réaudite les fonctions Store historiques de kbot3, puis fixe capabilities/gaps/screens/tables/pagination/DTO/threat model et sizing.
Décision centrale issue du brainstorming pagination :
```text
RawPage cursor/keyset existant = conservé comme primitive canonique machine
nouvelle pagination inspection = offset + limit + totaux + summaries backend-neutral
DataTables serverSide = consommateur de la primitive inspection via Tauri invoke
pagination visible = UNE SEULE, le pager DataTables
```
Cette décision évite la double pagination kbot3 sans sacrifier la pagination keyset existante. L'offset/count est confiné à une capability d'inspection réutilisable hors Tauri et à son implémentation backend privée ; aucun DTO DataTables ni SQL n'entre dans l'application ou le contrat RAW canonique.
## Recalibrage explicite du prompt 027
Le prompt supposait initialement une pagination Store cursor distincte d'un paging DataTables local, avec possibilité `paging: false`. `pre.001` avait précisément pour mission de trancher cette question avant planification. Le résultat du brainstorming remplace cette hypothèse UI par :
```text
séparation des contrats oui
séparation visuelle des pagers non
```
Les frontières normatives restent inchangées : Store Desk dépend uniquement de `ksp-store-lib`, aucune dépendance backend/SQL, Config reste owner des targets/secrets, V1 reste read-only et kbot3 reste uniquement fonctionnel.
## Vérification des archives
- KSP v0.3.7 : SHA-256 `d57132960e4c280a67e59bea02ce08a61665890bdfb6ef16b7faf1b3c57070ae`, 1 702 entrées, ZIP propre ;
- kbot3 : SHA-256 `ee47643b9f8b582ee8db97b2381ec107e45aef8c009fee44757531514615d318`, 2 501 entrées, ZIP propre ;
- aucune entrée absolue, traversal, séparateur inversé ou lien symbolique ZIP ;
- `workspace.package.version = 0.3.7` et `deltas/0.3.7/rel.001.md` confirmés ;
- Store API/lib/PostgreSQL et Backfill Desk stable confirmés.
## Audits locaux avant modification
```text
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean (301 table(s), 687 file(s))
```
`cargo` est absent de l'environnement d'assemblage. `cargo fmt/check/clippy/test` ne sont donc pas déclarés PASS localement. Le journal opérateur fourni rapporte un gate stable v0.3.7 complet et reste une preuve externe de baseline.
## Audits post-modification
```text
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean (283 table(s), 153 file(s))
```
Le diff contre la base contient exactement `Cargo.toml`, le plan, la validation et le delta `pre.001`, sans suppression. Les gates Cargo restent non exécutés localement faute de binaire `cargo`.
## Architecture d'inspection retenue
Contrats candidats à matérialiser à partir de `pre.003` :
```text
RawInspectionPageRequest { offset, limit }
RawInspectionPage<T> { items, total_items, filtered_items }
RawTransactionInspectionQuery
RawAccountStateInspectionQuery
RawTransactionSummary
RawAccountStateSummary
RawTransactionInspectionRead
RawAccountStateInspectionRead
```
Les traits existants `RawTransactionRead` / `RawAccountStateRead` restent inchangés afin de ne pas casser les implémentations externes et de préserver le chemin keyset.
DataTables V1 : `serverSide: true`, `ajax` fonction custom vers Tauri, `searching: false`, page length 25/50/100, ordre canonique Store seulement. `recordsTotal` / `recordsFiltered` proviennent des counts exacts Store. Aucun second pager n'est rendu.
## Décisions complémentaires
- `GABARIT STORE DESK = KSP` ; aucune source de shell/package/assets/code depuis kbot3 ;
- ports Vite/HMR : 1438/1439 ;
- dépendances KSP V1 : Config + Logging + Store facade ; aucun Store API/PostgreSQL direct ;
- npm : socle KSP + `datatables.net-bs5 ^3.0` ; Select reporté faute de fonction réelle ;
- audit externe du 2026-09-03 : DataTables 3.0.3 / Select 4.0.1 ; ranges KSP conservés ;
- composite prévu : Logging + Store uniquement ;
- navigation initiale : Overview / RAW Transactions / RAW Accounts ;
- observations intégrées aux détails puis listing ajouté après extension Store backend-neutral ;
- rows principales alimentées par summaries Store, sans N+1 ni gros bytes ;
- `u64` projetés comme chaînes décimales IPC ; counts vérifiés JS-safe avant DataTables ;
- V1 strictement read-only.
## Fichiers ajoutés
- `docs/plans/029-V0_3_8_STORE_DESK_PLAN.md` ;
- `docs/validation/025-V0_3_8_STORE_DESK.md` ;
- `deltas/0.3.8/pre.001.md`.
## Fichier modifié
- `Cargo.toml` : header `444` vers `445`, version workspace `0.3.7` vers `0.3.8-pre.1` conformément à `VER-ID-009`.
## Non inclus
- aucune crate `ksp-app-store-desk` encore créée ;
- aucun Rust/TypeScript/HTML/SASS applicatif ;
- aucun composite runtime créé ;
- aucun SQL ou changement backend ;
- aucune capability Store encore ajoutée ;
- aucune reprise de code kbot3 ;
- aucune modification CHANGELOG/ROADMAP ;
- aucune publication stable.
## Suite prévue
`pre.002` crée uniquement le scaffold KSP de `ksp-app-store-desk`. `pre.003` introduit ensuite les contrats backend-neutral d'inspection ; `pre.004` et `pre.005` implémentent respectivement les vertical slices PostgreSQL Transaction et Account avant le branchement des tables DataTables métier.