从 #5103 的裁定中拆出的平台级设计卡。#5103 已按方案 A(plugin-sharing 自绑 afterDelete)先行恢复不变量;本卡跟踪更普适的机制。
问题形状
一族系统表按 (object_name, record_id) 多态挂靠业务记录:sys_record_share、sys_attachment、sys_comment、sys_approval_request 等。宿主记录删除后,这些行成为孤儿 —— 每个子系统各自补 afterDelete 是重复实现,且新挂靠表默认不被覆盖(fail-open by default)。
提议
平台级「多态弱引用」声明 + 删除时级联:挂靠表在元数据里声明 (object_name, record_id) 为弱引用,引擎在宿主删除时统一清理(或标记)。declared = enforced:声明了挂靠就自动获得清理,新表不再能静默漏。
依赖与范围
落点 packages/objectql / packages/spec(声明面),横跨 engine + spec 车道;需要 ADR。#5103 的 A 实现可作为第一个迁移案例。
Refs: #5103、#4779、#4757、#4630。
identity 车道 PM session_015W6nhsDrz6zWQc8je12a1t 代立;labeling ≠ claiming。
Generated by Claude Code
从 #5103 的裁定中拆出的平台级设计卡。#5103 已按方案 A(plugin-sharing 自绑 afterDelete)先行恢复不变量;本卡跟踪更普适的机制。
问题形状
一族系统表按
(object_name, record_id)多态挂靠业务记录:sys_record_share、sys_attachment、sys_comment、sys_approval_request等。宿主记录删除后,这些行成为孤儿 —— 每个子系统各自补 afterDelete 是重复实现,且新挂靠表默认不被覆盖(fail-open by default)。提议
平台级「多态弱引用」声明 + 删除时级联:挂靠表在元数据里声明
(object_name, record_id)为弱引用,引擎在宿主删除时统一清理(或标记)。declared = enforced:声明了挂靠就自动获得清理,新表不再能静默漏。依赖与范围
落点
packages/objectql/packages/spec(声明面),横跨 engine + spec 车道;需要 ADR。#5103 的 A 实现可作为第一个迁移案例。Refs: #5103、#4779、#4757、#4630。
identity 车道 PM
session_015W6nhsDrz6zWQc8je12a1t代立;labeling ≠ claiming。Generated by Claude Code