任务:设备管理包设计的独立复核(读代码,不写代码)

监督者写了设备管理包的设计稿 docs/hub-r4-device-pack.md。写设计的人不是复核的人:请你对照代码和模型,找出设计里站不住的地方,回答设计里留给复核的三个问题,并估出核心要改多少。不要照设计稿的口气说“可行”:每个结论写明你读了哪个文件、哪几行得出的。

  • 分支和工作树:hub-device-review,目录 circle-hub-device-review(只写一个文档,不改别的文件)
  • 产出:docs/hub-r4-device-pack-review.md(中文,像别的 r4 文档那样带 nav_order: 7 的头)
  • 先读:AGENTS.md、docs/hub-r4-handoff.md、docs/hub-r4-device-pack.md(全文)、docs/hub-r4-architecture.md 第 2、3、5 节、node tools/show-element.ts D04 D07 D03 D02 C07 K03 T04 W06 R01 B05、contracts/src/pack.ts(context、工作流声明)、contracts/src/product.ts、contracts/src/resources.ts、hub/runs 里 start_run 冻结运行上下文和生产运行的地方、hub/knowledge 里同步计划和根指针的比较并交换、hub/connectors 里资源的形状。
  • 规则:不推送、不建 PR;不发布、不部署,不碰 7420 上的持久部署、钥匙串、环境配置文件和任何真实系统;提交只暂存这一个文件,git commit -s,一句首字母大写的英文祈使句,不加前缀和句号,空一行后写你自己的署名行。

要回答的

  1. 7.1 清单的家。 方案 A(拓扑文件 + 包里的解析器 + 知识根)能不能走现有的同步计划和生产器机制?具体卡在哪里(来源只能是构建站列表页吗?product@1 的哪些字段是必填而这里没有意义?根的标识、产品线名、版本字段怎么填才不别扭?)方案 B(资源)要改 resource@1 的哪些地方?各估改动的文件和量,给出你选哪个以及为什么。可以提第三种,但要比较。
  2. 7.2 租约意图放哪。 看 start_run 现在怎么算生产运行的结果、在哪个事务里存;租约取得应该和运行的冻结在同一个数据库事务里,还是之后?失败时运行记录里留什么?写出你认为对的顺序,指出每一步的文件。
  3. 7.3 并发。 乐观重试(带期望的租约表头)够不够?有没有更简单的做法(例如租约键上的数据库唯一约束加过期行的处理)?把两种做法在“两个用户同时订同一台架”“过期租约的行怎么清”两个场景下的行为各写出来。
  4. 模型一致性。 设计里的说法有没有和模型冲突:D04 的“租约按运行持有”与“持有者是血缘”(W06);“客户端不持有令牌”;D02 的前提;R01 只有用户和管理员;B05 动作记录能不能承载租约事件;context 是封闭列表(builds)——加 leases 要改合约的哪里(生成器、JSON Schema、发布校验)。列出每一处并说怎么处理。
  5. 漏了什么。 设计稿没写的失败路径:Hub 重启时租约的状态;时钟;同一用户重复预订;设备在清单修订里被删除而它还被占着;拓扑修订换了设备名;管理员强制释放时持有者的运行怎么办。每条给出建议的处理,别留“待定”。
  6. 工作量。 把设计稿 7 节末尾的拆分(L1 到 L5)改成你认为对的拆分:每项写文件、测试清单、估计的大小,并标出哪项必须先于哪项。核心里要改的文件按路径列全。

完成后在终端里回报:提交号、你的结论(三五句)、设计稿里你认为错的地方、没读懂或拿不准的地方。