File tree Expand file tree Collapse file tree
migrate-wireguard-endpoint Expand file tree Collapse file tree Original file line number Diff line number Diff line change 5757
5858## Migration Plan
5959
60- 1 . 在共享对话框工具中加入 Context wrapper 解包与定向诊断日志,完成 Android CI 编译门禁 。
60+ 1 . 在共享对话框工具中加入 Context wrapper 解包与定向诊断日志,进入 Android CI 编译验证阶段 。
61612 . 在真机上制造规则更新失败,确认日志显示 wrapper 可解析到有效 Activity 且错误对话框出现。
62623 . 在失败回调返回前退出页面,确认对话框被安全跳过且无 ` ClassCastException ` 、` BadTokenException ` 或崩溃。
63634 . 若回归异常,回滚共享工具改动即可;无数据或配置迁移。
Original file line number Diff line number Diff line change 22
33- [x] 1.1 在共享对话框工具中加入可测试的 ContextWrapper 链解析,防止自引用 wrapper 循环;为无宿主、finishing、destroyed 与显示异常分别加入不含错误正文的定向日志,以验证主题 wrapper 可解析到页面 Activity 的诊断假设。
44- [x] 1.2 更新安全显示逻辑,仅在解析到未 finishing/未 destroyed 的 Activity 时显示,并保持现有异常日志作为生命周期竞态的最后防线;不改动规则更新和配置状态调用方的业务流程。
5- - [x] 1.3 补充自动化回归覆盖:主题包装 Context 可解析并显示、无 Activity Context 安全跳过、自引用 wrapper 不循环,以及不可用 Activity 不显示;若现有单元测试环境无法可靠构造 Android 窗口,则保留纯 Context 解析测试,并把显示行为纳入下一真机闸门 。
5+ - [x] 1.3 补充自动化回归覆盖:主题包装 Context 可解析并显示、无 Activity Context 安全跳过、自引用 wrapper 不循环,以及不可用 Activity 不显示;若现有单元测试环境无法可靠构造 Android 窗口,则保留纯 Context 解析测试,并将显示行为留待实机 Preview 部署时验证 。
66- [ ] 1.4 提交该最小批次后立即运行 GitHub Actions ` CI / Build OSS APK ` (执行 ` app:testOssDebugUnitTest ` 与 ` app:assembleOssDebug ` );预期测试及 APK 编译通过,最低回传证据为 workflow/job 链接和失败时的完整 Gradle 错误片段。在结果返回前不继续追加实现改动。
77
88## 2. 真机行为验证与规范收口
Original file line number Diff line number Diff line change @@ -100,7 +100,7 @@ T4A 当前 `WireGuardBean` 的 Kryo 写入版本为 2,只持久化 `localAddre
100100
101101单元测试验证字段/省略/导入/分区;CI 生成至少单节点、selector/urltest、支持链式三类配置并调用项目已有的 libcore 配置检查或启动测试;真机最终验证实际 WireGuard 握手、DNS 与流量。敏感密钥只使用测试 fixture 或 CI secret,日志证据必须脱敏。
102102
103- 选择原因:JSON 结构正确不等于 Android VPN 生命周期中可联网,而直接依赖真机也难定位字段错误。分层门禁可以在每个最小批次快速失败 。
103+ 选择原因:JSON 结构正确不等于 Android VPN 生命周期中可联网,而直接依赖真机也难定位字段错误。每个最小批次都设置验证阶段,可以尽早发现问题 。
104104
105105### 7. Android 无链式 detour 的 WireGuard endpoint 绕行非空 direct
106106
@@ -116,7 +116,7 @@ legacy outbound 留在列表中时可依赖首项形成隐式默认目标;Wire
116116
117117## Risks / Trade-offs
118118
119- - [ T4A 的链算法假定所有节点均为 outbound,endpoint 的 detour/引用方向可能与 legacy outbound 不完全等价] → 第一批先锁定官方 v1.13.16 schema 和最小 builder;拓扑批次为每种支持位置保存生成 JSON,并由配置检查门禁确认后再进入真机 。
119+ - [ T4A 的链算法假定所有节点均为 outbound,endpoint 的 detour/引用方向可能与 legacy outbound 不完全等价] → 第一批先锁定官方 v1.13.16 schema 和最小 builder;拓扑批次为每种支持位置保存生成 JSON,经配置检查验证阶段确认后再进行实机 Preview 部署验证 。
120120- [ 按 ` type ` 分区可能误把用户自定义对象移动到 endpoints] → ` isEndpoint ` 使用明确白名单,仅包含目标版本确认的 endpoint 类型;未知类型不自动移动。
121121- [ 自定义配置 merge 可能覆盖自动生成的 endpoints] → 明确 merge 顺序并添加同时存在用户 endpoints 与自动 WireGuard endpoint 的测试,按 tag 处理冲突或沿用项目现有覆盖规则。
122122- [ WireGuard 私钥、PSK 等可能进入日志或测试产物] → fixture 使用无生产价值的占位数据,日志与 CI artifact 不输出完整配置中的密钥。
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ T4A 仍把 WireGuard 节点生成成 sing-box 已在 1.13 移除的 legacy outbo
88- 保留 T4A 现有 WireGuard 数据模型、编辑界面与 wg-quick 配置导入能力,并补齐 endpoint 字段映射:本地地址、私钥、MTU、监听端口、对端地址/端口、公钥、预共享密钥、保活间隔及 reserved。
99- 支持导入 sing-box WireGuard endpoint JSON,并继续兼容已有数据库中的 WireGuardBean 数据。
1010- 调整配置构建流程,使 WireGuard endpoint 可以参与单节点、链式代理和 selector/urltest 等既有引用关系,同时不再触发 legacy outbound stub。
11- - 补充格式转换、导入与最终配置结构的自动化测试,以及 GitHub Actions 和真机场景的滚动验证门禁 。
11+ - 补充格式转换、导入与最终配置结构的自动化测试,以及 GitHub Actions 和实机 Preview 部署验证 。
1212- ** BREAKING** :T4A 新生成的 WireGuard sing-box JSON 不再包含 legacy ` type: wireguard ` outbound,而使用 sing-box 1.13 endpoint 结构;这是对已被上游删除格式的有意替换。
1313
1414## Capabilities
Original file line number Diff line number Diff line change @@ -21,14 +21,14 @@ rules:
2121 tasks :
2222 - 将实现拆成可独立审查、回退和验证的最小自洽批次;一个任务不得混合多个可独立验证的行为变化。
2323 - 用二级编号标题表示批次边界;标题下的 1.1、1.2 等复选项表示该批次的实现、测试、提交和验证步骤,不表示每个复选项完成后都要暂停。
24- - 每个实现批次后立即安排对应的 CI/真机验证闸门 ,再列下一实现批次;不得把所有验证集中到变更末尾。
25- - 验证闸门应写明适用的 CI workflow/job、真机场景、预期结果和需要回传的证据;不适用的验证必须注明原因。
24+ - 每个实现批次后立即安排对应的 CI/真机验证阶段 ,再列下一实现批次;不得把所有验证集中到变更末尾。
25+ - 验证阶段应写明适用的 CI workflow/job、真机场景、预期结果和需要回传的证据;不适用的验证必须注明原因。
2626 - 将规范同步和本地静态校验纳入对应实现批次,不要为形式完整而制造不提供反馈价值的独立任务。
2727
2828operations :
2929 apply :
3030 guidance :
31- - 每次调用处理一个完整的最小自洽批次:连续完成同一编号章节内为形成可审查改动所需的实现、回归测试和提交/触发验证步骤,再停在该批次的 CI/真机反馈闸门 ;不得在 1.1、1.2 等子步骤之间机械暂停,也不得继续实现下一编号批次。
31+ - 每次调用处理一个完整的最小自洽批次:连续完成同一编号章节内为形成可审查改动所需的实现、回归测试和提交/触发验证步骤,然后等待该批次的 CI/真机验证结果 ;不得在 1.1、1.2 等子步骤之间机械暂停,也不得继续实现下一编号批次。
3232 - 开始新批次前先处理上一批次的 CI/真机结果;失败时只修复当前批次,不得推进后续任务。
3333 - 本地仅运行不依赖 Go/Android SDK 的静态校验;不得用本地推断替代 CI/真机证据。
3434 - 没有实际验证结果时,不得勾选 CI/真机验证任务;应报告待执行验证、预期结果和需要回传的最小证据。
You can’t perform that action at this time.
0 commit comments