Files
2026-08-29 22:00:20 +02:00

5.0 KiB

Delta 0.3.2-pre.009 — hardening, completeness et dependency matrix

Base exacte

Cette tranche s'applique sur 0.3.2-pre.008.

Le 29 août 2026, le gate pre.008 est entièrement vert : audits Rust/Markdown, workspace check/Clippy, tests ksp-store-postgres-lib, façade avec et sans feature PostgreSQL et compilation --no-default-features passent. Le gate PostgreSQL réel opt-in passe également sur PostgreSQL 17 avec bootstrap initial/idempotent/concurrent, mismatch/recovery checksum, rollback transactionnel, health Ready, fermeture bornée et cleanup contrôlé.

Objet

Durcir et figer la fondation Store/PostgreSQL avant le gate technique final sans modifier le code de production, les migrations ou les dépendances runtime.

Canari façade

Nouveau fichier :

crates/ksp-store-lib/tests/hardening_completeness.rs

Il vérifie :

5 modules privés exacts
84 exports crate-root exacts
manifest runtime exact
feature postgres par défaut exacte
backend PostgreSQL toujours optionnel
aucune dépendance physique PostgreSQL dans la façade
canary secret redacted dans StoreSettings/Debug
URI malformed rejetée avant I/O
code ConfigInvalid avec postgres / BackendNotCompiled sans feature
aucun canary dans Display/Debug Error
aucune lecture Config/env/PG*/.pgpass
aucun Pool/Client/Row/Statement/SQL physique dans la façade

Le même test est conçu pour passer sous le feature set par défaut et sous --no-default-features.

Canari backend PostgreSQL

Nouveau fichier :

crates/ksp-store-postgres-lib/tests/hardening_completeness.rs

Il vérifie :

5 modules privés exacts
7 exports bridge exacts
9 dépendances physiques exactes du manifest
URI malformed rejetée avant I/O
URI > 4096 octets rejetée avant I/O
hostaddr sans host rejeté sous VerifyFull
options= libpq rejeté
canary password/URI absent de Debug/error backend
PostgresBackendError limité structurellement à kind + phase statique
PoolError::Backend(_) abandonne explicitement l'erreur remote
aucun rendu d'erreur externe dans runtime/migration/health
aucune lecture env/KSP/KSPB/PG*/.pgpass
aucun sslrootcert/sslcert/sslkey/.postgresql implicite
aucune capability PostgreSQL RawTransaction/RawAccount
V000 reste strictement metadata-only

Les cas hostiles sont tous forcés avant le premier .await physique et n'exigent donc aucun PostgreSQL réel.

Non-régression Store API

ksp-store-api n'est pas modifié. Le gate pre.009 rejoue explicitement ses tests, notamment tests/external_backend.rs, afin de confirmer qu'un backend externe peut toujours implémenter les dix capabilities RAW sans dépendre de ksp-store-lib ou de PostgreSQL.

Documentation de suivi

Le plan et la matrice validation sont réconciliés avec :

gates pre.006/pre.007 verts
pre.008 live vert sur PostgreSQL 17
scope exact des canaris pre.009
statuts hardening matérialisés mais non encore exécutés
commande de dependency matrix ciblée

Fichiers ajoutés

crates/ksp-store-lib/tests/hardening_completeness.rs
crates/ksp-store-postgres-lib/tests/hardening_completeness.rs
deltas/0.3.2/pre.009.md

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

Fichiers supprimés

Aucun.

Version

workspace.package.version = 0.3.2-pre.9

Aucun src/**, migration, Config, README/USAGE, CHANGELOG ou ROADMAP n'est modifié dans cette tranche.

Validations exécutées dans l'environnement de génération

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
contrôle statique de la version et du payload
contrôle statique des exports/manifests attendus
contrôle des chaînes interdites no-env/no-business

Cargo/rustc/rustfmt ne sont pas disponibles dans l'environnement de génération.

Gate opérateur

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-postgres-lib
cargo test -p ksp-store-lib
cargo test -p ksp-store-lib --no-default-features
cargo test -p ksp-config-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
cargo tree --duplicates

Le smoke PostgreSQL réel n'a pas besoin d'être rejoué dans pre.009 si aucun code runtime/migration n'a changé ; il sera rejoué au gate technique final pre.010.

Questions ouvertes

Aucune question fonctionnelle nouvelle. Tout échec des nouveaux canaris doit produire un correctif pre.009-fix.NNN avant pre.010.

Suite

Après gate vert : 0.3.2-pre.010 — gate technique final sans nouveau développement fonctionnel.