github ruvnet/RuView v1583
Release v1583

latest releases: v1591, v1590, v1588...
4 hours ago

Automated release from CI pipeline

Changes:
fix(mat): never triage a survivor with a heartbeat as Deceased (safety) (#926)

Both triage paths in the Mass Casualty Assessment tool classified a
survivor as Deceased (Black) on "no breathing + no movement" while
completely ignoring the heartbeat signal:

  • domain TriageCalculator::calculatecombine_assessments(Absent, None)
    returned Deceased. That branch is in fact only reachable because a
    heartbeat makes has_vitals() true (breathing+movement absent alone →
    Unknown) — so every "Deceased" was a live person with a pulse.
  • detection EnsembleClassifier::determine_triage (the path used by
    classify()) returned Deceased on !has_breathing && !has_movement,
    also ignoring reading.heartbeat.

A survivor with a detectable pulse but no sensed breathing/movement is in
respiratory arrest — the most time-critical savable state. Reporting them
Deceased would deprioritize a rescuable person. WiFi-CSI also cannot confirm
death (no airway-repositioning step), so a pulse must override.

Fix: in both paths, if the result would be Deceased but a heartbeat is
present, return Immediate. Total absence of breathing, movement AND heartbeat
is unchanged (domain → Unknown, ensemble → Deceased).

2 safety regression tests added. Full MAT suite: 168 + 6 + 3 passed, 0 failed
(existing test_no_vitals_is_deceased still green — no heartbeat → Deceased).

Docker Image:
ghcr.io/ruvnet/RuView:c453268002fe242769ce9ae059569a3cfcac9912

Don't miss a new RuView release

NewReleases is sending notifications on new releases.