治理 Task 保留与删除
监督带栅栏清理、保存 Tombstone、应用 Legal Hold、要求独立审批,并保留 Purge 证据。
分离生命周期
MCP Handle TTL、Workflow Execution Deadline、Terminal Task Retention、详细 Tombstone Retention、Legal Hold 与 Archive Retention 是独立生命周期。混用可能删除活跃工作或永久 保存个人数据。
Execution Worker 不删除历史;独立控制面负责 Retention 与审计销毁。
清理监督
Supervisor 用有界 Keyset Page 发现符合条件的 Terminal Task Tenant,分配确定性 Process Shard,认领一个带栅栏 Tenant Cleanup Lease,维持 Heartbeat 并删除有界 Batch。Lease Loss 会立即停止该 Tenant。
原子删除插入不可变 Tombstone,并移除依赖 Checkpoint、Signal 与剩余 Reservation。Active、 Leased、Queued 与 Waiting Task 永远不符合条件。
Legal Hold 与导出
Legal Hold 按 Tenant 与 Checkpoint 限定,记录 Principal、Reason 与 Database Time,Release 后仍可审计。只有 Archive 返回持久 Receipt 后,Export Confirmation 才推进单调 Cursor。
Prepare 排除 Active Hold,只包含不高于已确认 Export Watermark 的 Tombstone。Execution 在删除同一原子操作中再次检查 Hold。
双人审批 Purge
一个认证 Principal 准备精确有界 Member Set,另一个 Principal 必须在 Deadline 前 Claim 并 Approve,由当前 Fenced Owner 执行。Preparer 不能自批;过期 Reviewer 或 Executor 在 接管后无法决策。
Authorization Permission 分别限制 Hold、Release、Export、Prepare、Approve、Execute 与 Evidence Read。Policy Outage 与 Denial 都关闭式失败。
持久证据
成功 Purge 原子删除详细 Tombstone,并插入不可变 Aggregate Evidence,其中包含 Tenant、 Principal、Count、Cursor Range、Export Watermark、Fingerprint 与 Database Execution Time。 Retry 返回相同 Evidence。
Metric 只使用固定 Operation 与 Outcome。Tenant、Principal、Checkpoint、Purge、Lease 与 Receipt Identity 不能进入 Label。
生产上线步骤
把治理任务作为独立的定时 Worker 运行。先关闭清除,只验证发现与租约指标; 再只开放一个租户和一个小批次。控制循环始终按同一顺序执行:
发现合格租户 -> 获取带 fencing 的租约 -> 心跳续租
-> 导出 tombstone -> 确认归档回执 -> 准备清除
-> 第二位负责人批准 -> 当前租约持有者执行扩大范围前,要在任意两个阶段之间模拟租约丢失,并重复使用相同的导出与 清除标识。重试必须返回原回执或原证据,不能产生第二次决定。对导出水位 延迟、审批过期、反复丢失租约和策略服务不可用告警;出现这些情况时只暂停 删除,不要停止正常的执行 Worker。