v0.3.2-pre.007
This commit is contained in:
165
deltas/0.3.2/pre.007.md
Normal file
165
deltas/0.3.2/pre.007.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<!-- file: deltas/0.3.2/pre.007.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.2-pre.007` — composition runtime et health/readiness portable
|
||||
|
||||
## 1. Base
|
||||
|
||||
Base exacte : `0.3.2-pre.006`.
|
||||
|
||||
Le gate opérateur du 29 août 2026 est entièrement vert : audits Rust/Markdown, workspace check/Clippy, tests `ksp-store-postgres-lib`, tests `ksp-store-lib` avec et sans feature PostgreSQL, compilation `--no-default-features` et graphes directs passent.
|
||||
|
||||
## 2. Objet
|
||||
|
||||
Fermer la composition runtime de la fondation PostgreSQL sans persistence métier :
|
||||
|
||||
```text
|
||||
StoreSettings
|
||||
-> Store::open
|
||||
-> PostgresBackend
|
||||
-> connexion/pool/TLS
|
||||
-> bootstrap/history
|
||||
-> Store prêt
|
||||
|
||||
Store::runtime_snapshot()
|
||||
-> projection synchrone sans I/O
|
||||
|
||||
Store::health().await
|
||||
-> readiness PostgreSQL légère et bornée
|
||||
-> projection portable/redacted
|
||||
```
|
||||
|
||||
## 3. Surface façade
|
||||
|
||||
`ksp-store-lib` ajoute :
|
||||
|
||||
```text
|
||||
StoreHealthState::{Ready, NotReady}
|
||||
StoreRuntimeSnapshot
|
||||
StoreHealthSnapshot
|
||||
Store::runtime_snapshot()
|
||||
Store::health().await
|
||||
store.postgres_health_failed
|
||||
```
|
||||
|
||||
`StoreRuntimeSnapshot` expose uniquement :
|
||||
|
||||
```text
|
||||
backend kind
|
||||
network logique
|
||||
pool capacity
|
||||
pool size
|
||||
pool available
|
||||
pool waiting
|
||||
```
|
||||
|
||||
`StoreHealthSnapshot` ajoute :
|
||||
|
||||
```text
|
||||
state
|
||||
migration version optionnelle
|
||||
pending migration count
|
||||
last safe ErrorCode optionnel
|
||||
```
|
||||
|
||||
La façade atteint 84 exports crate-root : 60 réexports `ksp-store-api` et 24 éléments runtime Store.
|
||||
|
||||
## 4. Bridge backend
|
||||
|
||||
`ksp-store-postgres-lib` ajoute uniquement les projections safe nécessaires au bridge :
|
||||
|
||||
```text
|
||||
PostgresBackendRuntimeSnapshot
|
||||
PostgresBackendHealthSnapshot
|
||||
```
|
||||
|
||||
Aucun `Pool`, `Client`, `Row`, `Statement`, URI, host, user, database, SQL ou texte serveur n'est exposé par ces snapshots.
|
||||
|
||||
Les compteurs Deadpool `max_size/size/available/waiting` sont saturés en `u32` avant de traverser le bridge.
|
||||
|
||||
## 5. Probe health
|
||||
|
||||
Le probe PostgreSQL reste privé au backend et exécute uniquement :
|
||||
|
||||
```text
|
||||
acquisition Deadpool bornée
|
||||
SELECT 1
|
||||
lecture de MAX(version) dans la metadata privée
|
||||
```
|
||||
|
||||
La deadline globale réutilise le `wait_timeout` configuré du pool ; un fallback interne de 5 secondes n'est utilisé que si ce timeout n'est pas présent dans le pool, état qui ne doit pas être produit par la construction KSP normale.
|
||||
|
||||
Classification :
|
||||
|
||||
```text
|
||||
probe/query/decode failure -> HealthFailed
|
||||
version absente/inférieure -> MigrationMismatch
|
||||
version supérieure -> SchemaNewer
|
||||
version attendue -> Ready
|
||||
```
|
||||
|
||||
La vérification complète nom/checksum reste celle de `Store::open`/bootstrap. Le health est volontairement un diagnostic léger, pas un second moteur de migration.
|
||||
|
||||
## 6. Sémantique readiness
|
||||
|
||||
`Store::open` ne change pas de sémantique : une instance n'est rendue qu'après connexion physique et bootstrap/history validés.
|
||||
|
||||
Le health sert ensuite à observer l'état courant : une panne transitoire produit `NotReady` avec un code KSP sûr, pas une erreur contenant du texte PostgreSQL.
|
||||
|
||||
Une instance reste attachée à exactement un réseau/target Store ; aucun routage ou multiplexage multi-réseaux n'est ajouté.
|
||||
|
||||
## 7. Scope négatif
|
||||
|
||||
Toujours absent de `0.3.2-pre.007` :
|
||||
|
||||
```text
|
||||
RawTransaction PostgreSQL
|
||||
RawAccountState PostgreSQL
|
||||
repository RAW
|
||||
SQL métier
|
||||
CORE/DECODE/SPECIALIZED
|
||||
health HTTP/service global
|
||||
scheduler/polling de health
|
||||
```
|
||||
|
||||
## 8. Tests/canaris
|
||||
|
||||
Les tests sans serveur couvrent :
|
||||
|
||||
```text
|
||||
projection pool safe/bornée
|
||||
Ready vs NotReady
|
||||
migration version/pending safe
|
||||
absence d'URI/SQL/credential dans les snapshots
|
||||
surface façade health crate-root
|
||||
bridge backend health crate-root
|
||||
frontières dépendances et absence de SQL métier
|
||||
```
|
||||
|
||||
La preuve réelle `Ready`, panne/mismatch et close reste au smoke PostgreSQL opt-in de `pre.008`.
|
||||
|
||||
## 9. Version
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.3.2-pre.7
|
||||
```
|
||||
|
||||
## 10. Gate opérateur
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.2
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test -p ksp-store-postgres-lib
|
||||
cargo test -p ksp-store-lib
|
||||
cargo test -p ksp-store-lib --no-default-features
|
||||
cargo check -p ksp-store-lib --no-default-features
|
||||
cargo tree -p ksp-store-postgres-lib --edges normal
|
||||
cargo tree -p ksp-store-lib --edges normal
|
||||
```
|
||||
|
||||
## 11. Suite
|
||||
|
||||
Après gate propre, `pre.008` ajoute le test PostgreSQL réel opt-in non destructif couvrant bootstrap initial/idempotent/concurrent, mismatch, rollback/failure, health Ready et close borné.
|
||||
Reference in New Issue
Block a user