# Delta `0.3.3-pre.003-fix.003` — clôture Clippy et relocalisation du canari live V000 ## 1. Base et objectif Ce correctif s’applique **par-dessus `0.3.3-pre.003-fix.002`**. Son gate opérateur confirme que les audits Rust/Markdown, `cargo check` jusqu’au backend et les tests Config/ownership sont désormais propres, mais révèle trois défauts résiduels strictement locaux : 1. une variable `name` décodée mais non utilisée dans l’inventaire des indexes uniques ; 2. cinq usages de l’opérateur `?` dans `expected_constraint_definition`, interdits par la policy workspace `clippy::question_mark_used = deny` ; 3. le test opt-in `postgres_foundation_live.rs` référence encore l’ancien fichier monolithique V000 supprimé par `fix.001`. Un warning Clippy de test (`assert!(false, ...)`) est également supprimé afin de garder le gate sans bruit. Version workspace après application : ```text 0.3.3-pre.3.fix.3 ``` Identifiant de livraison : ```text 0.3.3-pre.003-fix.003 ``` ## 2. Correctifs ### 2.1 Introspection catalogue Le nom d’index décodé mais inutilisé est explicitement marqué `_name`. Le comportement reste inchangé : tout index unique externe non adossé à une contrainte reste incompatible. ### 2.2 Policy Clippy `question_mark_used` `expected_constraint_definition` conserve exactement sa sémantique `Option`, mais remplace les cinq propagations `?` par des `match` explicites retournant `None` lorsque la ressource SQL ne peut pas être découpée selon le contrat attendu. ### 2.3 Canari unitaire L’assertion constante `assert!(false, ...)` est remplacée par une assertion sur `resource.is_some()`, puis un `match` non paniquant pour satisfaire simultanément le canari et la policy KSP. ### 2.4 Test PostgreSQL live V000 Le `include_str!` du test opt-in suit maintenant le déplacement effectué dans `fix.001` : ```text crates/ksp-store-postgres-lib/migrations/v000_bootstrap/tables/001_ksp_store_schema_migrations.sql ``` Aucun comportement live supplémentaire n’est ajouté. ### 2.5 Documentation backend Le README et l’USAGE du backend sont réconciliés avec l’arborescence versionnée introduite par `fix.001`; ils ne présentent plus les anciens fichiers monolithiques supprimés comme artefacts actifs. ## 3. Invariants inchangés Aucune ressource SQL n’est modifiée. Les checksums restent : ```text V000 d29068b8c13b9dc0cc9ef6aaadd0fa12d41e0fe4c56541a1118c4bfc846a1450 V001 31488cda2f08f3f46c4cdbdbb6c18c243662fada02eac4487040c8735d72cc51 ``` Le contrat `schema_autocreate` / `schema_autoupdate`, l’introspection physique, le binding réseau et les 40 ressources V001 ne changent pas. ## 4. Fichiers modifiés - `Cargo.toml` - `crates/ksp-store-postgres-lib/README.md` - `crates/ksp-store-postgres-lib/USAGE.md` - `crates/ksp-store-postgres-lib/src/schema.rs` - `crates/ksp-store-postgres-lib/tests/postgres_foundation_live.rs` - `crates/ksp-store-postgres-lib/unit_tests/schema.rs` - `docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md` ## 5. Fichier ajouté - `deltas/0.3.3/pre.003-fix.003.md` ## 6. Suppressions Aucune suppression supplémentaire. Les suppressions de `fix.001` restent acquises : ```text crates/ksp-store-postgres-lib/migrations/V000__bootstrap.sql crates/ksp-store-postgres-lib/migrations/V001__raw_transaction.sql ``` ## 7. Gate opérateur Après extraction par-dessus `fix.002` : ```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.3 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 test -p ksp-config-lib cargo check -p ksp-store-lib --no-default-features ``` Le correctif n’est validé qu’après gate opérateur entièrement vert.