diff --git a/docs/research/wayfinder-issue-17-legacy-handoff.md b/docs/research/wayfinder-issue-17-legacy-handoff.md new file mode 100644 index 00000000..68035644 --- /dev/null +++ b/docs/research/wayfinder-issue-17-legacy-handoff.md @@ -0,0 +1,242 @@ +# Wayfinder issue 17:Legacy 运行时交接的识别、卸载与恢复路径 + +- 票据:[研究:Legacy 运行时交接(停止/卸载/端口释放/登录项/系统代理)](https://github.com/qiuyuzhou/ShadowsocksX-NG/issues/17) +- 父地图:[Wayfinder: ShadowsocksX-NG 2.0 现代化重实现](https://github.com/qiuyuzhou/ShadowsocksX-NG/issues/1) +- 研究日期:2026-09-20 +- 适用范围:macOS 15+、仅 arm64、ShadowsocksX-NG 2.0;落实 [#7 决议「Legacy 运行时交接」](https://github.com/qiuyuzhou/ShadowsocksX-NG/issues/7):仅停止/卸载经正向识别的 `com.qiuyuzhou.shadowsocksX-NG.local` 与 `com.qiuyuzhou.shadowsocksX-NG.http`,不泛匹配、不自动删除 Legacy 数据。 +- 证据规则:系统契约以本机 man 页与 SDK 头文件为权威(Apple 网页为 JS 渲染,本次未取到正文,按票据规则以 man/头文件为准);Legacy 侧事实来自冻结源码与全量 git 历史;本机实测标注环境。**本机验证在 macOS 27.0(Build 26A428, arm64)完成;macOS 15 行为以文档为准,差异进入「遗留验证」。** + +## 决策摘要 + +1. **识别完全可行且无需泛匹配。** Legacy 的两个 job label、plist 文件名、登录项 helper bundle ID 全部是源码硬编码字符串,全量 619 提交历史中从未变更;识别 = 精确 label 的 `launchctl print gui//