fix(historian): preserve alarm delivery identity across retries #706
Reference in New Issue
Block a user
Delete Branch "fix/alarm-delivery-identity"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
AlarmEventMapper left the wire ID empty because it assumed the historian supplied identity. Events now carry a nonzero transport GUID; direct retries/copies retain it, and durable deliveries derive it solely from the persisted queue key. Queue JSON/fingerprints/schema/deduplication, business equality/hash and AlarmId stay unchanged. Explicit empty IDs are rejected; SQL/QuestDB identity logic is unchanged.
Validation: RED empty wire ID and unstable queue retry IDs reproduced; Core51/51, migration/convergence16/16, Gateway453passed/6live skipped; full offline solution14,635passed/611skipped/0failed across62suites, exit0. Literal fixtures and retry/reopen/replication/legacy/revival tests included. Independent review and diffcheck clear.
No live writes or deployment. Live exact-ID persistence and timestamps remain Gateway #28/#39; no historical rows rewritten. Results: docs/plans/2026-10-13-alarm-delivery-identity-results.md.
Fixes #705.