Repository navigation
docs(spec): postureStampsOrganization docblock names the open stampers - #28823
Conversation
The docblock said the stamper is the enterprise organizations runtime, not the open engine. The engine lands an insert in the active organization (ObjectQL#driverWriteTarget) and the SQL driver fills an absent organization_id (SqlDriver#injectTenantOnInsert). Keep the true half: activating a walled posture needs the enterprise runtime (ADR-0105 D12). Comment only. Claude-Session: https://claude.ai/code/session_01ADHkmPJS1YYanT5AinLa5h 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: 维护者速读
席位意见:可落地,等契约复审。新注释点名的两个开源写入点在 main 上都存在,并保留了「启用多组织姿态需要企业版运行时」这一半真话。 席位核对 — ACCEPT ·
|
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract-review-claim: Taken under Generated by Claude Code |
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract reviewServed-tier: PR #28823 for card #28761. Face ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgmentEach sentence of the new docblock read against the code on
No sentence misstates the tenant wall or who stamps. The old false sentence ("the STAMPER, however, is the enterprise runtime, not the open engine") is gone, and the true half (activation needs the runtime) is kept, as the card's done-when asks and as #28703's merged verify docblock (#28760) words it. Implemented-by: VERDICT: PASS Generated by Claude Code |
Requested by Steve · project thread
Fixes #28761
Clause-②: no
Metadata-protocol: none
维护者速读
packages/spec/src/security/tenancy-posture.ts中postureStampsOrganization上方的注释,外加一条@objectstack/specpatch changeset;不改任何代码。dist的.d.ts发布);回滚即 revert 本 PR。packages/spec/src/security/tenancy-posture.ts的postureStampsOrganization文档块。git diff origin/main...HEAD -- packages/spec/src/security/tenancy-posture.ts,预期只见注释行变动、无一行代码变化。What changes
Comments only, plus a
patchchangeset for@objectstack/spec(the JSDoc ships in the built declaration chunk, so the published bytes change).The
postureStampsOrganizationdocblock said "The STAMPER, however, is the enterprise@objectstack/organizationsruntime, not the open engine … the open engine only VALIDATES supplied values". It now says:ObjectQL#driverWriteTarget, body inpackages/objectql/src/engine-driver-options.ts), and the SQL driver fills an absentorganization_idfrom it (SqlDriver#injectTenantOnInsert,packages/drivers/driver-sql/src/sql-driver.ts).@objectstack/plugin-securityinstalls the wall on the write, it holds that value to the Layer 0 verdict (thewallJudgesOrganizationseam documented inpackages/objectql/src/engine.ts).callerKeySetsdocblock inpackages/objectql/src/engine.tsnames it), but it is not the only stamper.multiTenant: 'posture-only'/ SimulatedOrgScopingPlugin docblocks say nothing stamps organization_id and a cross-tenant fixture "would assert nothing" — since ADR-0131 the engine stamps and the Layer-0 verdict walls by posture #28703's merged verify docblock (docs(verify): posture-only docblocks say what the stand-in walls and what it does not #28760).Tests
No behaviour changes, so no test was added or changed.
Local runs at head 021a3cf
pnpm --filter @objectstack/spec build(underos-verify-lock):VERDICT command-exit 0.pnpm --filter @objectstack/spec check:generated:VERDICT command-exit 0, "All 14 generated artifacts are up to date".pnpm --filter @objectstack/spec typecheck:VERDICT command-exit 0.pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2:Test Files 875 passed (875),Tests 24715 passed | 1 todo (24716),VERDICT command-exit 0.packages/spec/dist/queue.zod-IH5GXQGp.d.ts/.d.mts, directly abovedeclare function postureStampsOrganization; "not the open engine" has 0 matches indist/security/index.d.ts.filesincludesdist.Acceptance notes
dist/security/index.d.ts. After the build the declaration lives in a shared chunk (dist/queue.zod-IH5GXQGp.d.ts) that the security entry re-exports. It still ships, so the changeset level (patch) holds.postureStampsOrganizationhas no caller in this repo (grep at 1617b7f); onlyapi-surface/security.jsonandexport-origins/security.jsonname it, and those record names only, so they did not move.Verification
Derived gate families (dispatch-gates --commands, head 021a3cf)
--unshallowforcheck-plugin-teardown-shape --self-test, an objectql + lint closure build forcheck:lean-entry-closureandcheck:doc-formula-expressions).pnpm check:dual-build-cjs-loadsexited 3 (PREREQUISITE NOT MET, needs a fullpnpm build). CI runs it.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran FILE: "73 derived famil(ies) accounted for — 72 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3)", exit 0.🤖 Generated with Claude Code
Generated by Claude Code