Repository navigation
docs(adr): ADR-054 one-file integrations via module extensions, ADR-055 recurring triggers - #669
Draft
seanspeaks wants to merge 1 commit into
Draft
seanspeaks wants to merge 1 commit into
seanspeaks wants to merge 1 commit into
Conversation
…55 recurring triggers ADR-054 (Proposed): defineIntegration/defineApp/use and extension contract 2 make a production integration fit in one file. Records the decisions so far: the event-driven path ships stable in 2.0.1; the sync pieces ship under @friggframework/core/experimental until two production apps use them; handlers are (payload, ctx) with no this, and module APIs live under ctx.modules by author-chosen keys. Inlines both target files as Appendix A, with the encryption setting fixed to fieldLevelEncryptionMethod: 'kms'. ADR-055 (Proposed): one tick function per integration, a stateless slot-versus-hash due check, overlap skipped through a Process record, missed ticks not replayed. Supersedes the type: 'CRON' docs, which are corrected when the implementation lands. Adds ADR-054 cross-references to ADR-015, 018, 019 and 023, the register rows and the roadmap entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅ Deploy Preview for friggframework-org ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
This was referenced Oct 19, 2026
Contributor
Author
|
ADR reconciliation needed after Stack A/B — drafted with Claude Code at Sean's request Severity: must-reconcile. Stack B (#692–#700) builds overlapping pieces outside ADR-054/055. ADR-055
ADR-054
Merge order: this PR (amended) before #694 rebases; ADR-063 (#692) should cite 054/055 for |
This was referenced Oct 19, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Two Proposed ADRs for the one-file integration path in 2.0.1. Under ADR-043 (open PR #646), an ADR does not merge as Proposed, so this PR is opened as a draft. It needs the maintainer's review of the API shape before it is marked Accepted and merged.
defineIntegration,defineAppanduse(), plus extension contract 2. Contract 2 covers verification, tenant resolution, namespaced events, the subscription lifecycle, triggers, config fields, env, scripts and lifecycle hooks.@friggframework/core/experimentaluntil two production apps use them: objects/pages(), the resumable page runner and watermark,ctx.each/ctx.links, and instance-scope subscriptions.ctxonly, with nothis.ctxkeys. A handler is(payload, ctx)withctx = { modules: { <authorKey>: api }, config, log, telemetry, commands, integration }. The integration author chooses the module keys, and they are not part of core's interface. Every code sample is updated to this shape, and the rejected alternative is recorded.encryption: { fieldLevelEncryptionMethod: 'kms' }, and I checked them against ADR-051'sapp-definition.schema.json(PR feat(devtools): frigg validate, and make the app-definition schema match the runtime (ADR-051) #666). Actions and config options are reached through ADR-053/api/v2/integrations/*paths (PR docs(adr): ADR-052 entity proxy security, ADR-053 Management API versioning #668).frigg.prefix (frigg.subscriptions.reconcile).type: 'CRON'docs.CLAUDE.mdanddocs/guides/INTEGRATION-PATTERNS.mdare corrected when the implementation lands, not in this PR.nextyet, so their amendments are listed only in ADR-054.docs/architecture-decisions/README.mdand entries towebsite/roadmap/data/adrs.json.ADR numbers 054 and 055 are not used on
nextor on any open ADR branch.Test plan
website/roadmap/data/adrs.jsonparses, andcountmatches the number of entries.node --check.🤖 Generated with Claude Code
📦 Published PR as canary version:
2.0.0--canary.669.5f3833b.0✨ Test out this PR locally via:
npm install @friggframework/admin-scripts@2.0.0--canary.669.5f3833b.0 npm install @friggframework/core@2.0.0--canary.669.5f3833b.0 npm install @friggframework/devtools@2.0.0--canary.669.5f3833b.0 npm install @friggframework/eslint-config@2.0.0--canary.669.5f3833b.0 npm install @friggframework/prettier-config@2.0.0--canary.669.5f3833b.0 npm install @friggframework/schemas@2.0.0--canary.669.5f3833b.0 npm install @friggframework/serverless-plugin@2.0.0--canary.669.5f3833b.0 npm install @friggframework/test@2.0.0--canary.669.5f3833b.0 npm install @friggframework/ui@2.0.0--canary.669.5f3833b.0 # or yarn add @friggframework/admin-scripts@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/core@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/devtools@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/eslint-config@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/prettier-config@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/schemas@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/serverless-plugin@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/test@2.0.0--canary.669.5f3833b.0 yarn add @friggframework/ui@2.0.0--canary.669.5f3833b.0