v0.3.3-pre.006
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Plan `0.3.3` — Store/PostgreSQL RawTransaction vertical slice
|
||||
|
||||
@@ -28,15 +28,18 @@ Tranches techniques validées :
|
||||
```text
|
||||
0.3.3-pre.001 — audit, threat model, physical design, sizing et planning
|
||||
0.3.3-pre.002 — moteur de migrations multi-version
|
||||
0.3.3-pre.003 + fix.001/fix.002/fix.003 — V001 physique, compatibilité de schéma et binding réseau
|
||||
0.3.3-pre.004 — mapping et lectures RAW
|
||||
0.3.3-pre.005 — écriture atomique et observations
|
||||
```
|
||||
|
||||
Tranche technique courante :
|
||||
|
||||
```text
|
||||
0.3.3-pre.003 — V001 physique + binding réseau
|
||||
0.3.3-pre.006 — pagination keyset + cursor V1
|
||||
```
|
||||
|
||||
Les gates opérateur de `pre.001` et `pre.002` sont verts. `pre.003` matérialise le schéma physique V001 et le binding mono-réseau atomique, mais n'ouvre encore ni repository PostgreSQL métier, ni capability RAW, ni dispatch dans `ksp-store-lib`.
|
||||
Les gates opérateur jusqu'à `pre.005` sont verts. `pre.006` complète la surface backend-specific de lecture `RawTransaction` avec `list_raw_transactions`, sans ouvrir encore la rétention mutante, les implémentations complètes des six traits ni le dispatch dans `ksp-store-lib`.
|
||||
|
||||
## 2. Sources et autorité
|
||||
|
||||
@@ -1108,12 +1111,23 @@ Tranche matérialisée :
|
||||
|
||||
### `0.3.3-pre.006` — pagination/cursor
|
||||
|
||||
- ordre total ;
|
||||
- index utilisé ;
|
||||
- cursor V1 opaque ;
|
||||
- binding de query ;
|
||||
- limites physiques explicites ;
|
||||
- matrice hostile.
|
||||
Tranche matérialisée :
|
||||
|
||||
- `PostgresBackend::list_raw_transactions` retourne uniquement `RawPage<RawTransactionReference>` ;
|
||||
- mauvais réseau rejeté avant acquisition d'un client du pool ;
|
||||
- lignes `Purged` exclues de la liste ;
|
||||
- bornes `RawSlotRange` appliquées de façon inclusive ;
|
||||
- ordre total `Ascending = (slot ASC, signature ASC)` et `Descending = (slot DESC, signature DESC)` ;
|
||||
- continuation keyset stricte `(slot, signature) > cursor` ou `< cursor`, sans `OFFSET` ;
|
||||
- requêtes alignées avec l'index partiel V001 `(slot, signature) WHERE retention_state <> 'purged'` ;
|
||||
- cursor V1 backend-private de 109 octets : magic `KSPT`, version 1, `last_slot`, `last_signature`, digest SHA-256 ;
|
||||
- digest lié avec domaine séparé au network, à la direction, aux flags/valeurs des bornes et à la dernière clé ;
|
||||
- replay sous autre network/range/direction, taille/magic/version/digest hostiles et `last_slot` hors range -> `QueryInvalid` avant pool I/O ;
|
||||
- `RawPageLimit` sans cap métier : `LIMIT requested + 1`, borne PostgreSQL exacte `requested <= i64::MAX - 1`, sinon `PageLimitUnsupported` sans clamp ;
|
||||
- la row `limit+1` est décodée elle aussi afin de ne pas masquer une corruption physique ;
|
||||
- aucune promesse de snapshot inter-pages ; une mutation concurrente placée avant le cursor peut ne pas être observée ;
|
||||
- aucune transition de rétention mutante et aucune implémentation complète de trait dans cette tranche ;
|
||||
- V000/V001 restent byte-identiques.
|
||||
|
||||
### `0.3.3-pre.007` — archive, purge, tombstone, ForceRehydrate
|
||||
|
||||
|
||||
Reference in New Issue
Block a user