15 KiB
Validation v0.3.8 — Store Desk V1 RAW
1. Gate pre.001
- archive stable KSP v0.3.7 identifiée comme base exclusive ;
workspace.package.version = 0.3.7avant modification ;deltas/0.3.7/rel.001.mdprésent ;- prompt 027 et règles KSP relus ;
- Store API/lib/PostgreSQL et gabarits Desk audités ;
- archive kbot3 isolée et utilisée uniquement comme référence fonctionnelle/UX ;
- npm/DataTables KSP inventorié ;
- capability/gap/screen/table/pagination/DTO/threat maps produites ;
- décision d'architecture pagination tranchée avant scaffold ;
- 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
python3 scripts/audit_rust_workspace_rules.py: propre, zéro candidat d'export ;- audit Markdown : propre, 301 tables / 687 fichiers ;
cargo fmt --all -- --check: non exécuté localement,cargoabsent ;cargo check --workspace: non exécuté localement,cargoabsent ;cargo clippy --workspace --all-targets: non exécuté localement,cargoabsent ;- tests ciblés Store/Config : non exécutés localement,
cargoabsent.
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
RawPageRequest/RawPage<T>cursor-keyset existants sont conservés sans modification ;- le pager Store Desk ne les expose pas ;
- DataTables
serverSideexigestart,length,recordsTotal,recordsFiltered; - DataTables accepte
ajaxcomme fonction custom, compatible avec uninvoke()Tauri sans fetch ; - une primitive Store backend-neutral d'inspection offset/count est justifiée ;
- deux capabilities read fine-grained Tx/Account sont préférées à la modification des traits RAW existants ;
- les pages d'inspection retournent des summaries sans payload/data bytes ;
total_itemsetfiltered_itemssont exacts dans la sémantique de query ;- page length UX = 25/50/100 ;
length = -1interdit ; - DataTables search arbitraire désactivée en V1 ;
- filtres Store explicites et ordre canonique seulement ;
- un seul pager est visible : celui de DataTables ;
- aucun pager « bloc Store » ou paging local imbriqué ne subsiste.
5. Capability gaps et trajectoire
- list/get RawTransaction cursor existe ;
- list/get RawAccountState cursor existe ;
- read observation par key existe pour Tx et Account ;
- inspection offset/count/summary manque en v0.3.7 ;
- listing observations Tx/Account manque ;
- aucun gap n'est contourné par SQL dans l'app ;
- inspection Tx/Account est planifiée dans Store API/lib/PostgreSQL avant l'UI métier ;
- observation listing reste une extension Store dédiée ultérieure ;
- les counts restent logiques/backend-neutral et n'exposent aucun diagnostic physique PostgreSQL.
6. Gabarit / npm
GABARIT STORE DESK = KSP;- ports réservés 1438/1439 ;
- shell/splash/fonts/assets dérivent uniquement des Desks KSP ;
datatables.net-bs5 ^3.0retenu ;- Select non retenu par défaut ;
- aucune version/package kbot3 n'est utilisée ;
- audit externe : DataTables 3.0.3 / Select 4.0.1 le 2026-09-03, sans upgrade opportuniste.
7. DTO / sécurité
- tous les
u64métier traversent IPC en texte décimal ; - counts convertis en
numberuniquement après contrôle JS-safe ; - payload transaction et account data sont detail-only ;
- summaries d'inspection excluent les gros bytes ;
- aucun cursor Store dans le pager DataTables ;
- aucune URI/credential/backend handle/SQL n'est projeté ;
- offset/limit hostiles sont rejetés avant I/O ;
drawDataTables sert uniquement à l'ordonnancement frontend ;- aucune persistence navigateur RAW ;
- instrumentation exclut payload, URI, secrets et valeurs de filtres.
8. Gates futures
pre.002scaffold KSP strict + DataTables skeleton ;pre.003contrats Store inspection offset/count/summaries ;pre.004PostgreSQL + façade inspection RawTransaction ;pre.005PostgreSQL + façade inspection RawAccountState ;pre.006composite Logging+Store + Overview/health ;pre.007RawTransaction DataTables serverSide + détail ;pre.008RawAccountState DataTables serverSide + détail ;pre.009observation listing/inspection Store ;pre.010observations UI + hardening UX ;pre.011security/dependency/release completeness ;pre.012gate technique final + Tauri build + smoke read-only opt-in ;pre.013réconciliation documentaire ;pre.014prompt suivant + CHANGELOG + ROADMAP ;rel.001publication stable v0.3.8.
9. Gate post-modification pre.001
python3 scripts/audit_rust_workspace_rules.py: General Rust clean, export completeness 0, KSP workspace Rust clean ;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 ;- diff contre l'archive v0.3.7 : exactement quatre fichiers ajoutés/modifiés, aucune suppression ;
- archive delta testée par
unzip -t; - gates Cargo : non exécutés dans l'environnement d'assemblage,
cargoabsent.
10. Gate opérateur de la base pre.001
Après application de pre.001, l’opérateur a exécuté :
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
Résultats fournis :
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean (314 table(s), 690 file(s))
cargo check --workspace: PASS
cargo clippy --workspace --all-targets: PASS
Cette preuve opérateur ferme le gate technique de la base 0.3.8-pre.1 avant matérialisation de pre.002. Aucun test crate ciblé n’est inféré au-delà des commandes effectivement fournies.
11. pre.002 — scaffold Store Desk matérialisé
crates/ksp-app-store-deskcréé comme package Rust lib + bin ;- workspace avancé à
0.3.8-pre.2; - ports Vite/HMR stricts 1438/1439 ;
- identité Tauri
KSP Store Desk/com.sasedev.ksp-app-store-desk; - splash, logo, favicon et font repris byte-exact depuis le gabarit Desk KSP ;
- shell et SASS dérivés du gabarit KSP, sans source kbot3 ;
- Config + Logging initialisés selon le pattern Desk KSP ;
ksp-core-libadmis au scaffold pour les erreurs applicatives typées, sans contourner Store ;- aucune dépendance
ksp-store-lib,ksp-store-api,ksp-store-postgres-lib, Transport ou Job dans cette tranche ; - capabilities limitées à
core:default+tracing:default; - frontend tracing installé pour navigation, boutons, refresh et IPC ;
- dépendances npm KSP stables conservées ;
datatables.net-bs5ajouté sans Select ;- skeletons RAW Transactions / RAW Accounts vides créés ;
- aucun Store n’est ouvert et aucune donnée Store n’est chargée ;
- aucun contrôle
Premier / Précédent / SuivantStore n’est rendu ; - DataTables reste l’unique owner visuel du paging dès le scaffold ;
- le mode local vide de
pre.002ne préjuge pas duserverSideprévu enpre.007/pre.008; - plan corrigé : suppression du placeholder préventif
pre.003-fix.NNN; - plan corrigé : screen-map alignée sur le pager DataTables unique.
12. Gates d’assemblage pre.002
python3 scripts/audit_rust_workspace_rules.py: General Rust clean, export completeness 0, KSP workspace Rust clean ;- audit Markdown : clean, 283 tables / 155 fichiers sur le périmètre
deltas/0.3.8; - manifest parse : 4 JSON + 2 TOML ;
- package baseline : 7 dépendances runtime obligatoires, devDependencies exactes sur 4 Desks KSP, Select absent ;
- assets : 5 fichiers binaires byte-identical sur 4 Desks KSP ;
- SASS partagé : 5 fichiers body-identical au gabarit KSP ;
- splash : body identique au gabarit modulo identité Store Desk et metadata fichier ;
- audit shell/DataTables : structure KSP + deux skeletons + owner visuel unique du pager ;
- audit statique des dépendances/scopes Store/Transport/Job : aucun bypass ;
- ports : 1438/1439 stricts et sans collision avec les autres Desks ;
- audit frontend : pas de
fetch, storage navigateur ni dialogue bloquant ; - audit TypeScript syntaxique par
transpileModule5.8.3 : 5 fichiers propres ; - audit Rust source du nouveau scaffold : aucun
panic!,unwrap,expectou blocunsafe; - delta scope : 47 ajouts, 3 modifications, 0 suppression ; 46 fichiers applicatifs + delta ;
- archive delta finale vérifiée par
unzip -t; cargo fmt --all: non exécuté dans l’environnement d’assemblage,cargoabsent ;cargo check --workspace: non exécuté dans l’environnement d’assemblage,cargoabsent ;cargo clippy --workspace --all-targets: non exécuté dans l’environnement d’assemblage,cargoabsent ;cargo test -p ksp-app-store-desk: à exécuter par l’opérateur ;cargo tree -p ksp-app-store-desk --edges normal: à exécuter par l’opérateur ;cargo tree -p ksp-app-store-desk -e features: à exécuter par l’opérateur.
La case pre.002 de la section « Gates futures » reste ouverte jusqu’au retour de ces gates Cargo opérateur.
13. Retour opérateur pre.002 et ouverture de pre.002-fix.001
Après application de pre.002, l’opérateur a exécuté le gate demandé. Les résultats fournis établissent :
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean (314 table(s), 692 file(s))
cargo check --workspace: PASS
cargo test -p ksp-app-store-desk: PASS (12 unit + 2 dependency boundary + 5 desktop contract + 3 desktop security + 1 public API)
cargo tree -p ksp-app-store-desk --edges normal: produit
cargo tree -p ksp-app-store-desk -e features: produit
cargo clippy --workspace --all-targets n’est pas vert : deux erreurs clippy::implicit-return sont présentes dans les helpers parse_json des tests desktop_contract.rs et desktop_security.rs. Quatre crates de tests signalent aussi missing_docs comme warnings.
Le même retour opérateur signale une divergence de vite.config.ts par rapport au gabarit ksp-app-*-desk. L’audit comparatif confirme trois écarts non justifiés :
server.hmr au lieu de server.ws
options SCSS quietDeps/silenceDeprecations/verbose absentes
otherassets/[name][hash][extname] au lieu de otherassets/[name][extname]
Le correctif pre.002-fix.001 reste strictement dans le couloir scaffold de pre.002 :
- réalignement de
vite.config.tssur le gabarit Desk KSP, avec seules différences d’identité et de ports 1438/1439 ; - ajout d’un canari d’égalité du template Vite après normalisation identité/ports/header ;
- correction explicite des deux retours Clippy dans les helpers de tests ;
- ajout des crate-level docs manquantes aux quatre crates d’intégration afin de supprimer les warnings observés ;
- aucune capability Store, aucun SQL, aucun changement d’architecture pagination.
La case pre.002 reste ouverte jusqu’au gate opérateur du fix.
14. Gate opérateur pre.002-fix.001
Le gate complet rejoué par l’opérateur après le fix est vert :
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
Markdown table audit: clean (314 table(s), 693 file(s))
cargo check --workspace: PASS
cargo clippy --workspace --all-targets: PASS
cargo test -p ksp-app-store-desk: PASS
Détail Store Desk communiqué : 12 tests unitaires, 2 dependency-boundary, 6 desktop-contract, 3 desktop-security, 1 public-API, tous verts. Les arbres cargo tree normal/features ont également été produits. pre.002 est donc fermé et pre.003 peut s’ouvrir.
15. pre.003 — contrats Store d’inspection et tracing développement
workspace.package.version = 0.3.8-pre.3;RawInspectionPageRequestsépare explicitement offset/limit deRawPageRequestcursor ;RawInspectionPage<T>exposetotal_items/filtered_itemsexacts avec validation de cohérence ;RawTransactionInspectionQueryconserve network/range/direction et page random-access ;RawAccountStateInspectionQueryconserve network/pubkey?/range/direction et page random-access ;RawTransactionSummaryexclut les payload bytes et expose uniquement metadata/retention/size ;RawAccountStateSummaryexclut les data bytes et expose uniquement metadata/data length ;RawTransactionInspectionReadetRawAccountStateInspectionReadsont object-safe et backend-neutral ;ksp-store-libréexporte les nouveaux contrats sans encore les implémenter surStore;- le chemin cursor/keyset existant reste inchangé ;
- aucun SQL, migration ou backend physique n’est introduit ;
- aucun nom/protocole DataTables n’entre dans
ksp-store-api; - Store Desk demande explicitement le profil Logging
supertracependant le développement ; - fallback Logging Store Desk reste
Trace; - tracing frontend couvre boutons, navigation, tabs, changements de contrôles, Refresh et IPC ;
- les futurs événements DataTables page/length/query doivent être instrumentés lors de
pre.007/pre.008sans logguer les valeurs de filtres ni payloads.