CORE-2B 候选 Sidecar、路由与 Raw Session
开发方案(先于代码)
本阶段建立与旧 Collector 完全隔离的 core-11.3.1 候选入口,默认客户端继续使用已回归的旧链。候选入口只做原始事实采集,不新增或改变任何指标公式。
目标
- iOS 15–16 使用 USBMux + Lockdown;iOS 17+ 只接受已建立的 tunneld/RSD 路线,缺少路线时 fail closed。
- 在唯一
DvtProvider / DTXConnection上完成 Bundle ID → PID → process list 二次核验,PID 变化递增 target generation。 - 并发承接 Sysmontap、Graphics、Device Network 三路 raw Adapter;写盘前分配 Session 全局序号。
- 生成 append-only JSONL 与 manifest;manifest 保存事件数、类型计数、drop 数、SHA-256 和结束状态。
- 回放必须校验 schema、全局序号、monotonic time、文件摘要和 manifest 计数,任一不符即拒绝。
- 新增独立 PyInstaller 构建脚本;不覆盖旧
perfowl_collector,不修改 Mac App 默认启动行为。
停止条件与回滚
- 身份未验证时不开始采集;缺值不写成
0。 - 任一 Adapter 启动失败时逆序停止已启动 Adapter,再关闭唯一 DTX owner。
- iOS 17+ 未发现目标 RSD 时明确报告 route unavailable,不回落到不适用的 USB DVT。
- 删除候选入口或关闭候选 flag 即可回到旧链。
指标与公式影响
本阶段仅保存 raw envelope,不产生派生指标,因此没有新公式进入 Registry/UI/报告,也不触发指标 knowledge 双写。原始值保持 source-native;scope、identity、drop、reconnect generation 必须随事件保存。
实施结果
composition.py:OS 分段路由、provider lease 与目标身份闭环;iOS 17+ 缺 RSD 时不静默回落。recording.py:为多 Adapter 事件重新分配 Session 全局序号,并生成带 SHA-256 的 manifest。orchestrator.py:统一启动、并发消费、取消和逆序关闭;异常分支不留下“完成”manifest。perfowl_collector_core_cli.py:提供probe、record、validate三个独立命令。build-sidecar-core.sh:构建独立perfowl_collector_core;解决 cryptography 与 sslpsk 同名 OpenSSL dylib 被错误扁平化的问题,两套库保持独立 loader 路径。
候选产物位于忽略目录 MacApp/.sidecar-build/output/core-x86_64/,不会覆盖旧 Collector。构建产物为 x86_64、约 40 MB;universal2 属于 CORE-7。
验收数据
| 验证 | 结果 | 等级 |
|---|---|---|
| Python 3.12 全量 Sidecar | 48/48 | E2 |
| 系统 Python 全量 Sidecar | 48/48 | E2 |
| Swift 全量 | 62/62 | E2 |
| 路由/身份/manifest 篡改测试 | 5 个新增用例全部通过 | E2 |
| 候选 PyInstaller 构建 | Mach-O x86_64;40 MB onedir | E2 |
| 候选产物冻结 API probe | pymobiledevice3 11.3.1;9/9;ready=true | E3 |
| 候选产物 ad-hoc 签名验证 | codesign --verify --deep --strict 通过 | E2 |
| VitePress | build 通过 | E2 |
| 真机 raw Session | 本阶段未执行,进入 CORE-3 | 门禁开放 |
初次打包发现 PyInstaller 把 sslpsk 私有 OpenSSL 3.x 与 cryptography 所需宿主 OpenSSL 扁平化为同一路径,导致 _SSL_get0_group_name 缺符号;构建脚本现保留 sslpsk 私有 .dylibs,同时按 cryptography 实际链接路径复制另一套库。修复后候选二进制 9/9 import 通过。
阶段结论
CORE-2 完成到“可独立构建、可录制、可严格回放”的候选基座;目前证据最高为 E3。默认 Mac App 链未切换,三路真机回包与停止/重连进入 CORE-3。
冻结归档:CORE-2B 实施与验收。