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

5.8 KiB

Delta v0.3.8-pre.1 — audit, brainstorming et planification Store Desk

Base requise

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 :

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 :

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

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

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 :

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.