v0.3.2-pre.004
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Validation `0.3.2` — Store/PostgreSQL runtime foundation
|
||||
|
||||
@@ -72,6 +72,8 @@ Le gate opérateur de `pre.002`, fourni le 29 août 2026, confirme également le
|
||||
|
||||
Le gate opérateur de `pre.002-fix.001`, fourni le 29 août 2026, est entièrement vert et sans warning : audits Rust/Markdown, workspace check/Clippy, tests des deux crates et compilation `ksp-store-lib --no-default-features` passent. Cette base est l'entrée effective de `pre.003`.
|
||||
|
||||
Le gate opérateur de `pre.003-fix.001`, fourni le 29 août 2026, est entièrement vert : audits Rust/Markdown, workspace check/Clippy, tests `ksp-store-lib` avec et sans feature par défaut, tests backend et compilation `--no-default-features` passent. Cette base est l'entrée effective de `pre.004`.
|
||||
|
||||
## 3. Frontières Cargo
|
||||
|
||||
### V32-DEP-001 — Façade -> API
|
||||
@@ -154,7 +156,7 @@ Critère : `StoreSettings` est constructible sans `ksp-config-lib`, sans env et
|
||||
|
||||
Matérialisé par `pre.003` : `StoreSettings`, `StoreBackendSettings`, `PostgresStoreSettings`, pool/bootstrap/TLS typés, sans dépendance Config/serde/env.
|
||||
|
||||
Statut : `TODO gate opérateur pre.003`.
|
||||
Statut : `PASS pre.003-fix.001 opérateur`.
|
||||
|
||||
### V32-API-002 — Backend connu non compilé
|
||||
|
||||
@@ -162,7 +164,7 @@ Critère : `Postgres` reste un backend connu sans feature et `Store::open` écho
|
||||
|
||||
Matérialisé par `pre.003` : le test `feature_mismatch` appelle réellement `Store::open` sous `--no-default-features` et exige `store.backend_not_compiled`.
|
||||
|
||||
Statut : `TODO gate opérateur pre.003 / TODO pre.009 final`.
|
||||
Statut : `PASS pre.003-fix.001 opérateur / TODO pre.009 final`.
|
||||
|
||||
### V32-API-003 — Aucun type backend physique public
|
||||
|
||||
@@ -183,7 +185,7 @@ Critère : un consumer de `ksp-store-lib` accède aux contrats Store API utiles
|
||||
|
||||
`pre.003` réexporte explicitement les 60 symboles crate-root acquis de `ksp-store-api` depuis `ksp-store-lib`, sans glob et sans réexport backend.
|
||||
|
||||
Statut : `TODO gate opérateur pre.003 / TODO pre.009 exact exports`.
|
||||
Statut : `PASS pre.003-fix.001 opérateur / TODO pre.009 exact exports`.
|
||||
|
||||
### V32-API-005 — Lifecycle
|
||||
|
||||
@@ -199,7 +201,7 @@ Drop best-effort seulement
|
||||
|
||||
`pre.003` fixe les signatures `Store::open(settings).await` et `Store::close(self).await` et garde `Store` opaque/non constructible par un consumer. Aucun succès d'ouverture n'est simulé avant la connexion réelle : le backend compilé s'arrête avec `store.backend_open_failed` et le contexte sûr `runtime_foundation_pending`.
|
||||
|
||||
Statut : `TODO gate opérateur pre.003` pour les signatures et le staging ; `TODO pre.007` pour le shutdown physique borné.
|
||||
Statut : `PASS pre.003-fix.001 opérateur` pour les signatures et le staging ; `TODO pre.007` pour le shutdown physique borné.
|
||||
|
||||
## 5. Config ownership
|
||||
|
||||
@@ -215,7 +217,9 @@ profiles typés
|
||||
backend postgres explicite
|
||||
```
|
||||
|
||||
Statut : `TODO pre.004`.
|
||||
Matérialisé par `pre.004` avec `cfg.std.store` / `schema.std.store`, V1 profilée, backend PostgreSQL typé et example canonique.
|
||||
|
||||
Statut : `TODO gate opérateur pre.004`.
|
||||
|
||||
### V32-CONFIG-002 — Secrets/provenance
|
||||
|
||||
@@ -228,7 +232,9 @@ provenance sans valeur
|
||||
dotenv inventory à jour
|
||||
```
|
||||
|
||||
Statut : `TODO pre.004`.
|
||||
Matérialisé par `pre.004` : `KSP_SECRET_STORE_POSTGRES_URI` est inventorié, le fallback reste `Secret`, la safe projection est redacted et la provenance n'embarque aucune valeur.
|
||||
|
||||
Statut : `TODO gate opérateur pre.004`.
|
||||
|
||||
### V32-CONFIG-003 — No-env Store/backend
|
||||
|
||||
@@ -243,13 +249,17 @@ PG*
|
||||
.pgpass
|
||||
```
|
||||
|
||||
Statut : `TODO pre.004/pre.009`.
|
||||
`pre.004` renforce aussi le canari d'ownership avec les nouveaux filenames Store ; Store/backend restent sans dépendance Config et sans lecture KSP/KSPB.
|
||||
|
||||
Statut : `TODO gate opérateur pre.004 / TODO pre.009`.
|
||||
|
||||
### V32-CONFIG-004 — Adapter Config -> Store
|
||||
|
||||
Critère : `ksp-config-lib` seul transforme un profil résolu en `StoreSettings` et ne transmet aucun secret dans diagnostics.
|
||||
|
||||
Statut : `TODO pre.004`.
|
||||
Matérialisé par `pre.004` : seul `ksp-config-lib` dépend de `ksp-store-lib` avec `default-features = false` et construit `StoreSettings` sans forcer la feature backend.
|
||||
|
||||
Statut : `TODO gate opérateur pre.004`.
|
||||
|
||||
## 6. Pool et lifecycle PostgreSQL
|
||||
|
||||
@@ -497,13 +507,13 @@ Cas : zéro, inversion, dépassement bornes pour pool/connect/migration/close.
|
||||
|
||||
Les bornes backend-neutral décidées en `pre.001` sont matérialisées et couvertes par tests unitaires en `pre.003`. Le parsing PostgreSQL et les timeouts physiques restent à `pre.005`.
|
||||
|
||||
Statut : `TODO gate opérateur pre.003 / TODO pre.005 / TODO pre.009`.
|
||||
Statut : `PASS pre.003-fix.001 opérateur` pour les bornes backend-neutral / `TODO pre.005 / TODO pre.009` pour les timeouts physiques.
|
||||
|
||||
### V32-SEC-004 — Feature mismatch avant I/O
|
||||
|
||||
`pre.003` matérialise un canari d'intégration compilé avec et sans `postgres`. Sans feature, `Store::open` retourne le code stable `store.backend_not_compiled` avant tout chemin backend physique.
|
||||
|
||||
Statut : `TODO gate opérateur pre.003 / TODO pre.009`.
|
||||
Statut : `PASS pre.003-fix.001 opérateur / TODO pre.009`.
|
||||
|
||||
### V32-SEC-005 — Server error sanitization
|
||||
|
||||
|
||||
Reference in New Issue
Block a user