Files
2026-08-29 18:42:37 +02:00

3.8 KiB

Delta 0.3.2-pre.004 — Config std.store

1. Base requise

Base exacte :

0.3.2-pre.003-fix.001
workspace.package.version = 0.3.2-pre.3.fix.1

Le gate opérateur fourni le 29 août 2026 est entièrement vert : audits Rust/Markdown, cargo check, Clippy, tests Store avec et sans features par défaut, backend et compilation --no-default-features passent.

2. Objet

Matérialiser exclusivement la frontière Config de la fondation Store :

config/std.store.json
config/schemas/std.store.schema.json
config/examples/std.store.example.json
registry cfg.std.store / schema.std.store
KSP_SECRET_STORE_POSTGRES_URI
adapter Config -> ksp_store_lib::StoreSettings
provenance/sensitivity/redaction
resources desktop strictement nécessaires

Aucune connexion, pool physique, TLS connector, migration ou SQL n'est ajouté.

3. Graphe de dépendance

ksp-config-lib ajoute :

ksp-config-lib -> ksp-store-lib (default-features = false)

Config peut ainsi construire les types publics de settings sans forcer postgres. ksp-store-lib et ksp-store-postgres-lib restent interdits de dépendance vers Config.

4. Document V1

Le profil postgres_default sélectionne backend = postgres et fournit exactement les groupes connection_uri, pool, tls, bootstrap et shutdown_timeout_ms décidés en pre.001/pre.003. Les bornes JSON Schema reflètent les bornes runtime Store ; la validation runtime reste l'autorité finale.

Le connection_uri committed utilise :

${KSP_SECRET_STORE_POSTGRES_URI:-postgresql://localhost/ksp}

Le fallback reste classé Secret, donc la safe projection et Debug ne rendent jamais l'URI. L'adapter rejette aussi un URI literal ou provenant d'un namespace non secret, même si le JSON Schema l'accepte syntaxiquement.

5. Adapter

ResolvedStoreConfig possède la Config effective et un StoreSettings. Il expose un emprunt sûr et into_settings(self) pour transférer les settings au runtime. Aucun getter de l'URI n'est ajouté.

Mapping :

postgres -> StoreBackendSettings::Postgres
disabled -> PostgresTlsMode::Disabled
verify_full -> PostgresTlsMode::VerifyFull
ms -> Duration

Les erreurs du contrat Store sont projetées par domaine/code seulement, sans recopier de message ou de contexte arbitraire.

6. Packaging

prepare_packaged_runtime parcourt tout le registry Config. Les trois applications desktop qui utilisent cette préparation doivent donc embarquer les deux nouvelles resources runtime/schema. Leur inventaire passe de 11 à 13 resources. Aucun écran Store n'est ajouté.

7. Réconciliation du plan

Le prompt de démarrage et les conventions Config utilisent std.store.schema.json / std.store.example.json. Deux mentions store.schema.json / store.example.json du plan pre.001 étaient incohérentes ; elles sont corrigées au moment de la matérialisation, sans changement de contrat.

8. Version

workspace.package.version = 0.3.2-pre.4

9. Gate opérateur requis

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-config-lib
cargo test -p ksp-store-lib
cargo test -p ksp-store-lib --no-default-features
cargo check -p ksp-store-lib --no-default-features
cargo test -p ksp-app-config-desk
cargo test -p ksp-app-solprices-desk
cargo test -p ksp-app-wallet-desk
cargo tree -p ksp-config-lib --edges normal
cargo tree -p ksp-store-lib -e features

Les builds Tauri sont recommandés dans cette tranche car les resources packagées ont réellement changé.

10. Suite

Si le gate est vert, pre.005 ouvre la connexion PostgreSQL réelle, Deadpool et Rustls.