Skip to content

feat(cluster): multi-node authorization gate (open seam for EE license) - #2230

Merged
xuyushun441-sys merged 1 commit into
mainfrom
feat/cluster-multinode-gate
Jun 23, 2026
Merged

feat(cluster): multi-node authorization gate (open seam for EE license)#2230
xuyushun441-sys merged 1 commit into
mainfrom
feat/cluster-multinode-gate

Conversation

@xuyushun441-sys

Copy link
Copy Markdown
Contributor

Adds the open mechanism an EE license plugs into to gate multi-node — zero license logic in the framework (cloud ADR-0022 D4/D7).

What

  • @objectstack/service-cluster exports registerMultiNodeGate / checkMultiNodeAllowed / __resetMultiNodeGate + MultiNodeGate type. A distribution registers a gate that authorizes whether the runtime may enable a multi-node (remote-driver) topology. Open framework ships no gate → always allowed.
  • os serve consults the gate before activating a remote cluster driver. On denial it downgrades to single-node (in-memory) rather than failing — multi-node is an add-on, never bricks the runtime (distinct from the split-brain guard, which throws on outright misconfiguration).
  • The CLI uses a dynamic, non-literal import specifier so it does not statically depend on the cluster package — mirrors the existing remote-driver import (the framework intentionally treats cluster packages as runtime-resolved).

Verification

  • service-cluster full build (tsup ESM+DTS) clean; 45 tests pass incl. 5 new gate tests (no-gate→allowed, deny-with-reason, allow, last-wins, reset).
  • @objectstack/cli build (tsc) green — serve.ts compiles.

Changeset included (service-cluster minor, cli minor).

Next (cloud side, ADR-0022): objectos-ee registers a license-based gate here via security-enterprise; objectos-runtime entitlement-source seam; boot wiring + downgrade.

🤖 Generated with Claude Code

@objectstack/service-cluster exports registerMultiNodeGate /
checkMultiNodeAllowed — a generic seam a distribution (e.g. EE) registers a
gate into to authorize multi-node (remote-driver) topology. The open
framework ships no gate: multi-node is always allowed. Zero license logic
here; this is the open mechanism an EE license plugs into (cloud ADR-0022).
os serve consults the gate before activating a remote cluster driver; on
denial it downgrades to single-node (in-memory) rather than failing —
multi-node is an add-on, never bricks the runtime. The CLI keeps using a
dynamic, non-literal import specifier so it does not statically depend on
the cluster package (mirrors the remote-driver import).
- multi-node-gate.ts: registry + checkMultiNodeAllowed + reset (5 tests).
- service-cluster build (full DTS) + 45 tests green; cli build green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercelBot commented Jun 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
specReadyReadyPreview, CommentJun 23, 2026 5:01am

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tests tooling size/m labels Jun 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): @objectstack/cli, packages/services.

18 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/concepts/cloud-artifact-api.mdx(via packages/cli)
  • content/docs/concepts/implementation-status.mdx(via @objectstack/cli)
  • content/docs/concepts/packages.mdx(via @objectstack/cli)
  • content/docs/getting-started/cli.mdx(via @objectstack/cli)
  • content/docs/getting-started/quick-start.mdx(via @objectstack/cli)
  • content/docs/guides/authentication.mdx(via @objectstack/cli)
  • content/docs/guides/client-sdk.mdx(via @objectstack/cli)
  • content/docs/guides/hook-bodies.mdx(via packages/cli)
  • content/docs/guides/packages.mdx(via @objectstack/cli, packages/services)
  • content/docs/guides/project-scoping.mdx(via @objectstack/cli)
  • content/docs/guides/runtime-services/audit-service.mdx(via packages/services)
  • content/docs/guides/runtime-services/data-service.mdx(via packages/cli)
  • content/docs/guides/runtime-services/index.mdx(via packages/cli, packages/services)
  • content/docs/guides/runtime-services/settings-service.mdx(via packages/services)
  • content/docs/guides/skills.mdx(via packages/cli)
  • content/docs/protocol/objectos/i18n-standard.mdx(via packages/services)
  • content/docs/protocol/objectos/plugin-spec.mdx(via @objectstack/cli)
  • content/docs/protocol/objectos/realtime-protocol.mdx(via @objectstack/cli)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

@xuyushun441-sys
xuyushun441-sys merged commit 2b355d5 into mainJun 23, 2026
16 checks passed
@xuyushun441-sys
xuyushun441-sys deleted the feat/cluster-multinode-gate branch June 23, 2026 05:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@xuyushun441-sys@os-zhuang