Uh oh!
There was an error while loading. Please reload this page.
docs(spec): widen the #8778 organizationField scope pin to name the cloud#1395 ruling and its three sanctioned consumers - #10168
Conversation
…loud#1395 ruling The #8778 scope pin on `tenancy.organizationField` admitted exactly one consumer (audit stamping). The maintainer ruling recorded on cloud#1395 (2026-08-17T03:18Z) widens it BY NAME to three sanctioned platform-row writers, and requires the widening be declared rather than discovered. Annotation/prose only: no schema shape change, no accept/reject behaviour change. The behaviour change is #10101's. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016gcKVsiywU9CcS96S5t9qD
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 115 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
Uh oh!
There was an error while loading. Please reload this page.
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 32374407797 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
qq9340100
commented
Aug 20, 2026
Merge-queue dequeue triage (spec-lane PM, session
Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
…10266) The `JobHandler` TSDoc's "not yet wired" paragraph was inverted twice over by #7072's landing: consuming a resolved `{ outcome: 'degraded' }` is no longer discarded, and "safe because unread" no longer holds. Re-measured against current main: - cron-job-adapter.ts and interval-job-adapter.ts map a resolved `degraded` outcome onto `execution.status = 'degraded'` / `execution.error`. - db-job-adapter.ts settles the run as `degraded`, writes the reason to `error` / `last_error`, and leaves `failure_count` flat. - sys_job_run.status and sys_job.last_status both carry `degraded` in their ObjectQL-enforced select vocabularies (#7072), pinned to stay in step with JobExecutionStatus. Rewrote the paragraph to state the wired behaviour, aligned in wording with JobExecutionStatus's already-correct TSDoc in system/job.zod.ts rather than inventing a third phrasing. The #5548/#6617 framing above stays untouched. Prose only — no signature or type change (Clause-②: no). No changeset: JSDoc/TSDoc block-comment change, not a Zod `.describe()` call that feeds generated reference docs — same precedent as #10168, not #10173. Claude-Session: https://claude.ai/code/session_016gcKVsiywU9CcS96S5t9qD Co-authored-by: Claude <noreply@anthropic.com>
Fixes#10110
Unblocks #10101 (the resolver-promotion card is Blocked-by this one).
What this changes
packages/spec/src/data/object.zod.tscarried a scope pin from the #8778 ruling thatadmitted exactly ONE consumer of
tenancy.organizationField:The maintainer ruling recorded on cloud#1395 (2026-08-17T03:18Z, accepted in full)
widens that pin by name and requires the widening be declared rather than
discovered. This PR transcribes it next to the pin. The annotation now names:
quote kept in the maintainer's own words;
resolveRecordOrganizationField),plugin-approvals, and the automation-runrecorder reached when that resolver is promoted to the shared platform-row resolver;
platform-row writers are still not a general field-roles mechanism.
The original #8778 sentence is kept verbatim and the widening is appended, so the
history reads as declared evolution rather than replacement.
Scope
Annotation/prose only. No schema shape change, no accept/reject behaviour change
(
Clause-②: no). The behaviour change — actually wiring consumers 2 and 3 — is#10101's card, at contract-review tier, and is not started here.
Two test files restated the old "audit stamping ONLY" scope claim in comments and would
now contradict the widened pin. Their prose only is updated; every assertion is
byte-identical (visible in the diff):
packages/spec/src/data/injected-system-columns.test.tspackages/spec/src/data/object.test.tsBoth tests pin read-neutrality, and that claim survives the widening untouched: all
three sanctioned consumers stamp rows, none of them is a read path. The updated prose
says so explicitly.
Deliberately left alone
The
.describe()onorganizationFieldstill speaks of audit rows. That is a statementof what reads the key today, and it is still true — consumers 2 and 3 are sanctioned
but not yet wired up. #10101 updates that sentence as the readers actually land; changing
it here would claim a behaviour this PR does not ship. The annotation names this
explicitly so the two do not read as contradicting each other.
Verification
Gate set re-derived from the actual diff with
node scripts/pm/dispatch-gates.mjs(no paths passed — the script derives the change set from the merge base itself). That
run named five families beyond the dispatch prediction; all were run. Everything below
was run at final commit
4b3b6dbb9, on a built workspace:pnpm --filter @objectstack/spec testTest Files 414 passed (414)·Tests 11040 passed (11040)pnpm --filter @objectstack/spec run typecheckcheck:test-typecheck: OKcheck:cross-package-test-inputsOK: 12 package(s) read outside themselves, all declaredcheck:spec-parsed-aliasADR-0122 type-alias convention: … OKcheck:type-source-resolutioncheck-type-source-resolution OK — 76 packages … scannedcheck:merge-drivermerge driver wiring is consistentcheck:slot-lookupslot-lookup ratchet holds … none newcheck-dev-prereqs.mjscheck:strictness-ledger/check:variant-docs/check:empty-state/check:livenesscheck:engine-double-contractOK — 329 pinned, 133 in the DEBT ledger, 2 exemptcheck:where-matcher264 matcher(s) discovered, 264 answer … correctlycheck:query-options-erasureratchet holds … none newcheck:type-check-coverageOK — 64/77 workspace packages type-checkedcheck:type-check-debt --re-measureOK — 33 ledger entr(ies) re-measured … none above its recorded numbercheck:doc-formula-expressions9 @example(s) judged clean across 965 packages/spec/src filesdocs-audit/check-affected-docs.mjsThe clause-② path arm will fire on this PR because it touches
packages/spec/src/**.That is expected and correct per the card — the review confirms the diff is
annotation-only.
Changeset
Carries
skip-changesetrather than a.changeset/*.md. This PR publishes nothing: noauthorable key, no export, no schema shape, and no accept/reject behaviour changes — the
diff is comments in one source file plus comments in two test files. Per AGENTS.md a
changeset covers feature work, and by
pr-automation.yml's own prescription a PR thatdeclares no release of its own takes the label. If a reviewer reads the JSDoc reaching
consumers as
.d.tshover text as user-visible, say so and I will add a patch changesetinstead.
Generated by Claude Code