背景
ADR-0099(#3109 合并,maintainer 已同意)定夺:posture 成为分级裁决的唯一输入(D1)、posture→每层动作映射表 + 六条不变量(D2)、EXTERNAL rung 激活链(D3)、拒绝显式 deny(D4)。
本 issue 跟踪其分期实现。严格串行、每期过矩阵门再进下一期;P1/P2 行为保持,P3 需求门控。与 ADR-0096(执行面准入)正交——若 P1–P3 出现 breaking 面,与 0096 D5 翻转共乘同一 major 窗口。
分期
P0 — 矩阵门先行(纯测试,无行为变更)
P1 — Layer 0 豁免门 + explain 收敛(行为保持,#2956 后已解锁)
P2 — Layer 1 短路级判定收敛(行为保持)
P3 — EXTERNAL rung 激活(需求门控:外部主体类型 / 门户立项,ADR-0090 后续 #6)
关联
ADR-0099(#3109)· ADR-0095(阶梯,Accepted)· ADR-0096(准入,正交轴)· #2946 Finding 2 / #2949(本 ADR 关闭的分叉类)· #2947→#2956(posture 透传,P1 前置)· #2920(B 轨总跟踪,已收口)
背景
ADR-0099(#3109 合并,maintainer 已同意)定夺:posture 成为分级裁决的唯一输入(D1)、posture→每层动作映射表 + 六条不变量(D2)、EXTERNAL rung 激活链(D3)、拒绝显式 deny(D4)。
本 issue 跟踪其分期实现。严格串行、每期过矩阵门再进下一期;P1/P2 行为保持,P3 需求门控。与 ADR-0096(执行面准入)正交——若 P1–P3 出现 breaking 面,与 0096 D5 翻转共乘同一 major 窗口。
分期
P0 — 矩阵门先行(纯测试,无行为变更)
authz-matrix-gate.test.ts落「探针 vs 携带 rung 等价」格:对每种 seed 主体形态断言hasPlatformAdminPosture(permissionSets)与ctx.posture === 'PLATFORM_ADMIN'一致P1 — Layer 0 豁免门 + explain 收敛(行为保持,#2956 后已解锁)
ctx.posture === 'PLATFORM_ADMIN';hasPlatformAdminPosture探针降为 fallback(仅无 resolver 上下文时;两信号并存时取更窄者并记录分歧)security-plugin.ts:71-77过时注释(「posture 未透传」的前提已被 fix(authz): carry derived posture rung on ExecutionContext (#2947) #2956 消除)P2 — Layer 1 短路级判定收敛(行为保持)
>= TENANT_ADMIN);读/写 super 位继续各管各边(I5)P3 — EXTERNAL rung 激活(需求门控:外部主体类型 / 门户立项,ADR-0090 后续 #6)
audience:'external'→derivePosture返回EXTERNALowner型共享规则(sharing.zod.ts:104experimental)保持在 rung 之外直至单独 enforce关联
ADR-0099(#3109)· ADR-0095(阶梯,Accepted)· ADR-0096(准入,正交轴)· #2946 Finding 2 / #2949(本 ADR 关闭的分叉类)· #2947→#2956(posture 透传,P1 前置)· #2920(B 轨总跟踪,已收口)