# Delta 0.3.13-pre.009-fix.002 — alignement du canari de disagreement canonique ## Base requise ```text livraison précédente : 0.3.13-pre.009-fix.001 Cargo base : 0.3.13-pre.9.fix.1 delta base : deltas/0.3.13/pre.009-fix.001.md archive delta base : ksp-general-0.3.13-pre.009-fix.001.zip ``` Le gate opérateur du 10 septembre 2026 confirme : ```text cargo fmt + --check : PASS audits Rust : clean / export completeness 0 Markdown : clean, 340 tables / 846 files cargo check --workspace : PASS Clippy strict workspace/all-targets/all-features : PASS Transport unit : 389/389 PASS Transport public API : 52/52 PASS Transport release completeness : 44/44 PASS Transport doc-tests : 4/4 PASS Transport smokes live opt-in : 5 ignored comme prévu Worker unit : 99/99 PASS Worker cross-layer : 4/4 PASS Worker dependency-boundary : 16/16 PASS Worker hardening : 22 PASS / 1 FAIL ``` La suite Worker s'arrête sur le canari : ```text v0_3_13_pre_008_cross_source_convergence_is_bounded_conflict_checked_and_private ``` Il exige encore l'ancienne chaîne d'implémentation : ```text known_hash_value != content_hash ``` Cette assertion est obsolète depuis `pre.009`, où l'état canonique de convergence compare désormais ensemble `slot`, `block_time`, `format_id`, `format_version` et `content_hash` via `RawTransactionIngestCanonicalState`. `public_api`, `release_completeness` et les doc-tests Worker ne sont donc pas déclarés PASS pour ce gate, car l'exécution s'arrête sur `hardening`. ## Objectif du fix Corriger uniquement le canari historique `pre.008` afin qu'il vérifie le conflit canonique actuel sans revenir à une comparaison hash-only : ```text ancienne preuve : known_hash_value != content_hash nouvelle preuve : known_state_value != &canonical_state ``` Le canari continue à exiger la borne du cache, l'éviction uniquement des entrées non partagées, le passage par `record_observation` et le fail-closed d'une observation additionnelle impossible. Aucune source production n'est modifiée. ## Immutabilité des deltas Les deltas déjà livrés sont immuables. Ce fix n'altère aucun fichier `deltas/` existant, y compris : ```text deltas/0.3.13/pre.009.md deltas/0.3.13/pre.009-fix.001.md ``` La correction est tracée uniquement par le nouveau fichier `deltas/0.3.13/pre.009-fix.002.md`. La modification de `pre.009.md` qui avait été incluse dans `pre.009-fix.001` reste une exception historique déjà acceptée par l'opérateur ; elle n'est ni répétée ni réécrite dans ce fix. ## Version ```text livraison : 0.3.13-pre.009-fix.002 workspace.package.version : 0.3.13-pre.9.fix.2 archive : ksp-general-0.3.13-pre.009-fix.002.zip ``` `Cargo.toml` passe de la version de fichier `557` à `558`. ## Fichiers modifiés ```text Cargo.toml crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs ``` `hardening.rs` passe de la version de fichier `20` à `21`. ## Fichiers ajoutés ```text deltas/0.3.13/pre.009-fix.002.md ``` ## Fichiers supprimés ```text aucun ``` ## Validations exécutées dans l'environnement d'assemblage Le toolchain Rust/Cargo/Rustfmt n'est pas disponible dans l'environnement d'assemblage. Les commandes Cargo post-fix restent donc `NON EXÉCUTÉ LOCAL`. Sont exécutés avant packaging : ```text scripts/audit_rust_workspace_rules.py audit Markdown complet scan des définitions normatives diff exact contre la base pre.009-fix.001 contrôle d'immutabilité byte-for-byte de tous les deltas existants contrôle du manifest et du contenu extrait de l'archive ``` ## Décisions - le runtime `pre.009` reste inchangé ; - le disagreement canonique reste fondé sur l'état canonique complet, pas sur le seul hash ; - aucun delta historique n'est modifié ; - aucune dépendance ni feature ne change ; - aucun `cargo tree` n'est requis pour ce fix. ## Questions ouvertes ```text aucune ``` ## Gate opérateur requis avant pre.010 ```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-worker-raw-transaction-ingest-lib ``` Le test Transport n'a pas besoin d'être répété pour ce fix, qui ne modifie ni Transport, ni source production, ni dépendance, ni feature.