Skip to content

[Security][P0] 禁止对已可见目标做路径回滚,改为 identity-bound staging 与提交状态机 #224

Description

@NWYLZW

背景

#195 当前回滚设计不可合并,并可能与 #184 共享问题:probe→rename/unlink/restore 的路径回滚竞态会在目标已被替换后删除或覆盖 replacement。

要求

  • 禁止对已可见目标执行路径回滚。
  • 改为 identity-bound staging 与显式提交状态机。
  • 目标可见前只能使用 committed:false 状态和 private、identity-bound cleanup。
  • 目标一旦可见,任何故障都只能进入 committed-degradedcommitted-indeterminate;不得再按 pathname 删除可见目标。
  • 重试只能执行 refresh/status,不得重新进行 pathname rollback。
  • 精确 hostile rollback 语义必须依赖 native handles,或改用 server-owned store + atomic pointer。
  • 覆盖 replacement-window、Koa、client 与 crash tests。
  • 链接并阻塞 [UX][P1] 数据资产“新建”入口未提供实际创建闭环 #195;如适用,与 [UX][P1] 项目插件只有停用操作,没有卸载或移除入口 #184 共享修复方向。

验收标准

在目标可见前发生故障时,仅能清理当前 identity 绑定的私有 staging;在目标可见后发生任何故障时,不会通过 pathname 删除或恢复可见目标,也不会删除/覆盖 replacement;状态、重试和客户端行为对 degraded/indeterminate 结果可观测且安全。replacement-window、Koa、client 和 crash 测试覆盖上述竞态。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions