Files
khadhroony-solana-project/deltas/0.3.8/pre.007.md
2026-09-03 17:54:50 +02:00

3.8 KiB

Delta 0.3.8-pre.007 — RAW Transactions DataTables server-side + détail

Base requise

Base directe attendue : 0.3.8-pre.006-fix.001 (workspace.package.version = 0.3.8-pre.6.fix.1).

Objet

Brancher la vue RAW Transactions de ksp-app-store-desk sur la capability d'inspection Store introduite en pre.003/pre.004, sans modifier Store API, PostgreSQL ou les queries keyset machine.

Backend applicatif

Store Desk ajoute des DTO app-owned et deux commands Tauri :

store_query_transactions
store_get_transaction_detail

store_query_transactions reçoit uniquement :

offset decimal
limit = 25 | 50 | 100
slot_min optionnel
slot_max optionnel
direction = ascending | descending

Le network n'est jamais fourni par le frontend : il est dérivé du ksp-store-lib::Store déjà ouvert. Le runtime construit RawInspectionPageRequest + RawTransactionInspectionQuery puis appelle RawTransactionInspectionRead.

La réponse app-owned contient :

rows payload-free
records_total_decimal
records_filtered_decimal

Tous les u64 qui peuvent dépasser le domaine JS-safe restent encodés en texte décimal.

Table Transactions

La table passe à :

serverSide: true
searching: false
ordering: false
pageLength: 25
lengthMenu: [25, 50, 100]
ajax: fonction custom -> invoke Tauri

Le mapping visible est :

DataTables start   -> offset
DataTables length  -> limit
Store total        -> recordsTotal
Store filtered     -> recordsFiltered
Store summaries    -> data
DataTables draw    -> frontend uniquement

Les filtres Store explicites sont slot min, slot max et direction. Tout changement de filtre redessine depuis la première page. Aucun pager Store ou cursor n'est rendu.

Rows et détail

Les rows exposent uniquement signature encodée, slot, block time, format ID/version, payload size, content hash et retention state. Aucun payload byte n'est présent dans la table.

Le bouton Détail charge une seule identité :

  • Full / Archived : RawTransactionRead fournit le payload logique ; Store Desk n'en expose qu'un preview hex des 512 premiers bytes maximum ;
  • Purged : RawTransactionRetentionRead fournit le tombstone ; aucun block time/payload n'est inventé ;
  • la taille exacte et le flag de troncature sont séparés du preview ;
  • aucun export exact 16 MiB n'est ajouté.

Sécurité / instrumentation

  • rejet Rust de length=-1 et de toute taille autre que 25/50/100 ;
  • offset, slots et signature parsés sans écho de valeur dans les erreurs ;
  • counts décimaux convertis côté TypeScript seulement après contrôle Number.MAX_SAFE_INTEGER ;
  • aucune search/order DataTables arbitraire dans le contrat IPC ;
  • aucune URI, credential, SQL, handle PostgreSQL ou payload dans les logs ;
  • tracing query/page/page-length/redraw/refresh/detail sans valeurs de filtres ni identité ;
  • nouveaux items pub(crate) réexportés par lib.rs et consommés via crate::Item conformément à RUST-IMPORT-009/012 et RUST-API-004.

Hors scope

RAW Accounts reste local et serverSide:false jusqu'à pre.008. Aucun changement de Store API, Store façade, PostgreSQL, migration, index, capability ou Config composite.

Version

delivery = 0.3.8-pre.007
workspace.package.version = 0.3.8-pre.7
commit = v0.3.8-pre.007
tag = aucun

Gate requis

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
cargo test -p ksp-app-store-desk
cargo test -p ksp-store-lib
cargo check -p ksp-store-lib --no-default-features

Smoke runtime recommandé :

(cd crates/ksp-app-store-desk && cargo tauri dev)