Tide · Reliability

Missed firings (policy.catchUp)

policy.catchUp controls clock firings missed while the host was down: run executes each one late, latest executes only the most recent, and skip drops those more than lateMs late (default one hour). A firing that is not executed is still recorded, as a run in state skipped. Late runs are all due in the same pass, so under overlap: 'skip' (the default) only the oldest executes.

Reflex
{
  id: 'theatre.tonight',
  intent: 'Mail tonight’s reminder at 18:00.',
  on: {
    clock: { every: 'day', at: '18:00', tz: 'Europe/Vienna' },
  },
  effect: {
    name: 'mail.send',
    input: { night: { $ref: '$.occurrence.key' } },
  },
  policy: { catchUp: 'run', overlap: 'allow' },
}
Scenario
The host loads the reflex on Tuesday at noon and is down until Friday at 09:00.
Three firings were missed: Tuesday’s, Wednesday’s and Thursday’s.
The same is done with three other policies.
Occurrences run and skipped
[
  {
    catchUp: 'run',
    overlap: 'allow',
    ran: ['2026-10-20', '2026-10-21', '2026-10-22'],
    skipped: [],
  },
  {
    catchUp: 'latest',
    overlap: 'allow',
    ran: ['2026-10-22'],
    skipped: ['2026-10-20', '2026-10-21'],
  },
  {
    catchUp: 'skip',
    overlap: 'allow',
    ran: [],
    skipped: ['2026-10-20', '2026-10-21', '2026-10-22'],
  },
  {
    catchUp: 'run',
    overlap: 'skip',
    ran: ['2026-10-20'],
    skipped: ['2026-10-21', '2026-10-22'],
  },
]
Output matches the expected value

Runs in this page on the installed package. The input and the expected output are defined by the example.