Skip to the content.

Triggers readiness checklist

Use this checklist when authoring triggers in the operator console (Triggers page, NewTriggerModal) or in *.trigger.yaml. It maps each UI option to what the Host actually runs today.

Scope: Catalog triggers (*.trigger.yaml) started through fireTrigger — the same path as sf trigger fire, POST /api/triggers/:id/fire, and MCP fire_trigger. This does not cover the separate legacy email rules API (/api/email/triggers), which is not on the redesign Triggers page.

Prerequisites (all automatic triggers):

See YAML catalog — Triggers, sf trigger, and Architecture for schema and runtime boundaries.


Legend

Symbol Meaning
Auto Host adapter or route fires without manual action
UI Fire Fire / F in the operator console
CLI Fire sf trigger fire or POST /api/triggers/:id/fire (optional task / --task-inline)

Works in the tables below means: implemented and expected to succeed when the checklist items for that row are satisfied.


Kind: Manual

Check Auto UI Fire Works
Catalog task set — Yes Yes
Dynamic task (no task in YAML) — No (Fire disabled) Partial — CLI/API with --task-inline or task body only

Checklist


Kind: Schedule

Check Auto UI Fire Works
Catalog task + valid schedule.cron Yes (~30s tick, STAGEFLOW_TRIGGER_TICK_INTERVAL_MS) Yes Yes
Dynamic task (no catalog task) No — timer calls fireTrigger without a task No No for auto; Partial for manual CLI/API with task
enabled: false No No —

Checklist

Not supported: automatic fires for schedule + dynamic mode (by design).


Kind: Event — GitHub pull request

UI tile GitHub pull request → event.source: github.pull_request (any github.* prefix uses the same poller).

Check Auto UI Fire Works
Catalog task + repo + token Yes (~60s poll, STAGEFLOW_GITHUB_POLL_INTERVAL_MS) Yes Yes
Dynamic task + repo + token Yes (task built from PR) No Partial — auto/CLI; not UI Fire
match.action / match.author Yes (exact match on normalized fields) — Yes

Checklist


Kind: Event — Signed webhook

UI tile Signed webhook → event.source: webhook.

Check Auto UI Fire Works
Catalog task + signing config On POST /api/triggers/:id/webhook Yes Yes
Dynamic task + signing config On POST (task from JSON body) No Partial
Wrong/missing signature — — 401 (by design)

Checklist

Note: The webhook route does not require a bearer token; it authenticates via HMAC only (see YAML catalog — Webhook adapter).


Kind: Event — Email (catalog)

UI tile Email → event.source: email.message (any email.* prefix uses EmailSource).

Check Auto UI Fire Works
Catalog task + IMAP config Yes (IMAP IDLE) Yes Yes with real mailbox
Dynamic task + IMAP config Yes (task from message) No Partial
Optional subject filter Yes — Partial — exact subject only, not substring

Checklist


Kind: Event — other event.source

Check Auto UI Fire Works
Any source not github.*, webhook, or email.* No No (dynamic) / Yes (catalog) No auto — YAML loads and validates only

Checklist


Target: Catalog vs dynamic task

Mode YAML Auto adapters UI Fire CLI / API fire
Catalog task: <id> set Yes (when kind/source supports it) Yes Yes (no task override; trigger.task_override_not_allowed if you try)
Dynamic task omitted Event sources can build task; schedule cannot Disabled (“needs a task payload”) Yes with task / --task-inline (trigger.task_required if missing)

Checklist


Operator console (redesign) — UI-only checks


Quick matrix (reference)

UI / YAML Auto Works end-to-end
Manual + catalog task — Yes
Schedule + catalog task Cron tick Yes
Schedule + dynamic — No (auto)
Event GitHub PR + catalog Poll Yes
Event webhook + catalog POST Yes (if reachable + secrets)
Event email + catalog IMAP IDLE Yes (if mailbox + secrets)
Event other source — Manual fire only
Any kind + dynamic Varies UI Fire no; CLI/API with task

Smoke catalog (Docker and local)

The examples/triggers-readiness/ bundle ships in the Docker image at /opt/stageflow/catalog/triggers-readiness (registered via STAGEFLOW_ENSURE_PROJECT_ROOTS in docker-compose.yml). See examples/triggers-readiness/README.md for trigger ids and test commands.