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:RawTransactionReadfournit le payload logique ; Store Desk n'en expose qu'un preview hex des 512 premiers bytes maximum ;Purged:RawTransactionRetentionReadfournit 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=-1et 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 parlib.rset consommés viacrate::Itemconformément àRUST-IMPORT-009/012etRUST-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)