Repository navigation
Commit 3d8a835
docs(adr): amend ADR-0142 D5 — an organization authors its own assignment rules, evaluated before the declared ones; answer merge question 11 (#30828)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9D56TXAmXSP2pWYUJuvZgpnd)_
domain:server#1 · os-elon-musk · session_016WV4d14C8K4gMehVb6jBvA
Part of #30066
Clause-②: no
Metadata-protocol: none
Claim: 6672306838 (amended 6672490095, 6673262187, 6674205693,
6674382817) · Branch: `claude/project-thread-kl2al6` · Ruling-ref:
6631036940 (letter A), execution parameters 6670178869
## 维护者速读
- 改了什么:ADR-0142 的 D5 增加一段修订:组织可以自己写分派规则(`sys_assignment_rule`
行),先于应用包声明的规则评估;同时在状态行、TL;DR 第 4 条加修订标注,并把合并问题 11(「组织自建规则推迟」)标为已答复。
- 为什么改:这是 #30066 裁决 A(你 2026-11-05 21:34Z 的「同意」)要求记进 ADR 的部分;代码已由 #30760
合入(ac890f5a),本 PR 只补文字记录,与代码 PR 不捆绑。
- 风险与回滚:极小。只改一个 ADR 文件(+38 / -3),不动代码、规范或生成物;回滚即撤 PR。
-
先看:`docs/adr/0142-ownership-queue-membership-claim-and-assignment-rules.md`
D5 里「What the rule writes」之后新加的 **Amended** 段(第 524 行起),以及合并问题 11(第 805
行)末尾。
- 两分钟验证:打开 Files 标签,预期只有 1 个文件、+38 / -3;新段落的七个要点与 #30760
合入的行为一一对应(顺序、同名、保存校验、用户目标须为活跃成员)。
- 需要你做的:`docs/adr/**` 属 Tier H,请 os-zhuang 或 hotlong 审阅批准(或亲手合并)。
## What changes
One file,
`docs/adr/0142-ownership-queue-membership-claim-and-assignment-rules.md`,
recording ruling A on #30066 (record 6631036940, with the execution
parameters of 6670178869):
- **Status line**: a new **Amended** (2026-11-05) entry naming the
ruling: D5 gains its second source, and merge question 11 is answered.
- **TL;DR item 4**: a parenthetical **Amended** note pointing to D5.
- **D5**: a new paragraph after *What the rule writes*, **a second
source: an organization's own rules**, with seven points:
- *Shape*: a `sys_assignment_rule` row, owned by
`@objectstack/plugin-sharing` beside `sys_queue` and `sys_sharing_rule`;
`organization_id` NOT NULL; one rule with one entry per row.
- *One namespace*: a row may not take a declared rule's name (ADR-0131
D4); a row a later-installed package shadows is not evaluated and is
reported.
- *Order*: first-match stays; the organization's active rows first (by
`sort_order`, then name), the declared rules as the fallback; why the
other order cannot work (the activation ledger has no organization
column); a failed read of the organization's rows routes by no rule.
- *Validated on save*: `criteria` and `load` compiled by the two paths
the seam evaluates by; the declared schema's entry refusals; a `user`
target must be an active member.
- *A user target at insert, from either source*: owns the row only while
an active member; otherwise ownerless, logged once, never refused. The
`os lint` warning on declared user targets stands.
- *A lapsed queue target*: unchanged, for both sources.
- *Out of this record's code*: the dedicated Setup page is the
Console's.
- **Merge question 11**: an **Answered** (2026-11-05) sentence pointing
to D5.
## Why
Ruling A asks for this record. The runtime half shipped in #30760
(merged as ac890f5); this PR follows it on the same branch, serially,
and is never bundled with it. Each point above states the behaviour
#30760 merged, so the record and the code read the same.
## Tests
None: a docs-only change to one ADR. No code, schema, generated artifact
or published file moves.
## Acceptance notes
- Additions only, apart from the three lines the amendment notes extend
(the Status line, TL;DR item 4's last line, question 11's last line);
every existing sentence of D5 and question 11 is kept as written.
- `skip-changeset`: `docs/adr/**` publishes nothing from any released
package.
- Out of scope, left as they are: the docs page and the skill line (card
#30826); the stale "deferred" text in
`packages/spec/liveness/assignment_rule.json` and `liveness/README.md`
(waits for the spec seat); translations for the remaining locales
(follow #30512's batch).
## Verification
<details><summary>Local gates at 4b26915 (dispatch-gates --commands on
this diff, 21 commands)</summary>
```text
node scripts/check-adr-links.mjs :: exit 0
node scripts/check-adr-links.mjs --self-test :: exit 0
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
node scripts/ci/plan-test-core-shards.mjs --self-test :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0
pnpm check:adr-anchors :: exit 0
pnpm check:adr-index :: exit 0
pnpm check:adr-symbol-anchors :: exit 0
pnpm check:ci-filter-parity :: exit 0
pnpm check:closed-ceremony-text :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-prior-rulings :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:watch-hint-literal :: exit 0
```
`node scripts/pm/dispatch-gates.mjs --ran`: 21 derived, 21 run, 0
NOT-MEASURED, 0 UNRUN (exit 0). `node
scripts/check-commit-card-trailers.mjs --range origin/main..HEAD`: 1
message clean.
CI families outside the derivation (artifact rosters, wide-population
families, the type-check lanes) are CI's; this PR's check-runs are their
record.
</details>
## Human Minimum
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
(not touched)
- [x] 2. Every name I added uses the casing for its kind. (none added)
- [x] 3. No formatter ran; `pnpm lint` passes. (no source file touched)
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. A change that publishes carries a changeset, and both
declaration lines are filled in here and in the changeset. (publishes
nothing: `skip-changeset`)
- [x] 6. `packages/spec` touched: its generated artifacts are
regenerated and committed. (not touched)
- [x] 7. No hand edits to `content/docs/references/`,
`packages/*/CHANGELOG.md` or `content/docs/releases/`.
- [x] 8. Title, body and comments are in English.
---
_Generated by [Claude
Code](https://claude.ai/code/session_016WV4d14C8K4gMehVb6jBvA)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 95ba410 commit 3d8a835
1 file changed
Lines changed: 38 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
90 | | - | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
91 | 93 | | |
92 | 94 | | |
93 | 95 | | |
| |||
519 | 521 | | |
520 | 522 | | |
521 | 523 | | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
522 | 556 | | |
523 | 557 | | |
524 | 558 | | |
| |||
771 | 805 | | |
772 | 806 | | |
773 | 807 | | |
774 | | - | |
| 808 | + | |
| 809 | + | |
775 | 810 | | |
776 | 811 | | |
777 | 812 | | |
| |||
0 commit comments