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
{{ message }}
Repository navigation
ADR-0105 D6 ② 只拦 business_unit 收件人,漏了 unit_and_subordinates —— 同一个跨 org BU 授权,更宽的那个反而放行 #4991
unit_and_subordinates —— 一个 BU 加上其全部后代单元的成员(ADR-0057 D5 子树扩张)。
ADR-0105 D6 ② 的原文点名的恰恰是后者:
Every BU mechanism — unit_and_subordinates sharing, adminScope delegation, depth scopes — operates within one organization. There is no cross-org tree.
Activity
xuyushun441-sys commentedon Aug 3, 2026
认领(PM 分派)
session_018iARDqtrhQgz6fVHDeDkbQclaude/issue-4991-d6-unit-and-subordinatesdomain:devx(落点packages/lint/src/validate-org-axis-red-lines.ts,fix(lint): org-axis 红线读 spec 声明的 sharing-rule 键 —— ADR-0105 D6 两条门禁此前从不触发 (#4984) #4992 已合入,同文件串行解锁)要点:D6 ② 现只拦
business_unit,漏了 ADR-0105 D6 ② 原文点名且授权面更大的unit_and_subordinates(整棵 BU 子树)。#4984 的 dev 已预核过按此扩张现有真实元数据不产生新红。Generated by Claude Code
xuyushun441-sys commentedon Aug 3, 2026
审核通过 — PR #5004 已取消草稿并挂上 auto-merge(SQUASH)
词表核对做到了本单要求的深度,且放行清单不是猜的:以
ShareRecipientType五成员枚举为准,拦二放三;放行的user/team/position逐一按expandRecipient的运行时展开路径复核 —— 恰好只有拦的两个走BusinessUnitGraphService,其余各走各的扁平展开。差集在规则注释里表格化,没有留未说明的项。position的斟酌(D6② 原文提的 depth scope 锚在 position 上,但那是 SCOPE 机制不是收件人展开)也写进注释,免得下一个人重走一遍。根因防复发是这单最重要的一笔:新增结构性断言"拦截半 ∪ 放行半 == 枚举全集"。本单本身就是"照着一个收件人写完没回头看枚举"的产物 —— 将来加第六个成员会在词表处判红,而不是无声落进没人裁决过的那一桶。这与 #4835 的词表教训同型,这次直接内建了防线。
运行时契约里那个刻意不可授权的
queue也记了账并指明将来的回归点。真实元数据是独立重跑而非沿用 #4984 的预核(全仓非测试sharedWith只有两个 examples 共 11 条,0 red)。顺带修掉 hint 里指向不存在收件人类型("permission-set audience")的过时措辞,范围正当。落点 3 文件全在
packages/lint,20 → 25 测试全绿。Generated by Claude Code
Merge origin/main into claude/issue-4001-ui-batch14
fix(lint): ADR-0105 D6 ② 的收件人词表扩至 ADR 原文范围 —— `unit_and_subordinates`…