v0.3.2-pre.002

This commit is contained in:
2026-08-29 16:48:16 +02:00
parent 8d4b3b67fb
commit 153014be9d
12 changed files with 452 additions and 9 deletions

244
deltas/0.3.2/pre.002.md Normal file
View File

@@ -0,0 +1,244 @@
<!-- file: deltas/0.3.2/pre.002.md -->
<!-- version: 1 -->
# Delta `0.3.2-pre.002` — scaffold Store runtime/PostgreSQL et feature graph
## 1. Base requise
```text
0.3.2-pre.001
```
Le gate opérateur de `pre.001` est fourni vert :
```text
cargo fmt --all PASS
audit Rust général / exports / workspace PASS
audit Markdown PASS — 186 tables / 124 files
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
```
## 2. Objectif
Créer uniquement les deux crates runtime prévues par le plan `0.3.2` et matérialiser le feature graph PostgreSQL sans avancer les settings, la Config Store, la connexion, le pool, TLS, les migrations ou les vertical slices RAW.
Crates créées :
```text
ksp-store-lib
ksp-store-postgres-lib
```
## 3. Version
Le workspace passe à :
```text
0.3.2-pre.2
```
Les deux crates sont ajoutées aux membres du workspace.
## 4. Graphe matérialisé
```text
ksp-store-lib
├── ksp-store-api
└── [default feature postgres]
└── ksp-store-postgres-lib
└── ksp-store-api
```
Invariants :
```text
ksp-store-postgres-lib -X-> ksp-store-lib
ksp-store-lib -X-> Config/Transport/Program/Materializer
ksp-store-postgres-lib -X-> Config/Transport/Program/Materializer
```
Feature exacte :
```toml
[features]
default = ["postgres"]
postgres = ["dep:ksp-store-postgres-lib"]
```
`ksp-store-postgres-lib` reste une optional dependency de la façade afin que :
```text
cargo check -p ksp-store-lib --no-default-features
```
puisse compiler sans backend PostgreSQL.
## 5. Dépendances volontairement différées
`pre.002` n'ajoute pas encore :
```text
ksp-logging-lib
tokio
tokio-postgres
deadpool-postgres
tokio-postgres-rustls
rustls
sha2
```
Ce n'est pas une remise en cause du graphe cible du plan 023. Aucun comportement de production ne consomme encore ces crates dans le scaffold ; les ajouter maintenant violerait le contrat selon lequel une dépendance de package correspond à un usage réel.
Le séquencement reste :
```text
ksp-logging-lib façade lors du premier comportement Store réel
ksp-logging-lib backend lors du premier comportement PostgreSQL réel
tokio/driver/pool/TLS pre.005
sha2 pre.006
```
Les deux crates possèdent cependant dès maintenant leur `src/constants.rs` et le `TRACING_TARGET` crate-owned attendu, sans émission de log artificielle.
## 6. Surface Rust
`ksp-store-lib` reste un scaffold sans API runtime publique. Il ne matérialise pas encore :
```text
Store
StoreSettings
StoreBackendSettings
PostgresStoreSettings
StoreBackendKind
errors Store runtime
reexports ksp-store-api
```
Ces éléments restent réservés à `pre.003`.
`ksp-store-postgres-lib` n'expose encore aucun type backend public et ne contient aucun driver, pool, SQL, migration ou health runtime.
Aucun `pub mod` n'est introduit.
## 7. Canaris ajoutés
### `ksp-store-lib`
`tests/dependency_boundary.rs` vérifie :
```text
default feature postgres exact
optional backend dependency exacte
façade -> ksp-store-api
absence Config/Transport/Program/Materializer
absence driver/pool/TLS prématurés
absence de settings/Store/backend types publics en pre.002
TRACING_TARGET possédé par constants.rs
```
### `ksp-store-postgres-lib`
`tests/dependency_boundary.rs` vérifie :
```text
backend -> ksp-store-api
absence backend -> ksp-store-lib
absence Config/Transport/Program/Materializer
absence Tokio/tokio-postgres/Deadpool/Rustls/SHA-256
absence SQL/migration/runtime surface prématurée
TRACING_TARGET possédé par constants.rs
```
## 8. Documentation mise à jour
```text
docs/plans/023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md
docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md
```
Le plan marque le scaffold comme matérialisé et précise le staging des dépendances runtime. La validation conserve les critères Cargo en `TODO` tant que le gate opérateur de cette tranche n'a pas été fourni.
## 9. Fichiers ajoutés
```text
crates/ksp-store-lib/Cargo.toml
crates/ksp-store-lib/src/constants.rs
crates/ksp-store-lib/src/lib.rs
crates/ksp-store-lib/tests/dependency_boundary.rs
crates/ksp-store-postgres-lib/Cargo.toml
crates/ksp-store-postgres-lib/src/constants.rs
crates/ksp-store-postgres-lib/src/lib.rs
crates/ksp-store-postgres-lib/tests/dependency_boundary.rs
deltas/0.3.2/pre.002.md
```
## 10. Fichiers modifiés
```text
Cargo.toml
docs/plans/023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md
docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md
```
## 11. Fichiers supprimés
```text
aucun
```
## 12. Validations exécutées dans l'environnement de génération
```text
python3 scripts/audit_rust_workspace_rules.py
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.2
Markdown table audit: clean (186 tables, 125 files)
```
Une validation statique complémentaire des manifests/features confirme également le graphe exact attendu et les deux canaris de frontière ont été rejoués par équivalent textuel dans lenvironnement sans Cargo.
## 13. Validations opérateur requises
`cargo`, `rustc` et `rustfmt` ne sont pas disponibles dans l'environnement de génération. Après application :
```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-api
cargo test -p ksp-store-lib
cargo test -p ksp-store-postgres-lib
cargo check -p ksp-store-lib --no-default-features
cargo tree -p ksp-store-lib --edges normal
cargo tree -p ksp-store-lib -e features
cargo tree -p ksp-store-postgres-lib --edges normal
```
Une commande non exécutée n'est pas déclarée PASS.
## 14. Hors scope confirmé
```text
StoreSettings / backend selection runtime
STORE_BACKEND_NOT_COMPILED
Config std.store
URI/secrets Store
connexion PostgreSQL
pool Deadpool
TLS Rustls
migrations/bootstrap
health/readiness runtime
SQL métier
RawTransaction PostgreSQL
RawAccountState PostgreSQL
```
## 15. Suite
`0.3.2-pre.003` matérialise les settings backend-neutral, l'identité/sélection de backend, les erreurs stables de façade et le lifecycle contract `Store` sans encore ouvrir la connexion PostgreSQL lourde.