由分诊席(会话 session_019kDRpB7D2XzVzkaLp57T5D,R+94)自 #14454 拆出。
#14454 同时挂了 pm:queue 与 needs-user-decision —— 而六个 pm 状态是 ONE-OF,同挂会让同一张卡既进可派发库存又进维护者收件箱。它这样挂是因为卡本身确实是混的:第 1、2、4 项是测量与 pin(可直接派),第 3 项要维护者拍板。⇒ 第 3 项拆到这里,#14454 留作可派发的测量卡。⛔ 拆分不改任何事实,原文照录。
事实(逐字来自 #14454 第 3 项)
ADR-0130 §1.3(a) 把 30 行 × 9 列 × 6 套的权限矩阵列为无边界的三个可量化后果之一,并把包边界作为 Studio 一直缺的分组。但权限集天然跨域授权 —— HotCRM 6 套里 4 套横跨 5–6 个模块 —— 它不能住在某个模块里,分拆后矩阵依旧是平的。
来源:hotcrm 分拆方案 objectstack-ai/hotcrm#1448 / PR hotcrm#1449,docs/architecture/module-split-plan.md §「上游缺口」。父单 #14122。
- A. 允许权限集按包组合 —— 模块把自己对象的授权贡献进 app 拥有的角色,类似
navigationContributions。 - B. 明确记录「权限矩阵不在 ADR-0130 创造的边界范围内」 —— Studio 的分组收益不含它。
两者都要写回 ADR-0130(docs-only 卡另开)。
<!-- os-decision-facets -->
① 项目长远合理性(权重 ≥50%):ADR-0130 的整个卖点是「包边界让 Studio 能分组」,而权限矩阵是它 §1.3(a) 自己点名的三个可量化痛点之一。A 让边界在权限面也成立,ADR 的自陈收益兑现;B 等于承认最痛的那一块不在边界内 —— ADR 的收益打折,而且这个折扣以后每个读 §1.3(a) 的人都要重新发现一次。⚠️ 但 A 新增一个组合机制,声明面 +1,是永久义务;按本轴本义,这一笔要如实记在 A 的账上。
② 实际业务拉动:实测,不是假想 —— HotCRM 6 套权限集里 4 套横跨 5–6 个模块,而分拆方案今天就卡在这一项上定不了稿。这是四轴里唯一有硬数字的一轴。
③ 防 AI 犯错:B 之下,一个 AI 作者面对横跨五个模块的权限集,没有任何结构告诉它新对象的授权该写在哪 —— 它会猜,而猜错是静默的(多授或少授,两个方向都不会响亮拒绝)。A 让「这个对象的授权归哪个模块」有唯一答案。这一轴 A 明显占优。
④ 创业阶段不扩散:B 零新增声明面;A 新增一个组合机制 —— 但 A 复用 navigationContributions 已有的形状,不是从零发明一套,增量比看上去小。
推荐:先量一格再裁,而且那一格本来就要量 —— #14454 第 2 项要为 navigationContributions[].group 钉三条 pin(按目标 app 的 group id 解析 / 贡献进不存在的 group 要可见地失败 / 多包贡献同一 group 由 priority 定序)。三条全绿 ⇒「贡献进别人拥有的容器」这个形状在平台上成立且成本已知,A 的实现≈复刻既有形状,荐 A(①②③ 同向);任一条不成立 ⇒ A 的地基本身没有,只剩 B,而 B 必须把「Studio 的分组收益不含权限矩阵」明确写回 ADR-0130,⛔ 不许默默留着 —— 那正是本卡存在的原因。
⛔ 席位不代裁:A 属功能新增 + ADR 类,双重人工地板。
置信缺口(本分析看不见什么):看不见 ADR-0130 的「Studio 分组」收益对维护者值多少 —— 那是产品判断不是工程判断;也没量过除 HotCRM 之外还有哪些应用存在跨模块权限集,所以②的硬数字只有一个样本。
相关
#14454(测量与 pin 的那三项)· #14122(父单)· ADR-0130 §1.3(a) · objectstack-ai/hotcrm#1448
Generated by Claude Code
由分诊席(会话
session_019kDRpB7D2XzVzkaLp57T5D,R+94)自 #14454 拆出。#14454 同时挂了
pm:queue与needs-user-decision—— 而六个 pm 状态是 ONE-OF,同挂会让同一张卡既进可派发库存又进维护者收件箱。它这样挂是因为卡本身确实是混的:第 1、2、4 项是测量与 pin(可直接派),第 3 项要维护者拍板。⇒ 第 3 项拆到这里,#14454 留作可派发的测量卡。⛔ 拆分不改任何事实,原文照录。事实(逐字来自 #14454 第 3 项)
来源:hotcrm 分拆方案 objectstack-ai/hotcrm#1448 / PR hotcrm#1449,
docs/architecture/module-split-plan.md§「上游缺口」。父单 #14122。选项(逐字来自 #14454)
navigationContributions。两者都要写回 ADR-0130(docs-only 卡另开)。
<!-- os-decision-facets -->⚠️ 但 A 新增一个组合机制,声明面 +1,是永久义务;按本轴本义,这一笔要如实记在 A 的账上。
① 项目长远合理性(权重 ≥50%):ADR-0130 的整个卖点是「包边界让 Studio 能分组」,而权限矩阵是它 §1.3(a) 自己点名的三个可量化痛点之一。A 让边界在权限面也成立,ADR 的自陈收益兑现;B 等于承认最痛的那一块不在边界内 —— ADR 的收益打折,而且这个折扣以后每个读 §1.3(a) 的人都要重新发现一次。
② 实际业务拉动:实测,不是假想 —— HotCRM 6 套权限集里 4 套横跨 5–6 个模块,而分拆方案今天就卡在这一项上定不了稿。这是四轴里唯一有硬数字的一轴。
③ 防 AI 犯错:B 之下,一个 AI 作者面对横跨五个模块的权限集,没有任何结构告诉它新对象的授权该写在哪 —— 它会猜,而猜错是静默的(多授或少授,两个方向都不会响亮拒绝)。A 让「这个对象的授权归哪个模块」有唯一答案。这一轴 A 明显占优。
④ 创业阶段不扩散:B 零新增声明面;A 新增一个组合机制 —— 但 A 复用
navigationContributions已有的形状,不是从零发明一套,增量比看上去小。推荐:先量一格再裁,而且那一格本来就要量 —— #14454 第 2 项要为
navigationContributions[].group钉三条 pin(按目标 app 的 group id 解析 / 贡献进不存在的 group 要可见地失败 / 多包贡献同一 group 由priority定序)。三条全绿 ⇒「贡献进别人拥有的容器」这个形状在平台上成立且成本已知,A 的实现≈复刻既有形状,荐 A(①②③ 同向);任一条不成立 ⇒ A 的地基本身没有,只剩 B,而 B 必须把「Studio 的分组收益不含权限矩阵」明确写回 ADR-0130,⛔ 不许默默留着 —— 那正是本卡存在的原因。⛔ 席位不代裁:A 属功能新增 + ADR 类,双重人工地板。
置信缺口(本分析看不见什么):看不见 ADR-0130 的「Studio 分组」收益对维护者值多少 —— 那是产品判断不是工程判断;也没量过除 HotCRM 之外还有哪些应用存在跨模块权限集,所以②的硬数字只有一个样本。
相关
#14454(测量与 pin 的那三项)· #14122(父单)· ADR-0130 §1.3(a) · objectstack-ai/hotcrm#1448
Generated by Claude Code