# Validation v0.3.8 — Store Desk V1 RAW ## 1. Gate `pre.001` - [X] archive stable KSP v0.3.7 identifiée comme base exclusive ; - [X] `workspace.package.version = 0.3.7` avant modification ; - [X] `deltas/0.3.7/rel.001.md` présent ; - [X] prompt 027 et règles KSP relus ; - [X] Store API/lib/PostgreSQL et gabarits Desk audités ; - [X] archive kbot3 isolée et utilisée uniquement comme référence fonctionnelle/UX ; - [X] npm/DataTables KSP inventorié ; - [X] capability/gap/screen/table/pagination/DTO/threat maps produites ; - [X] décision d'architecture pagination tranchée avant scaffold ; - [X] aucun code kbot3, SQL app-owned ou scaffold Store Desk livré en `pre.001`. ## 2. Preuve des archives | Source | SHA-256 | Résultat | Usage | |--------------------------------------------------------|--------------------------------------------------------------------|---------------------------|----------------------------| | `khadhroony-solana-project-v0.3.7.zip` | `d57132960e4c280a67e59bea02ce08a61665890bdfb6ef16b7faf1b3c57070ae` | 1 702 entrées, ZIP propre | source exclusive de code | | `khadhroony-bot3_v0.5.3-pre.005-fix010-thelatest1.zip` | `ee47643b9f8b582ee8db97b2381ec107e45aef8c009fee44757531514615d318` | 2 501 entrées, ZIP propre | référence fonctionnelle/UX | Aucune entrée absolue, traversal, séparateur inversé ou lien symbolique ZIP n'a été détectée. ## 3. Baseline locale avant modification - [X] `python3 scripts/audit_rust_workspace_rules.py` : propre, zéro candidat d'export ; - [X] audit Markdown : propre, 301 tables / 687 fichiers ; - [ ] `cargo fmt --all -- --check` : non exécuté localement, `cargo` absent ; - [ ] `cargo check --workspace` : non exécuté localement, `cargo` absent ; - [ ] `cargo clippy --workspace --all-targets` : non exécuté localement, `cargo` absent ; - [ ] tests ciblés Store/Config : non exécutés localement, `cargo` absent. Le journal opérateur fourni pour v0.3.7 rapporte un gate complet. Il reste une preuve externe de baseline et n'est pas présenté comme une exécution locale de `pre.001`. ## 4. Décision pagination / inspection - [X] `RawPageRequest` / `RawPage` cursor-keyset existants sont conservés sans modification ; - [X] le pager Store Desk ne les expose pas ; - [X] DataTables `serverSide` exige `start`, `length`, `recordsTotal`, `recordsFiltered` ; - [X] DataTables accepte `ajax` comme fonction custom, compatible avec un `invoke()` Tauri sans fetch ; - [X] une primitive Store backend-neutral d'inspection offset/count est justifiée ; - [X] deux capabilities read fine-grained Tx/Account sont préférées à la modification des traits RAW existants ; - [X] les pages d'inspection retournent des summaries sans payload/data bytes ; - [X] `total_items` et `filtered_items` sont exacts dans la sémantique de query ; - [X] page length UX = 25/50/100 ; `length = -1` interdit ; - [X] DataTables search arbitraire désactivée en V1 ; - [X] filtres Store explicites et ordre canonique seulement ; - [X] **un seul pager est visible : celui de DataTables** ; - [X] aucun pager « bloc Store » ou paging local imbriqué ne subsiste. ## 5. Capability gaps et trajectoire - [X] list/get RawTransaction cursor existe ; - [X] list/get RawAccountState cursor existe ; - [X] read observation par key existe pour Tx et Account ; - [X] inspection offset/count/summary manque en v0.3.7 ; - [X] listing observations Tx/Account manque ; - [X] aucun gap n'est contourné par SQL dans l'app ; - [X] inspection Tx/Account est planifiée dans Store API/lib/PostgreSQL avant l'UI métier ; - [X] observation listing reste une extension Store dédiée ultérieure ; - [X] les counts restent logiques/backend-neutral et n'exposent aucun diagnostic physique PostgreSQL. ## 6. Gabarit / npm - [X] `GABARIT STORE DESK = KSP` ; - [X] ports réservés 1438/1439 ; - [X] shell/splash/fonts/assets dérivent uniquement des Desks KSP ; - [X] `datatables.net-bs5 ^3.0` retenu ; - [X] Select non retenu par défaut ; - [X] aucune version/package kbot3 n'est utilisée ; - [X] audit externe : DataTables 3.0.3 / Select 4.0.1 le 2026-09-03, sans upgrade opportuniste. ## 7. DTO / sécurité - [X] tous les `u64` métier traversent IPC en texte décimal ; - [X] counts convertis en `number` uniquement après contrôle JS-safe ; - [X] payload transaction et account data sont detail-only ; - [X] summaries d'inspection excluent les gros bytes ; - [X] aucun cursor Store dans le pager DataTables ; - [X] aucune URI/credential/backend handle/SQL n'est projeté ; - [X] offset/limit hostiles sont rejetés avant I/O ; - [X] `draw` DataTables sert uniquement à l'ordonnancement frontend ; - [X] aucune persistence navigateur RAW ; - [X] instrumentation exclut payload, URI, secrets et valeurs de filtres. ## 8. Gates futures - [ ] `pre.002` scaffold KSP strict + DataTables skeleton ; - [ ] `pre.003` contrats Store inspection offset/count/summaries ; - [ ] `pre.004` PostgreSQL + façade inspection RawTransaction ; - [ ] `pre.005` PostgreSQL + façade inspection RawAccountState ; - [ ] `pre.006` composite Logging+Store + Overview/health ; - [ ] `pre.007` RawTransaction DataTables serverSide + détail ; - [ ] `pre.008` RawAccountState DataTables serverSide + détail ; - [ ] `pre.009` observation listing/inspection Store ; - [ ] `pre.010` observations UI + hardening UX ; - [ ] `pre.011` security/dependency/release completeness ; - [ ] `pre.012` gate technique final + Tauri build + smoke read-only opt-in ; - [ ] `pre.013` réconciliation documentaire ; - [ ] `pre.014` prompt suivant + CHANGELOG + ROADMAP ; - [ ] `rel.001` publication stable v0.3.8. ## 9. Gate post-modification `pre.001` - [X] `python3 scripts/audit_rust_workspace_rules.py` : General Rust clean, export completeness 0, KSP workspace Rust clean ; - [X] `python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.8` : clean, 283 tables / 153 fichiers ; - [X] diff contre l'archive v0.3.7 : exactement quatre fichiers ajoutés/modifiés, aucune suppression ; - [X] archive delta testée par `unzip -t` ; - [ ] gates Cargo : non exécutés dans l'environnement d'assemblage, `cargo` absent.