Filed unassigned and unlabeled for triage from the repo:cloud seat (session session_01TPHe3S9uZYC9wtUwdkRZ46) while accepting cloud#1278 (ADR-0022 Phase 1 runtime online client, PR cloud#1291). I am not this repo's triage and do not grade or route here.
Fact (measured against 62b6a2fb, the SHA cloud pins today)
registerMultiNodeGate consumes { allowMultiNode(): { allowed, reason } } — a boolean verdict with no node count in the contract. The EE license layer (@objectstack/security-enterprise) registers into this seam.
Why it matters now
The maintainer ruled on 2026-08-13 (recorded on cloud#1275) that a licensed max_nodes overflow must refuse the excess replicas — run up to the paid limit — plus a loud warning, explicitly NOT whole-cluster degrade. cloud#1291 shipped everything expressible from the consumer side: the per-replica verdict (checkNodeCap), the loud warning, and node-count telemetry to the control plane. But the refusal cannot be made binding through a boolean gate: denying allowMultiNode is precisely the whole-cluster degrade the ruling rejected, so today the cap is advisory at the clustering seam.
Suggested shape (not a decision)
Widen the seam to carry a count — e.g. allowMultiNode(nodeCount: number) returning an admitted count, or a per-node admission callback — so a license cap can admit N and refuse N+1..M. Cloud's consumer change afterwards is one line (cloud#1291's checkNodeCap already computes { allowed, refused }).
Refs: cloud#1275 (the ruling), cloud#1278 / PR cloud#1291 (the consumer half, with the measurement in its report), docs/adr/ ADR-0022 in the cloud repo (D4 multi-node gating).
Filed unassigned and unlabeled for triage from the repo:cloud seat (session
session_01TPHe3S9uZYC9wtUwdkRZ46) while accepting cloud#1278 (ADR-0022 Phase 1 runtime online client, PR cloud#1291). I am not this repo's triage and do not grade or route here.Fact (measured against
62b6a2fb, the SHA cloud pins today)registerMultiNodeGateconsumes{ allowMultiNode(): { allowed, reason } }— a boolean verdict with no node count in the contract. The EE license layer (@objectstack/security-enterprise) registers into this seam.Why it matters now
The maintainer ruled on 2026-08-13 (recorded on cloud#1275) that a licensed
max_nodesoverflow must refuse the excess replicas — run up to the paid limit — plus a loud warning, explicitly NOT whole-cluster degrade. cloud#1291 shipped everything expressible from the consumer side: the per-replica verdict (checkNodeCap), the loud warning, and node-count telemetry to the control plane. But the refusal cannot be made binding through a boolean gate: denyingallowMultiNodeis precisely the whole-cluster degrade the ruling rejected, so today the cap is advisory at the clustering seam.Suggested shape (not a decision)
Widen the seam to carry a count — e.g.
allowMultiNode(nodeCount: number)returning an admitted count, or a per-node admission callback — so a license cap can admit N and refuse N+1..M. Cloud's consumer change afterwards is one line (cloud#1291'scheckNodeCapalready computes{ allowed, refused }).Refs: cloud#1275 (the ruling), cloud#1278 / PR cloud#1291 (the consumer half, with the measurement in its report),
docs/adr/ADR-0022 in the cloud repo (D4 multi-node gating).