From e998670e0933dfff38217e2cbaf189cb5bedc1ba Mon Sep 17 00:00:00 2001 From: Ten31AI Date: Sun, 26 Jul 2026 20:31:40 +0000 Subject: [PATCH] Add fleet registry: gazette-daily (5am ET) + fleet-smoke --- fleet-registry.toml | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 fleet-registry.toml diff --git a/fleet-registry.toml b/fleet-registry.toml new file mode 100644 index 0000000..d66a2e3 --- /dev/null +++ b/fleet-registry.toml @@ -0,0 +1,47 @@ +# Fleet registry — single source of truth for scheduled automations. +# Spark Control (scheduler) and the dispatcher both fetch this file; the +# scheduler triggers POST /run/ at the dispatcher on each job's cron, +# and the dispatcher runs the job's script. Edit HERE (git), never in a UI. +# +# Schema (enforced strictly by Spark Control app/fleet.py:validate_registry — +# unknown keys are refused): [dispatcher] host/port/health_path; [[job]] +# name, schedule (5-field cron), tz (IANA), script/cwd/log (absolute), +# kicks_off, env (strings only, NO secrets — the fetch rejects them), +# missed_run (run_once|skip), timeout (s), retries, enabled. + +[dispatcher] +# The Start9 host (sandy-paycheck) — the dispatcher runs there as +# fleet-dispatcher.service and executes job scripts locally. +host = "192.168.86.107" +port = 8377 +health_path = "/health" + +[[job]] +name = "gazette-daily" +schedule = "0 5 * * *" +tz = "America/New_York" +script = "/opt/philadelphia-gazette/pipeline/daily.sh" +cwd = "/opt/philadelphia-gazette" +log = "/opt/philadelphia-gazette/logs/fleet-gazette.log" +kicks_off = "Fetches the news wires, composes the day's Philadelphia Gazette on the Sparks (wire clerk model on spark-1fc2, Franklin model on spark-69e7), validates the edition, and publishes it to the PhilGaz web root serving philadelphiagazette.ai. Penny Post notices the new feed item on its next poll and carries it to email subscribers." +env = {} +missed_run = "run_once" +timeout = 5400 +retries = 0 +enabled = true + +[[job]] +# Disabled on purpose: exists for Run-now verification of the whole +# scheduler -> dispatcher -> script chain without touching the live paper. +name = "fleet-smoke" +schedule = "0 0 1 1 *" +tz = "America/New_York" +script = "/opt/philadelphia-gazette/pipeline/fleet-smoke.sh" +cwd = "/opt/philadelphia-gazette" +log = "/opt/philadelphia-gazette/logs/fleet-smoke.log" +kicks_off = "Nothing — prints a line and exits 0." +env = {} +missed_run = "skip" +timeout = 60 +retries = 0 +enabled = false