Summary
Signals are often resolved in reality before they are resolved in Hermes. Users may batch-update signals days or weeks later, causing inaccurate reporting and timeline data.
Introduce event-based resolution tracking so Hermes can accurately represent:
- When work was actually completed
- When Hermes was updated
This preserves historical accuracy and aligns with the long-term timeline/event-driven direction of the platform.
Problem
Current behaviour stores a single resolvedOn date on the Signal.
Example:
- Work completed: 8 May
- Signal marked resolved in Hermes: 15 May
Current result:
This produces inaccurate:
- Timeline history
- Daily summaries
- Reporting
- Stream-based analysis
The historical record should reflect when the work was actually completed.
Proposed Solution
Resolution Becomes an Event
When resolving a signal, create a resolution event containing the actual completion date.
Example:
SignalEvent
-----------
type: RESOLVED
occurredAt: 2026-05-08
createdAt: 2026-05-15
Meaning:
- Work was completed on 8 May
- User recorded the event on 15 May
Signal Model Behaviour
Signal.resolvedOn remains for query performance and filtering.
However it becomes a derived/convenience field populated from the latest resolution event.
Rules:
- Resolving a signal creates a
RESOLVED event
- Reopening a signal clears
resolvedOn
- Re-resolving creates a new
RESOLVED event
resolvedOn is updated to match the latest active resolution event
UI Changes
Resolve Dialog
Replace one-click resolve with:
Resolve Signal
Completed On:
[ Date Picker ]
[ Resolve ]
Defaults:
User may select:
Restrictions:
- Cannot be before signal creation date
- Cannot be in the future
Timeline Benefits
Future timeline views become significantly more useful.
Example:
Created
↓
Progressed
↓
Progressed
↓
Resolved (occurred 8 May)
↓
Recorded in Hermes (15 May)
This accurately reflects reality rather than user administration behaviour.
Event Types
New event:
Existing:
No additional event types required initially.
Acceptance Criteria
- User can select a completion date when resolving a signal
- Resolution creates a
RESOLVED event
- Event stores actual completion date in
occurredAt
resolvedOn is updated from the resolution event
- User can reopen a signal
- Reopening clears
resolvedOn
- Resolution date cannot be before signal creation
- Resolution date cannot be in the future
- Existing reporting uses
resolvedOn without behavioural changes
- Timeline displays actual completion date rather than record creation date
Notes
This enhancement improves historical accuracy without significantly increasing user effort and establishes a foundation for future timeline, reporting, and analytics features.
Summary
Signals are often resolved in reality before they are resolved in Hermes. Users may batch-update signals days or weeks later, causing inaccurate reporting and timeline data.
Introduce event-based resolution tracking so Hermes can accurately represent:
This preserves historical accuracy and aligns with the long-term timeline/event-driven direction of the platform.
Problem
Current behaviour stores a single
resolvedOndate on the Signal.Example:
Current result:
This produces inaccurate:
The historical record should reflect when the work was actually completed.
Proposed Solution
Resolution Becomes an Event
When resolving a signal, create a resolution event containing the actual completion date.
Example:
Meaning:
Signal Model Behaviour
Signal.resolvedOnremains for query performance and filtering.However it becomes a derived/convenience field populated from the latest resolution event.
Rules:
RESOLVEDeventresolvedOnRESOLVEDeventresolvedOnis updated to match the latest active resolution eventUI Changes
Resolve Dialog
Replace one-click resolve with:
Defaults:
User may select:
Restrictions:
Timeline Benefits
Future timeline views become significantly more useful.
Example:
This accurately reflects reality rather than user administration behaviour.
Event Types
New event:
Existing:
No additional event types required initially.
Acceptance Criteria
RESOLVEDeventoccurredAtresolvedOnis updated from the resolution eventresolvedOnresolvedOnwithout behavioural changesNotes
This enhancement improves historical accuracy without significantly increasing user effort and establishes a foundation for future timeline, reporting, and analytics features.