Repository navigation
docs(sharing): record the external-recipient arm on ADR-0111 D7 and the grant contract - #25603
Conversation
…he grant contract ADR-0111 D7 item 2 gains the dated amendment for the external-recipient arm. ISharingService.grant's docblock stops saying a share on a public object enforces nothing. The rule pass note also covers a record whose organization could not be resolved, and a test comment no longer names a file that does not exist. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjwMndyviznGagEUcX7QVx
📓 Docs Drift CheckThis PR changes 2 package(s): 3 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
What this run could not see
Coarse fallback — 144 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 5aae37838e4f4665b599e02c00d620f8ea20804c && git checkout 5aae37838e4f4665b599e02c00d620f8ea20804c
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 9f390945ebbf34696f71806d0247df47cfeaef1c 297cfe51f80f51d7b0eaeb972c324326a08cbe38 && git checkout -B drift-repro 9f390945ebbf34696f71806d0247df47cfeaef1c && git merge --no-ff 297cfe51f80f51d7b0eaeb972c324326a08cbe38
node scripts/docs-audit/affected-docs.mjs --json 9f390945ebbf34696f71806d0247df47cfeaef1c
|
…arm of SHARING_NOT_ENABLED The docs-drift check named this page: its SHARING_NOT_ENABLED entry still listed a public sharing model as refused for every recipient. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjwMndyviznGagEUcX7QVx
维护者速读
席位核对 · ACCEPT(待人批) ·
|
Requested by Tesla · project thread
Part of #25549
Clause-②: no
Metadata-protocol: none
The Tier H follow-up to #25591, which landed letter A of the ruling on #25549 (record 6377844010): on a public object, a share or sharing rule is admitted for a recipient who is an
externalmember of the record's organization. This PR records that decision where the governing texts live, and carries the two wording nits from the seat's contract review of #25591.维护者速读(草稿)
改了什么: 只改文字,不改行为。ADR-0111 D7 第 2 条加一行带日期的修订,写明「全员可读写」对象上的分享可以给该组织的外部成员(供应商门户用户),其他人照旧拒绝;
ISharingService.grant的接口说明同步改正;共享规则跳过收件人时的那句提示,补上「记录所属组织解析不出来」这种情况;一处测试注释里写错的文件名改正。为什么改: #25591 已按裁决 A 落地,但 ADR 和接口说明仍写着「公开对象上的分享永远无效」,以后读文档的人(包括 AI)会被误导。ADR 属于受管文件,需要单独的 PR 由你批准。
风险与代价(含回滚): 无运行时风险,提示文字改了一句(没有程序解析这句话)。回滚即还原这一个提交。
席位意见:
你要做的: 看一眼 ADR 修订那一段的措辞,同意即批准合并。
What changes
docs/adr/0111-record-share-management-authority-and-verb-boundary.md): one dated amendment paragraph under the item, the text drafted in the os-dev-report of feat(sharing): a share or sharing rule on a public object reaches an external member of the record's organization #25591 (comment 6378915159 on sharing: a share or sharing rule to an external member is refused as inert on a public_read_write or model-less system object, though the external OWD floor would consult it #25549).ISharingService.grantdocblock (packages/spec/src/contracts/sharing-service.ts): "a share on a public / bypass / owner-less /controlled_by_parentobject enforces nothing" becomes "a bypass / owner-less /controlled_by_parentobject enforces nothing; on a public object it is admitted only for a recipient who is anexternalmember of the record's organization". Comment only.plugin-sharingsharing-rule-service.tsinternalHalfNote): the per-recipient refusal a pass skips is also raised when a record's organization cannot be resolved, which admits no recipient. The note now says so: "rows were written only for external members of each record's organization; none for the other recipients this rule expands to (internal members already reach its records, and a record whose organization could not be resolved admits no recipient)". Thenotefield's docblock says the same. Two test assertions follow the text.system-caller-inert-grant.test.ts, theRULE_ABORTING_OBJECTScomment): it namedexternal-recipient-public-object.test.ts, which does not exist; it now points at block 3 of the same file..changeset/25549-external-share-followup-wording.md:@objectstack/plugin-sharingand@objectstack/specpatch.Verification (head
3aae2160; re-reconciled at297cfe51after the sharing-service.mdx drift fix: 123 derived, 123 run, 0 NOT-MEASURED)pnpm --filter @objectstack/plugin-sharing typecheckexit 0; the suite underos-verify-lock: 55/55 files, 1233 tests passed.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackat3aae2160derived 100 families, each run with its exit code captured before any pipe. First sweep: 98 exit 0, 2 exit 3 (PREREQUISITE NOT MET: workspace dists forcheck:dual-build-cjs-loadsandcheck:i18n); aftercheck:type-check-debt's locked workspace build, both re-ran exit 0.--ranreconciliation: 100 derived, 100 run, 0 NOT-MEASURED, 0 UNRUN.🤖 Generated with Claude Code
https://claude.ai/code/session_01AjwMndyviznGagEUcX7QVx