6.5 KiB
Delta 0.3.2-pre.002 — scaffold Store runtime/PostgreSQL et feature graph
1. Base requise
0.3.2-pre.001
Le gate opérateur de pre.001 est fourni vert :
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 :
ksp-store-lib
ksp-store-postgres-lib
3. Version
Le workspace passe à :
0.3.2-pre.2
Les deux crates sont ajoutées aux membres du workspace.
4. Graphe matérialisé
ksp-store-lib
├── ksp-store-api
└── [default feature postgres]
└── ksp-store-postgres-lib
└── ksp-store-api
Invariants :
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 :
[features]
default = ["postgres"]
postgres = ["dep:ksp-store-postgres-lib"]
ksp-store-postgres-lib reste une optional dependency de la façade afin que :
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 :
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 :
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 :
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 :
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 :
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
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
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
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
aucun
12. Validations exécutées dans l'environnement de génération
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 :
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é
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.