v0.3.2-pre.008
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# Plan `0.3.2` — Store/PostgreSQL runtime foundation
|
||||
|
||||
@@ -863,7 +863,7 @@ Mesures : conversion immédiate vers code KSP + contexte allowlisté ; source er
|
||||
|
||||
## 16. PostgreSQL integration test réel
|
||||
|
||||
Le test opt-in sera dans `ksp-store-postgres-lib/tests/` et ignoré par défaut.
|
||||
Le test opt-in est matérialisé par `ksp-store-postgres-lib/tests/postgres_foundation_live.rs` et reste ignoré par défaut.
|
||||
|
||||
Entrée :
|
||||
|
||||
@@ -891,13 +891,15 @@ second bootstrap idempotent
|
||||
deux bootstrap concurrents après reset contrôlé
|
||||
corruption test-only du checksum sentinel -> mismatch explicite
|
||||
restore/reset contrôlé
|
||||
migration failure injectée sous cfg(test) -> rollback/history inchangée
|
||||
échec SQL contrôlé dans une transaction de test exécutant le V000 exact -> drop implicite de `tokio-postgres::Transaction` -> rollback DDL/history prouvé
|
||||
health ready
|
||||
close explicite borné
|
||||
cleanup metadata
|
||||
```
|
||||
|
||||
Le gate de référence visera PostgreSQL 18.6. Le test peut accepter un serveur >= 15, mais le rapport opérateur doit enregistrer le major réellement utilisé sans imprimer d'identité sensible.
|
||||
Le gate de référence visera PostgreSQL 18.6. Le test accepte un serveur >= 15, n'imprime que le major et refuse tout serveur plus ancien. La connexion d'administration du test et le backend live utilisent `Disabled` afin que ce gate porte sur la fondation PostgreSQL/migrations ; la policy TLS `VerifyFull` reste prouvée séparément par les canaris déterministes de `pre.005`. Le test ne lit aucune variable d'environnement.
|
||||
|
||||
La preuve de rollback n'ajoute aucun hook public ou feature de test à la crate de production : le test réutilise par `include_str!` le V000 committed exact, ouvre une transaction PostgreSQL, exécute le DDL et un sentinel transitoire, injecte ensuite une erreur SQL contrôlée puis droppe la transaction. `tokio-postgres 0.7.18` garantit le rollback implicite d'une `Transaction` droppée ; le test vérifie ensuite physiquement l'absence de la table metadata avant de relancer le bootstrap KSP normal.
|
||||
|
||||
## 17. Validation de dépendances et API
|
||||
|
||||
@@ -1018,7 +1020,7 @@ Avec les quatre codes PostgreSQL ajoutés en `pre.005` puis les trois codes migr
|
||||
|
||||
### `pre.007` — Composition end-to-end + health
|
||||
|
||||
Statut : matérialisé par `0.3.2-pre.007`, gate Cargo opérateur requis.
|
||||
Statut : matérialisé par `0.3.2-pre.007`, gate Cargo opérateur `PASS` le 2026-08-29.
|
||||
|
||||
La façade ferme la projection runtime/health sans exposer de type physique :
|
||||
|
||||
@@ -1036,7 +1038,28 @@ Avec `StoreHealthState`, `StoreRuntimeSnapshot`, `StoreHealthSnapshot` et `ERROR
|
||||
|
||||
### `pre.008` — PostgreSQL integration réelle
|
||||
|
||||
Ajouter/exécuter le smoke opt-in non destructif : initial/idempotent/concurrent/mismatch/failure/close sur serveur réel.
|
||||
Statut : test opt-in matérialisé par `0.3.2-pre.008`; compilation/gates déterministes puis exécution PostgreSQL réelle opérateur requises.
|
||||
|
||||
Le scénario `postgres_foundation_live` :
|
||||
|
||||
```text
|
||||
lit une URI dédiée uniquement depuis stdin
|
||||
refuse si ksp_store_schema_migrations existe avant le test
|
||||
refuse PostgreSQL < 15 et n'imprime que le major
|
||||
bootstrap initial + health Ready + close borné
|
||||
réouverture idempotente + health Ready
|
||||
reset contrôlé de la metadata possédée par le test
|
||||
deux bootstrap concurrents sérialisés par advisory lock
|
||||
corruption checksum sentinel -> MigrationMismatch
|
||||
restauration checksum -> recovery Ready
|
||||
reset contrôlé
|
||||
transaction test avec V000 exact + sentinel transitoire + erreur injectée
|
||||
Drop Transaction -> rollback implicite -> metadata absente
|
||||
re-bootstrap normal + health Ready + close borné
|
||||
cleanup uniquement de la metadata prouvée créée par le test
|
||||
```
|
||||
|
||||
Aucun hook test-only n'est ajouté au runtime de production et aucune table RAW métier n'est créée.
|
||||
|
||||
### `pre.009` — Hardening/completeness/dependency matrix
|
||||
|
||||
@@ -1109,12 +1132,7 @@ Store Desk
|
||||
|
||||
Aucune question architecturale ne bloque `pre.002`.
|
||||
|
||||
Les détails suivants sont réservés à leur tranche sans rouvrir les décisions du gate :
|
||||
|
||||
```text
|
||||
DDL précis de ksp_store_schema_migrations en pre.006
|
||||
forme finale des snapshots health en pre.007
|
||||
```
|
||||
Les décisions foundation encore ouvertes après `pre.008` sont uniquement des preuves de hardening/completeness et de clôture ; le DDL metadata, le health/readiness et la stratégie du test PostgreSQL réel sont désormais matérialisés.
|
||||
|
||||
Toute découverte qui exigerait :
|
||||
|
||||
|
||||
Reference in New Issue
Block a user