Files
khadhroony-solana-project/deltas/0.3.16/pre.005-fix.001.md
2026-09-21 19:31:35 +02:00

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 Option par ? du scanner JSON privé sont remplacées par des match explicites qui retournent None sur 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.004 est mis à jour pour exiger désormais l'appel à ksp_store_api::compare_raw_transaction_variants et les relations CompatibleLessComplete / CompatibleMoreComplete ;
  • ce même canari continue d'interdire l'écriture dans ksp_raw_transaction_conflicts et 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.