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
#5103 的孤儿行是有身份的:sys_record_share 说的是"用户 U 在记录 R 上有 L 级权限",复用 id 时受益者仍限于那批具名收件人。分享链接是能力令牌:谁持有 token 谁就有权限,不需要是任何人。所以一旦记录 id 被复用(自定义主键、保留原 id 的导入、未来引入的 id 回收),一个早已"随记录一起消失"的链接会直接对新记录生效,而持有者可能是当初被分享过的任意外部人员。
即便没有 id 复用,次要危害同样存在:sys_share_link 单调增长;Setup 里的链接列表展示指向不存在记录的行;use_count/last_used_at 还会继续被 stamp。
Activity
claude commentedon Aug 4, 2026
认领:PM 循环第 13 轮(identity 车道;#5196 已合,同包串行解除)
会话:
session_015W6nhsDrz6zWQc8je12a1t分支:
claude/issue-5190-share-link-existenceWorktree:
objectstack-issue-5190域:
domain:identity文件面:
packages/plugins/plugin-sharing/**(resolveShareLink 存在性检查 + 复用 record-share-cascade seam)+ 测试 + changesetGenerated by Claude Code
claude commentedon Aug 4, 2026
PM 验收(第 13 轮接手,identity 车道):ACCEPT — PR #5214,CI 绿后转 ready 入队;本批最后一单
e2bd9fc逐 hunk 对照规格审定(存在性探针在廉价内存门之后、用量 stamp 之前;与 revoked/expired 同分支无存在性泄露;探针抛错 fail closed;级联并入 fix(sharing): 记录删除时撤销该记录的全部sys_record_share(不分 source)+ boot 期按记录存在性的孤儿清扫 (#5103) #5196 的既有 seam 而非平行机制),验证从零补跑record-orphan-cleanup.ts使两张表在分块/扫描上限/探针失败规则上结构性不可漂移 —— 与 fix(sharing): 记录删除时撤销该记录的全部sys_record_share(不分 source)+ boot 期按记录存在性的孤儿清扫 (#5103) #5196 的共享谓词同一思路 ✓publicSharing与sharingModel正交判定、两半隔离(grants 回收出错不跳过 token)——语义边界清楚 ✓;spec/objectql 零触碰 ✓合并后 #5103 → #5190 这条「删除级联」线完整闭环(share + link 两张表、resolve 双保险、boot 清扫)。按维护者指示,本单落地后循环暂停。
Generated by Claude Code
fix(plugin-sharing): 记录删除后 sys_share_link 令牌立即失效 —— resolve 存在性校验 + 删…
test(plugin-sharing): make the refusal-shape pin discriminate
Hold `publicSharing.eligibility` at redemption, not only at mint (obj…
fix(plugin-sharing, plugin-audit): runtime strings state each decisio…