v0.3.3-pre.009

This commit is contained in:
2026-08-30 14:29:33 +02:00
parent 7f0a642972
commit ce658e58f7
8 changed files with 1450 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md -->
<!-- version: 9 -->
<!-- version: 10 -->
# Plan `0.3.3` — Store/PostgreSQL RawTransaction vertical slice
@@ -32,15 +32,17 @@ Tranches techniques validées :
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
0.3.3-pre.007 + fix.001 — archive, purge, compare-and-transition et rejet Compacted
0.3.3-pre.008 + fix.001 — six capabilities PostgreSQL + dispatch façade
```
Tranche technique courante :
```text
0.3.3-pre.007archive, purge, compare-and-transition et rejet Compacted
0.3.3-pre.009preuve PostgreSQL live complète RawTransaction
```
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`.
Les gates opérateur jusqu'à `pre.008-fix.001` sont verts. `pre.009` n'ajoute aucun comportement métier ni migration : elle matérialise la preuve PostgreSQL réelle opt-in de la vertical slice complète, y compris concurrence, pagination, rétention/rehydrate et rollback/cancellation.
## 2. Sources et autorité
@@ -1170,6 +1172,22 @@ Tranche matérialisée :
- rétention/rehydrate ;
- rollback/cancellation.
Tranche matérialisée :
- nouveau test `postgres_raw_transaction_live`, `#[ignore]`, URI dédiée lue uniquement sur `stdin` et jamais affichée ;
- refus de démarrer si une table KSP V000/V001 existe déjà ; cleanup uniquement après preuve d'absence initiale ;
- bootstrap V000/V001, réouverture idempotente et refus d'un réseau différent ;
- suppression contrôlée de l'index business puis preuve `schema_autoupdate=false` bloquante / `schema_autoupdate=true` réparatrice ;
- insert canonical + observation, get exact et observation round-trip ;
- insert identique et divergent en vraies tâches concurrentes ;
- collision d'observation et preuve de rollback du canonical ;
- pagination multi-page sur slots ex æquo, ASC/DESC, cursor rejoué sous direction/range différente ;
- `Full -> Archived -> Purged`, tombstone, normal skip, ForceRehydrate compatible/divergent, rejet `Compacted` ;
- races concurrentes archive/purge puis rehydrate ;
- cancellation réelle : verrou PostgreSQL sur l'observation, acquisition bloquée après ouverture transactionnelle, `JoinHandle::abort`, puis preuve que le canonical non committé est absent ;
- réouverture finale et lecture d'un canonical durable ;
- aucune ressource V000/V001 modifiée.
### `0.3.3-pre.010` — hardening/completeness
- scans boundaries ;

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md -->
<!-- version: 13 -->
<!-- version: 14 -->
# Validation `0.3.3` — Store/PostgreSQL RawTransaction vertical slice
@@ -622,11 +622,24 @@ cap 500/1000 dans Store pagination
- `--no-default-features` : PASS ;
- V000/V001 inchangées ;
- premier gate opérateur : fonctionnellement PASS mais deux warnings Clippy `extra_unused_type_parameters` dans les helpers de preuve de traits ;
- `pre.008-fix.001` matérialise `T` via `PhantomData<T>` dans ces deux helpers sans modifier les bounds, la production ni les migrations ; gate opérateur complet à rejouer.
- `pre.008-fix.001` matérialise `T` via `PhantomData<T>` dans ces deux helpers sans modifier les bounds, la production ni les migrations ; gate opérateur complet PASS le 2026-08-30.
### `pre.009`
- PostgreSQL live opt-in complet.
- test `postgres_raw_transaction_live` dédié et `#[ignore]` : MATÉRIALISÉ ;
- base dédiée obligatoire, refus de toute table KSP préexistante, URI lue sur `stdin` sans echo : PASS statique ;
- bootstrap V000/V001 + réouverture + wrong-network : COUVERT par le test, exécution réelle À FOURNIR ;
- réparation additive index avec `schema_autoupdate` off/on : COUVERTE par le test, exécution réelle À FOURNIR ;
- canonical+observation atomique + exact reads : COUVERT ;
- identical/divergent concurrent inserts : COUVERT en tâches `tokio::spawn` ;
- observation idempotence/divergence + rollback canonical sur conflit observation : COUVERT ;
- pagination multi-page/ties ASC-DESC + replay cursor autre direction/range : COUVERT ;
- archive/purge/tombstone/normal-skip/ForceRehydrate compatible-divergent/Compacted : COUVERT ;
- races archive et purge : COUVERT en tâches concurrentes ;
- cancellation : verrou observation PostgreSQL + acquisition bloquée + `abort()` + canonical absent après rollback : COUVERT ;
- réouverture finale : COUVERTE ;
- gate Cargo standard : NON EXÉCUTÉ dans l'environnement de génération ;
- test PostgreSQL réel `--ignored` : À EXÉCUTER côté opérateur.
### `pre.010`
@@ -648,7 +661,7 @@ cap 500/1000 dans Store pagination
- publication stable.
## 22. Gate courant `pre.008-fix.001`
## 22. Gate courant `pre.009`
```bash
cargo fmt --all