Files
khadhroony-solana-project/deltas/0.3.2/pre.002.md
2026-08-29 16:48:16 +02:00

245 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 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.