Repository navigation
docs(spec): tenancy-posture prose says which side of the open/commercial split gates activation - #29454
Conversation
…tion is gated on The header's "Open code, entitled activation" section and the postureStampsOrganization docblock said "open code does not mean free activation" with no side named. On an open install the organizations runtime carries no licence gate and entitles both walled postures (ADR-0132 D1, D2, D4); only a commercial host's subclass gates activation (ADR-0132 D2, D3). The cloud ADR-0016 paragraph no longer rests the guarantee on withholding the posture: it rests on refusing to run a multi-org shape unwalled (ADR-0093 D5). Comment-only. Claude-Session: https://claude.ai/code/session_01ADHkmPErSzAW8P6oQg3W1k Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 168 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
|
domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS Head-sha: 维护者速读
席位意见:可落地,等契约复审。 席位核对 — ACCEPT ·
|
|
domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS Contract-review-claim: session_01ADHkmPi25XXKx92Xmg4viS · head e82aa69 · 2026-11-02T15:44Z |
|
domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS Contract reviewServed-tier: Inputs: card #29318 (body, triage 6576560344, claim 6580442396, dev report 6581334071), PR #29454 body and file list, ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgmentJudged against ADR-0132 D1–D4, the ADR-0105 D12 amendments and the open plugin on Implemented-by: VERDICT: PASS |
|
domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS Flake judgement · re-run once · 2026-11-02T17:33Z
This PR changes two comment blocks in |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 41494560578 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 41495598866 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
Requested by Steve · project thread
Fixes #29318
Clause-②: no
Metadata-protocol: none
维护者速读
tenancy-posture.ts的两段注释(文件头「开源代码与激活授权」一节、postureStampsOrganization的说明),外加一个 spec patch changeset;无代码、无 schema、无生成物变化。@objectstack/organizations即可启用 group/isolated,只有商业侧子类才加许可证门。packages/spec/src/security/tenancy-posture.ts第 23–48 行(文件头一节)与postureStampsOrganization的说明块。git diff origin/main -- packages/spec/src/security/tenancy-posture.ts,预期只见注释行变化,且每句激活相关的话都写明是开源侧还是商业侧。What changes
origin/main:packages/plugins/organizations/src/organizations-plugin.tsdeclaressupportedPostures = ['group', 'isolated']with the "NO LICENCE GATE HERE" note beside it.postureStampsOrganizationdocblock. "Open code does not mean free activation" is now scoped the same way: mounting the runtime is enough on an open install, and only a commercial host gates activation..changeset/29318-tenancy-posture-activation-prose.md:@objectstack/specpatch (the docblocks ship in the published.d.ts).No forced test edits.
Tests
Comment-only diff.
pnpm --filter @objectstack/spec build && pnpm --filter @objectstack/spec check:generated: all 14 generated artifacts up to date (the file has no.describe(), so nothing generated moves). Spectypecheckandtestwere run locally (readings under Verification).Acceptance notes
OrgScopingEntitlementdocblock further down already scopes its "packaging decision" sentence to the commercial runtime and names ADR-0132 D4 for the open package, so it is left as it is.Verification
All readings at head
e82aa69a(the only commit), inobjectstack-ai/objectstack.Spec build, generated artifacts, typecheck, test
pnpm --filter @objectstack/spec build && pnpm --filter @objectstack/spec check:generatedunder the verify lock:VERDICT command-exit 0, "All 14 generated artifacts are up to date".pnpm --filter @objectstack/spec typecheck: exit 0.pnpm --filter @objectstack/spec test:VERDICT command-exit 0, Test Files 791 passed (791), Tests 23469 passed, 1 todo.Derived gates (dispatch-gates --commands, 73 families)
check:doc-formula-expressions,check:dual-build-cjs-loads,check:lean-entry-closureon unbuilt packages. After fetching the self-test's control commit andturbo run build --filter=./packages/**(VERDICT command-exit 0), all four exit 0.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran FILE: "73 derived, 73 run, 0 NOT-MEASURED, 0 UNRUN", exit 0.check-changeset-no-major.mjs --base origin/main --event FILEon this body, offline: exit 0, level axis "clause-②noand metadata-protocolnone... a non-protocol change atpatch".check:dev-prereqs: its self-test passes; the scan exits 1 because 35ui/workspace packages are not built in this container (an unmet local precondition, not a finding on this diff). NOT MEASURED for that half.Dogfood: n/a, no
!in the title and no (narrowing) arm.Generated by Claude Code