Skip to content

feat(cloud-connection): open-ended, plan-agnostic runtime feature seam (cloud ADR-0012)#1847

Merged
xuyushun441-sys merged 1 commit into
mainfrom
feat/runtime-features-open-ended
Jun 14, 2026
Merged

feat(cloud-connection): open-ended, plan-agnostic runtime feature seam (cloud ADR-0012)#1847
xuyushun441-sys merged 1 commit into
mainfrom
feat/runtime-features-open-ended

Conversation

@xuyushun441-sys

Copy link
Copy Markdown
Contributor

Why

RuntimeConfigPlugin is the open mechanism that serves the SPA's per-request features map. But it enumerated a closed feature set and used billing vocabulary (resolvePlanFeatures / RuntimeConfigPlanFeatures), so a distribution couldn't add a commercial feature (custom domain, SSO, …) without editing the open framework — commercial/pricing policy bleeding into open-core.

What

  • The features map is now open-ended: the policy hook's returned flags are merged verbatim, so a host injects arbitrary keys (e.g. the cloud control plane returns customDomain/sso from its plan entitlements) with no framework change.
  • Seam renamed plan-agnostic: resolveFeatures / RuntimeFeatureOverrides. resolvePlanFeatures / RuntimeConfigPlanFeatures stay as deprecated, still-honoured aliases (no breakage).
  • aiStudio / autoPublishAiBuilds remain the framework's own non-commercial mechanism defaults (ADR-0005: AI authoring is all-plan, cost-gated — not a paid tier).

Tests

New runtime-config-plugin.test.ts: base flags, arbitrary-key passthrough, deprecated-alias compatibility, static default. cloud-connection 48/48.

Establishes the boundary recorded in cloud ADR-0012 (companion cloud PR wires customDomain/sso through this seam).

🤖 Generated with Claude Code

…m (cloud ADR-0012)

The RuntimeConfigPlugin owns the mechanism (serve a per-request `features` map
to the SPA) but must not own the catalog or pricing policy. Previously the
plugin enumerated a closed feature set (`aiStudio`/`autoPublishAiBuilds`) and
used billing vocabulary (`resolvePlanFeatures` / `RuntimeConfigPlanFeatures`),
so a distribution couldn't add a commercial feature (custom domain, SSO, …)
without editing the open framework.

Now the feature map is open-ended: the policy hook's returned flags are merged
verbatim into `features`, so a host (e.g. the cloud control plane) injects
arbitrary keys without any framework change. Renames the seam plan-agnostic:
`resolveFeatures` / `RuntimeFeatureOverrides`, with `resolvePlanFeatures` /
`RuntimeConfigPlanFeatures` kept as deprecated, still-honoured aliases.

Adds runtime-config-plugin.test.ts covering base flags, arbitrary-key
passthrough, the deprecated alias, and the static default.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 14, 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 14, 2026 10:20am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation tests tooling size/m labels Jun 14, 2026
@xuyushun441-sys
xuyushun441-sys merged commit 08a11f7 into main Jun 14, 2026
12 checks passed
@xuyushun441-sys
xuyushun441-sys deleted the feat/runtime-features-open-ended branch June 14, 2026 10:20
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 tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants