Skip to content

docs(adr): ADR-0041 — flow trigger family: taxonomy, naming, open-source core set#1746

Merged
os-zhuang merged 1 commit into
mainfrom
adr-0041-flow-trigger-family
Jun 12, 2026
Merged

docs(adr): ADR-0041 — flow trigger family: taxonomy, naming, open-source core set#1746
os-zhuang merged 1 commit into
mainfrom
adr-0041-flow-trigger-family

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Summary

Writes down the trigger plan discussed during the approvals revamp follow-ups:

  • What a trigger is (event source → user-orchestratable flow, via the engine's FlowTrigger seam) and what it is not (screen launches, approval out-edges, plugin-internal clocks → IJobService, cf. feat(approvals): SLA auto-escalation — scheduler pass executing escalation.action #1742).
  • Naming: plugin-trigger-* → first-class trigger-* family, consistent with driver-*/connector-*/embedder-*/knowledge-*.
  • Tier 1 (core, Apache-2.0, default preset): trigger-record-change ✅, trigger-schedule ✅, and trigger-api as the single short-term build item — the flow schema already reserves type: 'api' with no runtime behind it (a Studio trap today). Acceptance criteria include HMAC-verified per-flow endpoints and queue-backed ingestion from day one.
  • Tier 2 (open source, on demand): email-inbound, queue, lifecycle — each with the driving scenario that promotes it.
  • Tier 3 (marketplace/vertical): connector-event families, threshold, file, iot.
  • Discoverability: trigger descriptors carry maturity: ga|beta|reserved so Studio renders pickers from the live registry and greys out reserved types instead of letting users author flows that never run.

Current state verified against code (engine seam, the two shipped triggers, serve auto-wiring, the reserved api enum) with file references throughout.

🤖 Generated with Claude Code

…rce core set

Decides three things about the trigger layer:

1. Taxonomy: a trigger adapts one class of business event into flow
   executions via the engine's FlowTrigger seam — distinct from kernel
   hooks (in-process lifecycle) and IJobService (plugin-owned clocks).
   Non-goals recorded: screen flows are launched not triggered, approval
   outcomes ride out-edges, plugin clocks (SLA scanner) call jobs directly.

2. Naming: triggers become a first-class `trigger-*` package family
   (matching driver-/connector-/embedder-/knowledge-), dropping the
   plugin- prefix; migration via deprecation stubs.

3. Tiers: record-change + schedule (shipped) + trigger-api (the one gap
   to build next — flow type 'api' is schema-reserved with no runtime,
   a Studio trap) form the Apache-2.0 core set every project needs.
   email-inbound / queue / lifecycle defer to on-demand open source;
   connector-event / threshold / file / iot to marketplace distribution,
   with a written promotion rule. Descriptors gain a maturity field
   ('ga'|'beta'|'reserved') so Studio greys out contract-ahead-of-runtime
   surfaces; boundary triggers must ingest via the outbox/queue path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jun 12, 2026 2:05am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation size/m labels Jun 12, 2026
@os-zhuang
os-zhuang merged commit 5da9a97 into main Jun 12, 2026
10 of 11 checks passed
@os-zhuang
os-zhuang deleted the adr-0041-flow-trigger-family branch June 12, 2026 02:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant