Files
khadhroony-solana-project/deltas/0.3.14/pre.009-fix.001.md

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