Repository navigation
docs(adr): ADR-063 integration definitions as data - #692
seanspeaks wants to merge 4 commits into
Conversation
Explores data-defined integrations interpreted by a generic DataDefinedIntegration, with allow-listed step types and transforms, git-authored definitions published as immutable versions, constant infrastructure, and what this opens up for runtime portability (packaged vs serverless, edge, home hardware, Rust/Wasm). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NGC9SnFuqdjX2xH2qeu8vw
There was a problem hiding this comment.
If your organization's extra usage balance is empty, an organization admin can add extra usage credits at claude.ai/admin-settings/usage. If its monthly spend limit was reached, an admin can raise it on the same page. If neither applies, contact Anthropic support.
Once extra usage is available, someone with write access to this repository can comment @claude review on this pull request to trigger a review.
✅ Deploy Preview for friggframework-org canceled.
|
|
ADR reconciliation needed after Stack A/B — drafted with Claude Code at Sean's request Severity: must-reconcile. ADR-063 is the ADR the rest of Stack B extends; these are text edits (code items are on #693–#698).
Merge order: #669 and #670 settle their texts → this PR → #693+. |
…names; ADR-023 amendment - Terms section: the three meanings of "Definition", and the planned integration-document name and schema $id. - Mappings and transforms: one named vocabulary with ADR-057 is the goal. - ADR-056: workspace ownership, visibility and binding scope as follow-up. - Remove the ADR-062 citation; point at ADR-059 open question 1. - Queue row: PR #686 adds QueueClientInterface (ADR-028). - Name no hosted product in Context or prose. - ADR-023: Amendment (ADR-063), a template may ship as a document. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NGC9SnFuqdjX2xH2qeu8vw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NGC9SnFuqdjX2xH2qeu8vw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NGC9SnFuqdjX2xH2qeu8vw
|
|
Release review follow-up: the text items are done across the stack (this PR at
Open question: ADR-028 has three files on different branches. This cites the multi-provider one ( Generated by Claude Code |
|
Schema URL convention: please change the to The "Hosted schemas" amendment to ADR-051 (on #666, commit 923c975) settles on one pattern for every Frigg schema: Related, for the stack's schema files: the declarative document currently has the |
Frigg 2.0.1 ADR review (COMMENT only — not an approval)Verdict: changes needed Blocking
Should-fix
Docs-only; no new test failures vs |
|
|
||
| ```jsonc | ||
| { | ||
| "$schema": "https://schemas.friggframework.org/integration-document/v0.1.json", // planned name (Terms) |
There was a problem hiding this comment.
[blocking] Wrong $schema host — must not use the schemas. subdomain.
"$schema": "https://schemas.friggframework.org/integration-document/v0.1.json"ADR-051’s amendment on #666 standardizes published $id / $schema to:
https://friggframework.org/schemas/<name>/v<major>.<minor>.json
and explicitly rejects schemas.friggframework.org (that host never resolved; the amendment even cites this ADR-063 sketch as the example of the mistake).
Required:
"$schema": "https://friggframework.org/schemas/integration-document/v0.1.json"Failure scenario: documents authored from this sketch fail frigg validate / $id lookup against the published schema package, and diverge from every other schema URL in the ecosystem.
| Frigg supports **two authoring forms behind one runtime contract**: | ||
|
|
||
| 1. **Code-defined integrations**: exactly as today. Nothing existing changes. | ||
| 2. **Data-defined integrations**: an `IntegrationDefinition` document, interpreted at runtime by one generic class, `DataDefinedIntegration extends IntegrationBase`. |
There was a problem hiding this comment.
[should-fix] Does not adopt #703 / ADR-054 amendment names or the one-trigger-registry rule.
This Decision still frames a separate DataDefinedIntegration / IntegrationDefinition path and (below) lists CRON as a first-class data-defined event type.
Per ADR-054’s “one runtime, two front doors” amendment + #703:
- code door:
defineIntegration - document door:
fromDefinitionDocument/embedDefinitionDocument - JSON is an integration document
- one registry:
Definition.triggers— a document’sworkflows[].trigger/schedulecompiles into that list;CRONis not a parallel event face onthis.events
Failure scenario: a document with type: "CRON" (or a runtime expecting DataDefinedIntegration as specified here) will not match the runtime #703 built, and trigger scheduling will fork from ADR-055.



Stack 1 of 9: ADR-063, integrations as definitions. Each PR targets the one before it. Review and merge them in order.
Summary
Test plan
Generated by Claude Code
Note
Low Risk
Documentation-only proposed ADR and cross-reference updates; no production code, auth, or data paths change in this PR.
Overview
Introduces proposed ADR-063, which adds a second integration authoring form: a versioned integration document (JSON) interpreted by a generic
DataDefinedIntegration, alongside unchanged class-based integrations.The ADR spells out what stays data vs. registered code (allow-list for modules, step types, transforms), a git-style lifecycle (author →
frigg integration check→ immutable publish → pinneddefinitionVersion), shared HTTP/webhook/queue infrastructure to avoid per-integration CloudFormation growth, and follow-on topics (runtime portability, tenancy via ADR-056).ADR-023 gains an Amendment (ADR-063) so templates may ship as forkable definition documents, not only copied class scaffolds. The ADR README index lists ADR-063.
Docs only; no runtime or schema implementation in this PR.
Reviewed by Cursor Bugbot for commit 21d9e3b. Bugbot is set up for automated code reviews on this repo. Configure here.