# Delta `0.3.14-pre.009-fix.002` — garde Healthy explicite du snapshot ## Base requise ```text 0.3.14-pre.009-fix.001 workspace.package.version = 0.3.14-pre.9.fix.1 deltas/0.3.14/pre.009-fix.001.md présent ``` ## Objectif Corriger strictement le dernier canari `pre.009` en échec après `pre.009-fix.001`, sans modifier la politique fonctionnelle de health. ## Défaut observé Le gate opérateur de `0.3.14-pre.009-fix.001` valide les audits, `cargo check`, Clippy et les `143` unit tests, puis échoue sur un seul canari : ```text v0_3_14_pre_009_health_policy_is_present_future_coverage_gated_and_source_neutral required pre.009 health projection guard missing: snapshot.source_active == snapshot.source_total ``` ## Cause `pre.009-fix.001` a conservé exactement l'invariant mais l'a exprimé via les variables locales : ```text source_active == source_total ``` Le canari protège volontairement la forme explicite sur le snapshot : ```text snapshot.source_active == snapshot.source_total ``` ## Correction La branche `Healthy` de `health_for_state` utilise directement la condition protégée : ```text snapshot.source_active == snapshot.source_total ``` Les variables locales `source_active`, `source_total` et `source_failed` restent utilisées par la branche `Degraded`. La condition est strictement équivalente et n'introduit aucun changement runtime. ## Fichiers ajoutés ```text deltas/0.3.14/pre.009-fix.002.md ``` ## Fichiers modifiés ```text Cargo.toml crates/ksp-worker-raw-transaction-ingest-lib/src/snapshot.rs ``` ## Fichiers supprimés ```text aucun ``` ## Version Cargo Le correctif modifie du code Rust production ; conformément aux règles de versioning : ```text header Cargo.toml : 580 -> 581 workspace.package.version : 0.3.14-pre.9.fix.1 -> 0.3.14-pre.9.fix.2 ``` Version de fichier : ```text src/snapshot.rs : 7 -> 8 ``` ## Frontières préservées ```text aucune modification de TargetCoverage aucune modification du gap ledger aucune modification des coverage epochs aucune modification du continuity frontier aucune modification de la classification source-loss aucun respawn Worker aucun nouveau scheduler ou task aucun changement Transport aucune nouvelle requête HTTP aucune nouvelle dépendance ou feature aucun accès Config aucun Job Backfill aucun backend Store physique aucune croissance de surface publique ``` ## Validations exécutées ```text 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 vérification ciblée du canari snapshot.source_active == snapshot.source_total contrôle du diff exact contrôle d'inventaire ZIP unzip -t réapplication du delta sur la base pre.009-fix.001 et comparaison byte-à-byte ``` ## Validations non exécutées Le toolchain Rust/Cargo n'est pas disponible dans le sandbox de préparation. Le gate opérateur reste requis : ```text cargo fmt --all cargo fmt --all -- --check cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features ``` ## Décisions prises ```text corriger la forme explicite attendue plutôt que relâcher le canari ne pas ajouter de #[allow(...)] ne pas modifier la sémantique health validée par les unit tests pre.009 ``` ## Questions ouvertes ```text aucune pour ce correctif ```