You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
spec/plugin-sharing: retire the ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED provenance waiver together with its stamp site, once the objectql recognizer lands #16160
Filed by the domain:engine execution seat while building #16156. ⛔ Not claimed, no assignee — this is bookkeeping that becomes actionable only after that PR merges, and it spans two lanes.
What is owed, in the waiver's own words
PROVENANCE_WAIVERS in packages/spec/src/api/error-code-ledger.zod.ts carries an entry for @objectstack/plugin-sharing / ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED (registered under @objectstack/objectql, adjudicated on #14937, maintainer ruling A, 2026-09-04). Its reason ends:
Removed together with the stamp site when #14936 lands and objectql publishes a recognizer.
#16156 is that recognizer. It publishes SYSTEM_WRITE_ORGANIZATION_REQUIRED_CODE and isSystemWriteOrganizationRequiredError from @objectstack/objectql, so plugin-sharing no longer needs its own spelling of the literal — but that PR deliberately did not perform the removal, because it spans packages/spec and packages/plugins/plugin-sharing, both outside its landing surface.
Why it cannot be split, and must be one PR
check:error-code-provenance reconciles a waiver in three directions at once (its header states them): the registeredUnder key must still list the code, the waived package must still NOT list it, and the scan must still find a site for the pair. So the two halves redden the gate independently:
remove the plugin-sharing stamp site alone ⇒ the waiver's site is gone ⇒ the gate fails on the stale waiver;
remove the waiver alone ⇒ the stamp site has no row and no waiver ⇒ the gate fails on the site.
⇒ Both edits in one PR, or neither.
The work
In packages/plugins/plugin-sharing/src/sharing-rule-service.ts: replace the local ENGINE_ORGANIZATION_REFUSAL_CODE constant (:137, typed as SystemWriteOrganizationRequiredError['code']) and the err?.code !== … comparison at :1683 with the published import — either the constant or isSystemWriteOrganizationRequiredError. Note :1691 re-emits the code in its own refusal envelope; that site is a separate judgement, not automatically the same edit.
In packages/spec/src/api/error-code-ledger.zod.ts: delete the corresponding PROVENANCE_WAIVERS entry.
Blocked-by: #16156 (nothing here is safe to do while that PR is open — the waiver is still live and correct until it merges).
⚠️ Lane note for triage: packages/spec is single-owner, so this likely wants that lane rather than domain:engine, even though the trigger sits in the engine's package.
Filed by the
domain:engineexecution seat while building #16156. ⛔ Not claimed, no assignee — this is bookkeeping that becomes actionable only after that PR merges, and it spans two lanes.What is owed, in the waiver's own words
PROVENANCE_WAIVERSinpackages/spec/src/api/error-code-ledger.zod.tscarries an entry for@objectstack/plugin-sharing/ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED(registered under@objectstack/objectql, adjudicated on #14937, maintainer ruling A, 2026-09-04). Itsreasonends:#16156 is that recognizer. It publishes
SYSTEM_WRITE_ORGANIZATION_REQUIRED_CODEandisSystemWriteOrganizationRequiredErrorfrom@objectstack/objectql, soplugin-sharingno longer needs its own spelling of the literal — but that PR deliberately did not perform the removal, because it spanspackages/specandpackages/plugins/plugin-sharing, both outside its landing surface.Why it cannot be split, and must be one PR
check:error-code-provenancereconciles a waiver in three directions at once (its header states them): theregisteredUnderkey must still list the code, the waived package must still NOT list it, and the scan must still find a site for the pair. So the two halves redden the gate independently:plugin-sharingstamp site alone ⇒ the waiver's site is gone ⇒ the gate fails on the stale waiver;⇒ Both edits in one PR, or neither.
The work
packages/plugins/plugin-sharing/src/sharing-rule-service.ts: replace the localENGINE_ORGANIZATION_REFUSAL_CODEconstant (:137, typed asSystemWriteOrganizationRequiredError['code']) and theerr?.code !== …comparison at:1683with the published import — either the constant orisSystemWriteOrganizationRequiredError. Note:1691re-emits the code in its own refusal envelope; that site is a separate judgement, not automatically the same edit.packages/spec/src/api/error-code-ledger.zod.ts: delete the correspondingPROVENANCE_WAIVERSentry.pnpm --filter @objectstack/spec run check:error-code-provenance—scripts/pm/dispatch-gates.mjs([finding] dispatch-gates --commands does not derive check:optional-error-sink for a diff that adds a new logger-sink interface #14880); the derivation places it in the "artifact rosters" block, whose silence is a fact about a list and never a clearance. Run it explicitly, and confirm the site count drops by one and the waiver count by one.Blocked-by: #16156 (nothing here is safe to do while that PR is open — the waiver is still live and correct until it merges).
packages/specis single-owner, so this likely wants that lane rather thandomain:engine, even though the trigger sits in the engine's package.Refs: #14936 · #14935 · #14937 · #16156 · #14930 · #14880
Generated by Claude Code