Files
sub2api/issues/plugin-refactor/phase-4_relocate/REVIEW-RISK.md
T
shaw b3261c94ea docs(phase-4): 依赖测绘 + Phase-4 整包搬家 Deferred 裁决
双视角评审实测证伪整包搬家可行性前提(go build 证实 import cycle):
- openai 子系统实为 46 文件 65K 行(含 69 白盒测试),非摸底称的 7168 行单文件
- 双向硬耦合:正向 178 符号/64 未导出;反向 57 符号经 6 个核心文件结构级引用
- 69 个 openai 测试 100% 白盒,move 即破 gate,无黑盒等价锚点
- 循环论证(L2 触发=搬家完成、搬家收益=为 L2 铺路)+ 零拉动信号

裁决:交付 C-C 依赖测绘,Phase-4 标 Deferred + 可观测触发条件。
架构债务发现:AccountRuntimeBlocker 误命名 openai 专属、实为通用调度依赖。
含 Phase-3 PHASE_SUMMARY 归档。
2026-06-12 08:46:02 +08:00

2.1 KiB
Raw Blame History

Phase-4 评审 — 回归风险/循环依赖/YAGNI 视角(2026-06-12)

评审对象:SEAM-DESIGN v1。结论与架构评审收敛:第一刀 C-C + Deferred。实验性移动已 git checkout 还原,工作区干净。

量化风险账(实测)

  • 规模硬伤:设计称"openai 7168 行单文件",实为 46 非测试文件 ~29K 行 + 69 测试文件 ~35K 行;
  • 循环依赖已编译器证实:构造正向+反向 import 后 go build 报 import cycle not allowed——非"可能成环"而是必然;
  • 正向 178 符号(64 未导出须导出/下沉);反向 57 符号(19 导出/38 未导出),含 4 类骨架级硬耦合(struct 内嵌/签名/构造器/wire.Bind);
  • gate 致命缺口:69 个 openai 测试 100% 白盒 package service,move 后自身编译不过——用于证明等价的 gate 会被这次 move 摧毁,无稳定黑盒锚点;
  • diff 估算:最小可编译动作触及 150+ 文件、导出 64 符号、下沉含计费载荷的类型、改写 69 测试,数千行——功能变化为零。

裁决表

# 裁决
Q1 C-C,本阶段不动代码
Q2 必撞环(已实测);三选 C-C
Q3 下沉必须单列前置,绝不第一刀做(含 OpenAIForwardResult 计费载荷 R-2.1 高危)
Q4 不够,明确不通过(仅 3 passthrough 特征化,主体 29K 无黑盒)
Q5 Deferred 成立(五项全中 YAGNI/过度设计:高 diff/零收益/必成环/gate 缺/无拉动)

YAGNI 裁决

对照 CLAUDE.md"禁止过度设计:不为假设的需求编码"——openai 子包化无真实 L2 拉动,ROADMAP 的 L2 触发条件"搬家完成"是自指循环论证。高 diff 零行为收益是教科书反例。

副产品建议(R6)

未来若推进,正确顺序:先黑盒化测试建 gate → 先打破反向边(接口化/类型下沉/AccountRuntimeBlocker 归位,无需搬家的低风险依赖收敛,独立 PR)→ 再评估子包化。R6 中最低风险高价值单项=AccountRuntimeBlocker 归位,列为需用户决策的可选下一步。