3.7 KiB
Delta 0.3.16-pre.005-fix.001 — conformité Clippy et canari de scope pre.005
Base requise
0.3.16-pre.005 appliquée
workspace.package.version = 0.3.16-pre.5
Le gate opérateur de pre.005 confirme que les audits Rust/export/KSP/Markdown sont propres, que cargo check --workspace passe et que les suites ciblées exécutées sont fonctionnellement vertes à l'exception d'un canari PostgreSQL devenu obsolète. Clippy -D warnings refuse toutefois treize usages de l'opérateur ? sous la règle workspace clippy::question_mark_used : dix dans le scanner JSON privé du comparateur et trois dans ses helpers de tests.
Le seul échec de test est v0_3_16_pre_004_keeps_comparator_and_durable_conflict_scope_deferred, qui interdit encore toute référence à RawTransactionVariantRelation:: alors que pre.005 a précisément introduit le comparateur partagé et ses relations dans le chemin PostgreSQL.
Version
Cette correction modifie du Rust :
workspace.package.version = 0.3.16-pre.5.fix.1
Corrections
Le correctif ne modifie aucune règle métier du comparateur :
- les dix propagations
Optionpar?du scanner JSON privé sont remplacées par desmatchexplicites qui retournentNonesur le même chemin d'échec ; - les trois usages
?des helpers de tests Store API sont remplacés par les mêmes retours explicites ; - aucune autorisation locale
#[allow(clippy::question_mark_used)]n'est ajoutée ; - aucune dépendance runtime n'est ajoutée à
ksp-store-api; - le canari V003 hérité de
pre.004est mis à jour pour exiger désormais l'appel àksp_store_api::compare_raw_transaction_variantset les relationsCompatibleLessComplete/CompatibleMoreComplete; - ce même canari continue d'interdire l'écriture dans
ksp_raw_transaction_conflictset toute promotion du selector canonique avant les tranches prévues.
Invariants conservés
La sémantique de pre.005 reste inchangée :
Exact -> idempotence canonique
CompatibleLessComplete -> canonique conservé, variante entrante persistée/rattachée
CompatibleMoreComplete -> reconnue mais fail-closed jusqu'à pre.006
Conflict / Incomparable -> conflit existant sans conflict case durable avant pre.007
La preuve logMessages reste strictement bidirectionnelle, avec marqueur exact "Log truncated", unique et terminal, préfixe byte-identique et matériel supplémentaire obligatoire du côté complet.
Aucune migration SQL, ressource V003, promotion canonique, canonical_revision, journal de transition ou conflit durable n'est modifié par ce fix.
Validation exécutée lors de la génération
Les scripts Python réels du checkout complet sont exécutés sur l'état final puis sur le ZIP rejoué sur une copie fraîche de pre.005.
Le toolchain Rust n'est pas disponible dans l'environnement de génération ; les gates Cargo restent opérateur.
Validation opérateur demandée
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-api --all-targets --all-features
cargo test -p ksp-store-postgres-lib --all-targets --all-features
Les trois preuves PostgreSQL live restent opt-in.
Suite
Après gate propre : 0.3.16-pre.006 — selector canonique, promotion atomique de CompatibleMoreComplete, canonical_revision, projection V001 cohérente et conservation de l'ancien canonique.