4.6 KiB
Delta 0.3.14-pre.009-fix.001 — rétablissement des canaris de health multi-source
Base requise
0.3.14-pre.009
workspace.package.version = 0.3.14-pre.9
deltas/0.3.14/pre.009.md présent
Objectif
Corriger strictement les deux échecs de tests/hardening.rs observés après pre.009, sans modifier la politique fonctionnelle de health :
rendre explicite le garde source_active < source_total attendu par le canari historique pre.010
rendre explicite le pont aggregate.with_continuity_health attendu par le canari pre.009
préserver exactement Healthy / Degraded / Unhealthy / Faulted et les preuves de continuité de pre.009
Défaut observé
Le gate opérateur de 0.3.14-pre.009 a produit :
cargo fmt --all : PASS
cargo fmt --all -- --check : PASS
audit Rust workspace rules : PASS
audit Markdown tables : PASS
cargo check --workspace : PASS
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features : FAIL
Les suites précédant hardening passent, dont 143 unit tests. Deux canaris textuels échouent :
v0_3_13_pre_010_multi_source_health_is_conservative_counted_and_redacted
required pre.010 health guard missing: source_active < source_total
v0_3_14_pre_009_health_policy_is_present_future_coverage_gated_and_source_neutral
required pre.009 inventory-health bridge missing: aggregate.with_continuity_health
Cause
Les deux invariants sont présents sémantiquement mais ne sont plus visibles sous les formes textuelles exactes attendues par les canaris :
snapshot.source_active < snapshot.source_total
aggregate\n .with_continuity_health(...)
Le hardening recherche volontairement les formes explicites historiques afin de protéger les invariants de health et le pont Inventory -> Continuity -> Snapshot.
Correction
health_for_state matérialise des variables locales source-neutres :
source_total
source_active
source_failed
La condition Degraded exprime donc explicitement :
source_active < source_total
Le pont de projection matérialise ensuite :
let aggregate = aggregate.with_continuity_health(...)
avant d'ajouter failed_source_losses_reconciled.
Ces changements sont algébriquement équivalents au code de pre.009 et ne changent aucune décision runtime.
Fichiers ajoutés
deltas/0.3.14/pre.009-fix.001.md
Fichiers modifiés
Cargo.toml
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime_resources.rs
crates/ksp-worker-raw-transaction-ingest-lib/src/snapshot.rs
Fichiers supprimés
aucun
Version Cargo
Le correctif modifie du code Rust production ; conformément à VER-ID-007 et VER-ID-010 :
header Cargo.toml : 579 -> 580
workspace.package.version : 0.3.14-pre.9 -> 0.3.14-pre.9.fix.1
Versions de fichiers :
src/runtime_resources.rs : 37 -> 38
src/snapshot.rs : 6 -> 7
Frontières préservées
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
Dans le sandbox de préparation :
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 des deux tokens de hardening
contrôle du diff exact
contrôle d'inventaire ZIP
unzip -t
réapplication du delta sur la base pre.009 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 :
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
corriger les formes explicites attendues plutôt que relâcher ou supprimer les canaris
ne pas ajouter de #[allow(...)]
ne pas modifier la sémantique de health validée par les unit tests pre.009
Questions ouvertes
aucune pour ce correctif