245 lines
6.5 KiB
Markdown
245 lines
6.5 KiB
Markdown
<!-- 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 l’environnement 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.
|