v0.3.8-pre.005

This commit is contained in:
2026-09-03 13:09:25 +02:00
parent 3bb73e81e4
commit bf73481180
17 changed files with 891 additions and 43 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/029-V0_3_8_STORE_DESK_PLAN.md -->
<!-- version: 4 -->
<!-- version: 5 -->
# Plan v0.3.8 — Store Desk V1 RAW
@@ -572,7 +572,7 @@ Implémenter summary query, counts exacts, offset/limit checked et trait Tx dans
### pre.005 — inspection PostgreSQL RawAccountState
Même vertical slice pour Account : pubkey/slot filters, ordre canonique, data length sans data bytes, counts exacts, offset/limit checked, façade et canaris cross-family.
Même vertical slice pour Account : filtre exact `pubkey`, range slot inclusif, ordre canonique `(slot, pubkey, state_hash)`, `data_length_bytes` via `OCTET_LENGTH(data)` sans sélectionner `data`, counts exacts et page `LIMIT/OFFSET` dans une seule instruction SQL par direction. `RawAccountStateInspectionRead` est implémenté sur PostgreSQL puis dispatché par `Store`, ce qui porte l'inventaire symétrique à 12 capabilities RAW. Les quatre statements cursor/keyset Account restent strictement OFFSET-free et ne sont jamais réécrits. Le live proof opt-in couvre filtre pubkey, counts, asc/desc, offset et page vide profonde.
### pre.006 — composite Config + lifecycle Store + Overview

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Validation v0.3.8 — Store Desk V1 RAW
@@ -358,4 +358,49 @@ unset KSP_LIVE_PG_URI
```
Aucun SQL, contrat Store, runtime PostgreSQL ou comportement d'inspection de production n'est modifié par ce fix.
## 20. Gate opérateur `pre.004-fix.001` et live proof PostgreSQL
Le rejeu opérateur sur `0.3.8-pre.4.fix.1` est entièrement vert :
```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), 697 file(s))
cargo check --workspace: PASS
cargo clippy --workspace --all-targets: PASS
cargo test -p ksp-store-postgres-lib: PASS
cargo test -p ksp-store-lib: PASS
cargo check -p ksp-store-lib --no-default-features: PASS
cargo test -p ksp-store-api: PASS
```
Le live proof `postgres_raw_transaction_live` a ensuite été exécuté sur une base PostgreSQL dédiée vide. Il atteint réellement PostgreSQL 17 et passe :
```text
KSP Store RawTransaction live proof: server major 17
test pre_009_real_postgres_raw_transaction_vertical_slice_is_atomic_concurrent_and_recoverable ... ok
```
`pre.004` est donc fermé sans réserve et `pre.005` peut ouvrir uniquement le vertical slice `RawAccountStateInspectionRead`.
## 21. `pre.005` — inspection PostgreSQL RawAccountState + façade Store
- [X] `workspace.package.version = 0.3.8-pre.5` ;
- [X] `PostgresBackend` implémente `RawAccountStateInspectionRead` ;
- [X] `Store` implémente le même trait avec guard network avant dispatch ;
- [X] les inventaires RAW Store/PostgreSQL passent de 11 à 12 et restent exactement symétriques ;
- [X] chaque direction d'inspection Account utilise une seule instruction SQL regroupant `filtered_count`, `total_count` conditionnel et page LATERAL ;
- [X] `filtered_items` applique le filtre exact `pubkey` optionnel et le range slot inclusif ;
- [X] `total_items` compte toute la famille `ksp_raw_account_states` et réutilise `filtered_count` lorsqu'aucun filtre n'est actif ;
- [X] l'ordre inspection est canonique `(slot, pubkey, state_hash)` en ascendant ou descendant ;
- [X] la page random-access utilise `LIMIT/OFFSET` uniquement dans le chemin inspection ;
- [X] limit/offset non représentables par PostgreSQL sont rejetés avant acquisition du pool ;
- [X] les quatre statements cursor/keyset Account historiques restent sans `OFFSET` ;
- [X] le SQL d'inspection ne sélectionne jamais `account_row.data` et projette seulement `OCTET_LENGTH(account_row.data)` ;
- [X] `RawAccountStateSummary` est reconstruit avec reference, lamports, owner, executable, rent epoch et data length uniquement ;
- [X] longueurs, widths et décimaux hostiles sont rejetés sans écho de valeur ;
- [X] une page vide obtenue par offset profond conserve les counts exacts ;
- [X] le live proof Account opt-in couvre filtre pubkey, counts, ordre asc/desc, offset, data length et page vide profonde ;
- [X] aucune migration, table, index, capability destructive Account, UI Desk ou protocole DataTables n'est ajouté.