Triggering runs¶
Three ways a SITREP run starts. All of them land in the same GitHub Actions workflow — .github/workflows/on-demand-sitrep.yml on the main site repo.
1. Scheduled cron¶
Four runs per day, every 6 hours. Defined in the workflow's schedule: block. No human in the loop.
If the triage stage finds nothing new since the last published SITREP, the run exits with a heartbeat instead of publishing.
2. Manual via admin surface¶
admin.sitrepisr.com has a "Fire SITREP" form. Submitting it:
- Hits
POST /api/trigger/sitrepon the admin app. - Admin app dispatches the
on-demand-sitrep.ymlworkflow via the GitHub API, passing the form inputs as workflowinputs. - The workflow runs the agent with those inputs.
Knobs exposed in the admin UI¶
| Field | Purpose |
|---|---|
| Coverage hours | Size of the rolling window the agent considers. Default 6, range 1–168. |
| Include URLs | Newline-separated list of URLs to force into the run. Bypasses the whitelist and coverage window, and overrides the heartbeat gate — so a run with manual URLs will publish even if nothing else is new. |
3. Telegram bot¶
A Telegram bot (defined in src/app/api/telegram-webhook) accepts commands in an operator chat. On a trigger command it dispatches the same workflow, threading the eventual publish notification as a reply (reply_chat_id / reply_message_id).
No admin UI equivalent — this path exists so runs can be triggered from a phone without opening the admin site.
Where to watch a run¶
- Live logs — GitHub Actions run page for
on-demand-sitrep.yml. - Did it publish? — check
sitrepisr.com/update. If it triaged out as a heartbeat, there will be no new entry but the workflow log will show aheartbeatmarker. - Did ingest fail? — Vercel logs on the public-site project.
Things that go wrong and where to look¶
| Symptom | First place to check |
|---|---|
| Workflow didn't fire on schedule | GitHub Actions scheduler UI. Scheduled workflows on free tier can be silently paused after repo inactivity. |
| Workflow ran but nothing published | Agent log — look for the triage / heartbeat marker. |
| Publish step 401/403 | ADMIN_INGEST_SECRET mismatch between repo secrets and Vercel env. |
| Source returning empty results | agent/sitrep_agent/whitelist.py — feed URL may have rotated. Log an issue on Grounding-Sources. |
| Manual URLs ignored | Confirm they were passed as newline-separated via the admin form; blank lines are dropped. |