3.8 KiB
Delta 0.3.16-pre.006-fix.001 — réalignement du canari de promotion
Base requise
0.3.16-pre.006 appliqué
workspace.package.version = 0.3.16-pre.6
Le gate opérateur de pre.006 est propre jusqu'aux tests ksp-store-postgres-lib. La suite unitaire exécute 87 tests et échoue sur un seul canari hérité de pre.005 :
v0_3_16_pre_005_shared_comparator_rejects_unproved_shapes_and_defers_more_complete_promotion
Les 86 autres tests PostgreSQL exécutés avant l'arrêt sont verts. Les audits Rust/export/KSP/Markdown, cargo check --workspace, Clippy -D warnings et toute la suite ksp-store-api sont également verts dans le gate fourni.
Version
Le correctif modifie un test Rust et synchronise donc la version Cargo :
workspace.package.version = 0.3.16-pre.6.fix.1
Objectif
Réaligner le canari PostgreSQL hérité de pre.005 sur le contrat désormais implémenté par pre.006 sans modifier le runtime.
pre.005 avait volontairement reconnu :
CompatibleMoreComplete
mais différé sa promotion et attendait encore un conflit côté backend PostgreSQL.
pre.006 a précisément fermé ce différé : compare_existing_transaction(...) projette maintenant cette relation vers :
ExistingTransactionMatch::ActiveCompatibleMoreComplete
Le test ancien continuait pourtant d'exiger :
raw_acquisition_content_conflict
Le défaut est donc exclusivement un canari obsolète, pas une régression de la promotion canonique.
Correction
Le test concerné conserve toutes ses assertions fail-closed sur les formes non prouvées : mauvais préfixe, matériel après marqueur, différence d'un autre champ metadata et faux marqueur de troncature ne doivent toujours produire ni CompatibleLessComplete ni CompatibleMoreComplete.
Pour le seul cas bidirectionnel réellement prouvé — canonique tronqué et entrant strictement plus complet — le test exige désormais :
std::result::Result::Ok(
ExistingTransactionMatch::ActiveCompatibleMoreComplete
)
Le nom du test est avancé vers pre.006 afin de ne plus documenter le comportement différé de pre.005.
Fichiers modifiés
Cargo.toml
crates/ksp-store-postgres-lib/unit_tests/raw_transaction.rs
Fichier ajouté
deltas/0.3.16/pre.006-fix.001.md
Fichiers supprimés
aucun
Validations exécutées lors de la génération
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
Le toolchain Rust n'est pas installé dans l'environnement de génération. cargo fmt, cargo check, Clippy et les tests Cargo ne sont donc pas déclarés exécutés ici.
Validations opérateur demandées
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
Décisions prises
- aucune logique runtime de
pre.006n'est modifiée ; - les cas non prouvés restent fail-closed ;
CompatibleMoreCompletedoit être accepté par la comparaison backend afin que le chemin atomique de promotion depre.006puisse s'exécuter ;- le correctif reste strictement borné au canari obsolète qui bloquait le gate.
Questions ouvertes
Aucune question bloquante.
Suite
Après gate propre : 0.3.16-pre.007 — conflit durable minimal + intégration Worker non terminale.