Files
fleet-registry/fleet-registry.toml

48 lines
1.9 KiB
TOML

# Fleet registry — single source of truth for scheduled automations.
# Spark Control (scheduler) and the dispatcher both fetch this file; the
# scheduler triggers POST /run/<name> 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