v0.3.3-pre.007

This commit is contained in:
2026-08-30 13:37:22 +02:00
parent 10996f11f7
commit aa56a12846
13 changed files with 683 additions and 41 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Plan `0.3.3` — Store/PostgreSQL RawTransaction vertical slice
@@ -31,15 +31,16 @@ Tranches techniques validées :
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
0.3.3-pre.006 + fix.001 — pagination keyset + cursor V1
```
Tranche technique courante :
```text
0.3.3-pre.006pagination keyset + cursor V1
0.3.3-pre.007archive, purge, compare-and-transition et rejet Compacted
```
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`.
Les gates opérateur jusqu'à `pre.006-fix.001` sont verts. `pre.007` complète la surface backend-specific `RawTransaction` avec les transitions physiques `Full -> Archived -> Purged`, sans implémenter encore les six traits ni leur dispatch dans `ksp-store-lib`.
## 2. Sources et autorité
@@ -1131,12 +1132,19 @@ Tranche matérialisée :
### `0.3.3-pre.007` — archive, purge, tombstone, ForceRehydrate
- `Full -> Archived -> Purged` ;
- compare-and-transition ;
- archive relation ;
- normal skip purged ;
- force rehydrate ;
- rejet sûr et stable de `Compacted`, sans fausse compression.
Matérialisation :
- `PostgresBackend::transition_raw_transaction_retention` ajouté sans implémentation directe de trait ;
- validation réseau et rejet de toute transition impliquant `Compacted` avant `pool.get()` ;
- `SELECT ... FOR UPDATE` du canonical avant toute décision/mutation ;
- `current == target` -> `AlreadyAtTarget` après validation de la forme physique ;
- `current != expected` -> `ExpectedStateMismatch` sans mutation ;
- `Full -> Archived` -> payload exact inséré dans la relation archive, puis payload hot `NULL` et état `archived`, dans la même transaction ;
- `Archived -> Purged` -> archive supprimée, block time effacé, état `purged`, tombstone minimal conservé ;
- unknown reference -> `ReferenceNotFound` ;
- `Compacted` -> `RetentionCompactionUnsupported` / `store.postgres_retention_compaction_unsupported` sans fausse compression ;
- acquisition normale et `ForceRehydrate` acquis en `pre.005` continuent d'utiliser le même verrou canonical et sont donc sérialisés avec archive/purge ;
- V000/V001 restent byte-identiques.
### `0.3.3-pre.008` — façade `ksp-store-lib`