v0.3.2-pre.002
This commit is contained in:
244
deltas/0.3.2/pre.002.md
Normal file
244
deltas/0.3.2/pre.002.md
Normal 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 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.
|
||||
Reference in New Issue
Block a user