Custom durable queue Worker picks up pending jobs and runs handlers idempotently. Retry policy: max_attempts default 3 with exponential backoff via run_after.
Cross-tenant process telemetry from worker_runs + worker_heartbeats (13 watchdogs registered — see docs/metrics.md). Last 50 runs under all tenants.
| Started | Watchdog | Duration | Actioned | Status | Error | Action |
|---|---|---|---|---|---|---|
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 5 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | webhook_dispatcher | 4 ms | 0 | Success | — | |
Show run details{
"sent": 0,
"failed": 0,
"retried": 0,
"failedPermanent": 0
} | ||||||
| 09 June 2026, 12:45 am | xero_dispatcher | 5 ms | 0 | Success | — | |
Show run details{
"sent": 0,
"retry": 0,
"failed": 0,
"no_work": 1,
"creds_missing": 0
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 5 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | ocr_dispatcher | 3 ms | 0 | Success | — | |
Show run details{
"failed": 0,
"no_work": 1,
"completed": 0,
"not_configured": 0
} | ||||||
| 09 June 2026, 12:45 am | contract_rollup_watchdog | 3 ms | 0 | Success | — | |
Show run details{
"message": "All contract rollups are in lock-step with their source rows.",
"failures": [],
"sampleRefs": []
} | ||||||
| 09 June 2026, 12:45 am | email_dispatcher | 4 ms | 0 | Success | — | |
Show run details{
"dlq": 0,
"sent": 0,
"driver": "log",
"failed": 0,
"retried": 0,
"suppressedDropped": 0,
"suppressedCancelled": 0
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 7 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 5 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 5 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:45 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | webhook_dispatcher | 4 ms | 0 | Success | — | |
Show run details{
"sent": 0,
"failed": 0,
"retried": 0,
"failedPermanent": 0
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | xero_dispatcher | 3 ms | 0 | Success | — | |
Show run details{
"sent": 0,
"retry": 0,
"failed": 0,
"no_work": 1,
"creds_missing": 0
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 3 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
| 09 June 2026, 12:44 am | xero_dispatcher | 4 ms | 0 | Success | — | |
Show run details{
"sent": 0,
"retry": 0,
"failed": 0,
"no_work": 1,
"creds_missing": 0
} | ||||||
| 09 June 2026, 12:44 am | cashflow_recalc | 4 ms | 0 | Success | — | |
Show run details{
"message": "queue empty"
} | ||||||
Audit row per standard-report query and per Live Slice invocation (report_runs table — reports engine). Last 50 rows under your tenant.
| Timestamp | Kind | Duration | Rows | Status | Invoked by | Error | Action |
|---|---|---|---|---|---|---|---|
| 09 June 2026, 12:45 am | claim-cycle | 5 ms | 8 | Success | Local Dev User | — | — |
| 09 June 2026, 12:45 am | rfi-aging | 5 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 11:09 pm | hseq-severity | 2 ms | 4 | Success | Local Dev User | — | — |
| 08 June 2026, 11:09 pm | submittal-bic | 2 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 11:09 pm | submittal-bic | 2 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 11:05 pm | hseq-severity | 3 ms | 4 | Success | Local Dev User | — | — |
| 08 June 2026, 10:59 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:58 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:58 pm | cashflow-summary | 4 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:58 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:58 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:58 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:58 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:58 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | submittal-bic | 2 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | submittal-bic | 2 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | rfi-aging | 2 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | claim-cycle | 3 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | cashflow-summary | 4 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | rfi-aging | 3 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:57 pm | claim-cycle | 3 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | drawing-revisions | 3 ms | 9 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | claim-cycle | 3 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | variation-pipeline | 2 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | drawing-revisions | 2 ms | 9 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | submittal-bic | 15 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | hseq-severity | 3 ms | 4 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | hseq-severity | 4 ms | 4 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | submittal-bic | 3 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | variation-pipeline | 2 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | submittal-bic | 2 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | hseq-severity | 2 ms | 4 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 1 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | variation-pipeline | 3 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 3 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:56 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:55 pm | drawing-revisions | 3 ms | 9 | Success | Local Dev User | — | — |
| 08 June 2026, 10:55 pm | cashflow-summary | 2 ms | 48 | Success | Local Dev User | — | — |
| 08 June 2026, 10:55 pm | claim-cycle | 3 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:55 pm | drawing-revisions | 1 ms | 9 | Success | Local Dev User | — | — |
| 08 June 2026, 10:55 pm | claim-cycle | 2 ms | 8 | Success | Local Dev User | — | — |
| 08 June 2026, 10:55 pm | submittal-bic | 2 ms | 2 | Success | Local Dev User | — | — |
| 08 June 2026, 10:55 pm | rfi-aging | 2 ms | 2 | Success | Local Dev User | — | — |