mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-23 19:57:09 +00:00
a1a9003dfd
syncLoopStateLocked was emitting a generic "loop_state" lifecycle event on every successful transition, duplicating the semantic event the caller had just emitted. A finding that auto-resolved showed two adjacent rows in the Lifecycle drawer: Auto-resolved (detected -> resolved) Loop state changed (detected -> resolved) Same from/to, same timestamp, no extra information. Every transition was paired with a duplicate. Removed the generic loop_state emission. Every caller of syncLoopStateLocked already emits the semantic event for the transition it caused (auto_resolved, regressed, dismissed, acknowledged, snoozed, suppression_lifted, reminded, etc.). The loop_transition_violation branch stays — that's the only signal that an invalid transition was rejected, not a duplicate. Adds TestFindingsStore_TransitionDoesNotAlsoEmitGenericLoopStateEvent to lock in the behavior.