From 031abe859c04d385dfb01d28ee961065348f99fb Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:00:40 +0000 Subject: [PATCH] =?UTF-8?q?docs(changeset):=20declare=20the=20#27277=20and?= =?UTF-8?q?=20#27425=20changesets=20as=20`Clause-=E2=91=A1:=20yes=20(narro?= =?UTF-8?q?wing)`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both landed diffs widen one accept set and narrow another. The post-landing contract reviews on PR #27403 and PR #27476 named the precise arm. The #27425 changeset also names the grant() accept set it widens, in place of "Nothing is widened". Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_017ihL2c5z3q4h8inrn5kwqV --- .changeset/27277-plugin-driver-floor.md | 2 +- .changeset/27425-phantom-owner-anchor-fails-closed.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/27277-plugin-driver-floor.md b/.changeset/27277-plugin-driver-floor.md index b658820fef0..3c50221edb2 100644 --- a/.changeset/27277-plugin-driver-floor.md +++ b/.changeset/27277-plugin-driver-floor.md @@ -5,7 +5,7 @@ fix(objectql)!: a plugin driver on an external datasource answers every read correctly or refuses: the engine applies the whole query to the rows the driver returns, up to 1000 of them (#27277) -Clause-②: yes (two codes join ERROR_CODE_LEDGER under `@objectstack/objectql`: `EXTERNAL_WRITE_REFUSED` and `EXTERNAL_ROW_CAP_EXCEEDED`, both 422) +Clause-②: yes (narrowing) — two codes join ERROR_CODE_LEDGER under `@objectstack/objectql` (`EXTERNAL_WRITE_REFUSED` and `EXTERNAL_ROW_CAP_EXCEEDED`, both 422), and on a plugin-driver external datasource the accepted reads and writes narrow as described below Metadata-protocol: none diff --git a/.changeset/27425-phantom-owner-anchor-fails-closed.md b/.changeset/27425-phantom-owner-anchor-fails-closed.md index 4f57d359fc5..bafabd44571 100644 --- a/.changeset/27425-phantom-owner-anchor-fails-closed.md +++ b/.changeset/27425-phantom-owner-anchor-fails-closed.md @@ -5,7 +5,7 @@ fix(plugin-sharing)!: on a federated object whose `owner_id` is the platform's injected anchor, the read and bulk-write scopes narrow below `org` instead of going unscoped (#27425) -Clause-②: no (narrowing) — `SharingService.buildReadFilter` and `buildWriteFilter` answer a deny-all scope, where they answered `null` (no scope), for a caller below `org` depth on an ADR-0015 federated object that neither declares `owner_id` in `fields` nor maps a remote column onto it; on `private` such an object's refused edit answers 404 where it answered 403. Nothing is widened and no key is added, removed or renamed. +Clause-②: yes (narrowing) — `SharingService.buildReadFilter` and `buildWriteFilter` answer a deny-all scope, where they answered `null` (no scope), for a caller below `org` depth on an ADR-0015 federated object that neither declares `owner_id` in `fields` nor maps a remote column onto it; on `private` such an object's refused edit answers 404 where it answered 403. One accept set widens: `SharingService.grant()` on a federated object that maps a remote column onto `owner_id` through `external.columnMap` (without declaring it) is no longer refused as inert, because that object's share rows are now read. No key is added, removed or renamed. Metadata-protocol: none