v0.3.8-pre.007

This commit is contained in:
2026-09-03 17:54:50 +02:00
parent 8130e01b70
commit d5b4aef194
16 changed files with 1139 additions and 55 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/029-V0_3_8_STORE_DESK_PLAN.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Plan v0.3.8 — Store Desk V1 RAW
@@ -586,6 +586,8 @@ Le gate opérateur de `pre.006` est fonctionnellement vert mais signale un warni
Brancher l'unique pager DataTables via `ajax` function/Tauri invoke, mapping offset/limit/totaux, filtres Store explicites, summary rows, retention badges, détail à la demande et instrumentation. Aucun second pager.
Implémentation retenue : `store_query_transactions` reçoit uniquement `offset`, `limit`, `slot_min`, `slot_max` et `direction`, dérive le network du Store déjà ouvert et appelle `RawTransactionInspectionRead`. Les counts restent des chaînes décimales jusqu'au contrôle `Number.MAX_SAFE_INTEGER` côté frontend. Les rows sont payload-free. `store_get_transaction_detail` reçoit uniquement la signature de la row, recharge l'entité via `RawTransactionRead`/`RawTransactionRetentionRead` et expose au maximum 512 bytes sous forme de preview hex, avec taille exacte et indicateur de troncature. `Full`, `Archived` et `Purged` sont distingués ; un `Purged` utilise son tombstone. Les Accounts restent `serverSide:false` jusqu'à `pre.008`.
### pre.008 — RawAccountState DataTables serverSide + détail
Même intégration pour Account, pubkey/range/direction, summaries JS-safe, détail data borné, responsive/scrollX/copy UX.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
<!-- version: 13 -->
<!-- version: 14 -->
# Validation v0.3.8 — Store Desk V1 RAW
@@ -538,3 +538,43 @@ Le réexport `StoreRuntime` est requis par la règle de façade crate-root et ne
- [X] un canari `dependency_boundary` verrouille ces chemins et la distinction item partagé / helper local privé.
Aucun composite Config, Store runtime, query, SQL, DTO wire, commande Tauri, frontend, DataTables ou comportement de fermeture n'est modifié.
## 28. Clôture opérateur `pre.006-fix.001` et `pre.007` — RAW Transactions server-side
Le gate opérateur de `0.3.8-pre.6.fix.1` est entièrement vert et ne contient plus le warning de réexport `StoreRuntime` :
```text
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), 703 file(s))
cargo check --workspace: PASS
cargo clippy --workspace --all-targets: PASS
cargo test -p ksp-app-store-desk: PASS (14 unitaires + 3 dependency + 8 desktop contract + 5 security + 1 public API)
cargo test -p ksp-config-lib: PASS (128 unitaires + intégrations)
cargo test -p ksp-store-lib: PASS
cargo check -p ksp-store-lib --no-default-features: PASS
```
`pre.007` branche uniquement la famille RAW Transactions :
- [X] `workspace.package.version = 0.3.8-pre.7` ;
- [X] `StoreTransactionQueryRequestDto` ne transporte que offset décimal, limit 25/50/100, slot min/max optionnels et direction canonique ;
- [X] aucun `draw`, colonnes DataTables, search arbitraire, order arbitraire, cursor Store, network ou donnée physique ne traverse le request IPC ;
- [X] `StoreRuntime` dérive le network du Store ouvert et appelle `RawTransactionInspectionRead` via `ksp-store-lib` uniquement ;
- [X] `records_total_decimal` et `records_filtered_decimal` restent exacts jusqu'au contrôle JS-safe côté frontend ;
- [X] les rows DataTables contiennent signature/slot/block time/format/version/taille/hash/rétention, sans payload bytes ;
- [X] Transactions utilise `serverSide:true`, `searching:false`, `ordering:false`, page length 25/50/100 et `ajax` Tauri custom ;
- [X] DataTables reste l'unique pager visible ; aucun cursor/pager Store parallèle n'est rendu ;
- [X] les filtres explicites slot min/max + direction déclenchent un redraw depuis la première page ;
- [X] `length=-1`, taille hors whitelist, offset non décimal, range inversée et direction inconnue sont rejetés avant la query Store ;
- [X] les counts hors `Number.MAX_SAFE_INTEGER` produisent une erreur UX au lieu d'un arrondi silencieux ;
- [X] `store_get_transaction_detail` reçoit uniquement la signature encodée de la row et ne reçoit jamais le network du frontend ;
- [X] le détail `Full`/`Archived` charge une seule transaction et expose au maximum 512 bytes en preview hex ;
- [X] le détail `Purged` utilise `RawTransactionTombstone`, sans inventer block time ou payload ;
- [X] les événements query/page/page-length/redraw/refresh/détail sont tracés sans valeurs de slot, signature ou payload ;
- [X] les nouveaux items `pub(crate)` sont réexportés via `lib.rs` et consommés sous `crate::Item` ;
- [X] RAW Accounts reste volontairement `serverSide:false` jusqu'à `pre.008` ;
- [X] aucune modification `ksp-store-api`, `ksp-store-lib`, `ksp-store-postgres-lib`, migration ou capability n'est introduite par cette tranche applicative.
Le gate Cargo opérateur de `pre.007` reste à exécuter après application du delta.