# Delta `0.3.16-pre.003` — PostgreSQL V003 RAW transaction variants ## Base requise ```text 0.3.16-pre.002-fix.001 appliquée workspace.package.version = 0.3.16-pre.2.fix.1 ``` Le gate opérateur de la base est confirmé propre : audits Rust/export/KSP/Markdown, `cargo check --workspace`, Clippy `-D warnings` et toutes les suites `ksp-store-api` passent. ## Version Cette tranche contient du Rust et du schéma PostgreSQL : ```text workspace.package.version = 0.3.16-pre.3 ``` ## Portée Cette tranche livre uniquement la fondation physique V003. Elle ne branche encore aucune écriture métier multi-variante. V003 ajoute : - `ksp_raw_transaction_variants` ; - `ksp_raw_transaction_canonical_selectors` ; - `ksp_raw_transaction_observation_variants` ; - `ksp_raw_transaction_conflicts` ; - dix-huit contraintes physiques et trois index non uniques ; - un checksum V003 stable calculé par le même domaine `ksp-migration-resources-v1` ; - un bootstrap d'extension privé qui conserve le moteur V000-V002 et applique V003 avec la même clé et le même protocole d'advisory-lock ; - une garde de concurrence qui n'appelle plus le moteur legacy lorsqu'une base est déjà V002 et absorbe uniquement la course où un pair vient de terminer V003 ; - une politique `schema_autoupdate=false` qui valide d'abord l'historique existant avant de rendre `migration_pending`, tout en autorisant la création complète d'une base fraîche ; - des canaris unitaires et d'intégration pour la version courante, le checksum, l'ordre des resources et la frontière de migration. ## Invariants `src/migration.rs`, `src/schema.rs` et les ressources SQL V000/V001/V002 ne sont pas modifiés par ce delta. Les checksums historiques restent : ```text V000 d29068b8c13b9dc0cc9ef6aaadd0fa12d41e0fe4c56541a1118c4bfc846a1450 V001 31488cda2f08f3f46c4cdbdbb6c18c243662fada02eac4487040c8735d72cc51 V002 ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac59bdb550e V003 3c9cf41877c96944a378abb41ee7a8d8ab7f99fc6dc2bb7a26c295cf8f9fc914 ``` `content_hash` n'est jamais `UNIQUE` et ne constitue pas une preuve d'égalité métier. La migration V003 est schema-only : aucun `INSERT` de variantes, aucun rattachement artificiel des observations historiques et aucun `UPDATE` de la projection V001 n'est réalisé. Le bootstrap métier des identités existantes appartient à `pre.004`. ## Validation demandée ```bash cargo fmt --all cargo fmt --all -- --check 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 cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-store-postgres-lib --all-targets --all-features ``` Les tests PostgreSQL live restent opt-in et ne sont pas requis pour ce gate de schéma statique ; `pre.004` ajoutera les preuves backend de bootstrap/écriture sur base réelle. ## Suite Après gate propre : `0.3.16-pre.004` — backend PostgreSQL V003, bootstrap paresseux de l'identité, ledger de variantes, rattachement exact des nouvelles observations, idempotence et concurrence d'insertion.