0% 5h quota used · resets in 2h restart window open · live · 08/09/2026 12:03 CEST

Safe to restart

What is running, what fires next, and where a rebuild fits — a restart is assumed to take about 10 minutes.

Nothing holds a lock, no request is being dispatched, and the next firing is far enough out.

Running now 0 runs
No lock is held in data/locks — nothing is in flight.
Next firing in 26m
08/09/2026 12:30 · de:wasserversorger-enrich
This gap lasts 26m
until 08/09/2026 12:30
Waiting to dispatch 0
The queue holds nothing undecided.

The CLI this image is built on

npm checked 24m ago
VersionMeans
Running2.1.263what the container has, read at boot (24m ago). It cannot change while the container lives — the CLI is installed as root and the daemon runs as uid 1000, so the self-updater has nowhere to write.
npm latest2.1.263what a rebuild installs — and today it is also tagged next, ahead of stable, so it is a pre-release.
npm stable2.1.236the conservative tag, where the two differ. Not a free swap: 2.1.236 sends no utilisation figures, so tracking it would empty the meters on /quota.

Up to date: the container is on the version npm publishes. A rebuild would change no CLI.

Running now

one lock per task in data/locks · clear

No lock is held — no task or script is running right now.

Firing next

the 12 soonest of 37 in 72 hours · the whole week
InWhenTaskDoesBudgetPolicy
in 26m08/09/2026 12:30de:wasserversorger-enrichEnrich German water suppliers (Wasserversorger) with contact details and the published water-analysis URL, and append results to the campaign JSONL.90mautonomous
in 1h08/09/2026 13:30de:netzbetreiber-repliesTriage new replies from German grid operators and extract data from their answers, then send the queued follow-ups and reminders via the guarded sender.75mautonomous
in 5h08/09/2026 17:30de:wasserversorger-enrichEnrich German water suppliers (Wasserversorger) with contact details and the published water-analysis URL, and append results to the campaign JSONL.90mautonomous
in 7h08/09/2026 19:30de:netzbetreiber-repliesTriage new replies from German grid operators and extract data from their answers, then send the queued follow-ups and reminders via the guarded sender.75mautonomous
in 10h08/09/2026 22:30de:wasserversorger-enrichEnrich German water suppliers (Wasserversorger) with contact details and the published water-analysis URL, and append results to the campaign JSONL.90mautonomous
in 14h09/09/2026 02:30de:wasserversorger-enrichEnrich German water suppliers (Wasserversorger) with contact details and the published water-analysis URL, and append results to the campaign JSONL.90mautonomous
in 17h09/09/2026 05:00_global:sentry-verifyCheck whether merged sentry-triage fixes actually deployed and actually worked, and resolve in Sentry the issues whose errors stopped. The ones still bleeding are left open and come back on the triage worklist as FIX-FAILED. Deterministic, no LLM.15mautonomous
in 18h09/09/2026 06:00_global:sentry-triageWeekly Sentry triage of the cms, telecom and renovation repos — fix what is safely code-fixable, one draft PR per repo, journal the rest. Ignores third-party noise.110mpr
in 19h09/09/2026 07:30de:wasserversorger-enrichEnrich German water suppliers (Wasserversorger) with contact details and the published water-analysis URL, and append results to the campaign JSONL.90mautonomous
in 19h09/09/2026 07:30de:netzbetreiber-repliesTriage new replies from German grid operators and extract data from their answers, then send the queued follow-ups and reminders via the guarded sender.75mautonomous
in 20h09/09/2026 08:00_global:decisions-escalateAnnounce platform decisions to Google Chat and defects to GitHub the day they are opened, and re-raise anything still unanswered. Deterministic, no LLM. Without it _global's register is write-only — which is the failure the register exists to fix, one level up.5mautonomous
in 20h09/09/2026 08:00tn:decisions-escalateAnnounce decisions to Google Chat and defects to GitHub the day they are opened, and re-raise anything still unanswered after 30 days. Deterministic script, no LLM.5mautonomous

Where a restart fits

gaps of 10 minutes or more · a firing occupies its longest run in the last twenty, or its budget where the ledger has none
FromUntilLong enough forThen fires
now08/09/2026 12:3026mde:wasserversorger-enrichyou are here
08/09/2026 13:5908/09/2026 17:303h 31mde:wasserversorger-enrich
08/09/2026 18:3008/09/2026 19:301h 00mde:netzbetreiber-replies
08/09/2026 19:5908/09/2026 22:302h 31mde:wasserversorger-enrich
08/09/2026 23:3009/09/2026 02:303h 00mde:wasserversorger-enrich
09/09/2026 03:3009/09/2026 05:001h 30m_global:sentry-verify
09/09/2026 05:0109/09/2026 06:0059m_global:sentry-triage
09/09/2026 06:3709/09/2026 07:3053mde:wasserversorger-enrich, de:netzbetreiber-replies
09/09/2026 09:0209/09/2026 12:303h 28mde:wasserversorger-enrich
09/09/2026 13:5909/09/2026 17:303h 31mde:wasserversorger-enrich
What a restart actually costs
  • A run in flight is lost, not resumed. The daemon installs no signal handler, so the agent's child process dies with it. Nothing is written to the ledger for that run, and its lock file survives — the task stays shut until a later run steals the lock (budget + 15 minutes).
  • A cron missed while the container is down is not caught up. Each task gets a plain croner instance at boot, which only ever computes its next occurrence. A 06:00 job restarted through is a 06:00 job that did not happen today.
  • A claimed queue request is orphaned. data/queue/<id>.lock is written to claim a request and never removed, so a dispatch killed mid-flight is never re-claimed. It stays pending forever with a lock beside it.
  • Approvals and the queue survive. Both live in files and are re-read on the next poll, so anything still undecided is picked up after boot — approvals every 5 minutes, the queue every 30 seconds.

Read in Europe/Paris, the same clock the crons are written against. This page trusts data/locks and data/queue, which the daemon writes as it goes — but it cannot see a run the daemon is about to start, and if the daemon itself is gone (it is live, last tick 2m ago) then "nothing is running" means nothing can run, not that all is well. Widen or narrow the verdict with ?grace=30 and ?hours=168.