devlogP4E2implemented · partial
采集启动、首点与停止延迟修复结果
修复范围
| 批次 | 实现 | 质量边界 |
|---|---|---|
| L1 启动快路径 | 点击后先发唯一 launch;预热证据在 launch 后承接;ring 32 MiB、live 64 MiB 双字节预算 | 溢出写 source-loss 并降为 partial,不补 0 |
| L2 处理隔离 | 普通 Adapter 启动即消费;单线程有序 host writer;CoreProfile 写盘/解码离开 DTX/control loop;Frame decoder 使用独立短锁状态 | pymobiledevice3 仍是唯一 DTX owner,重型 worker 不并发修改普通 Metric Engine |
| L3 停止与 UI | 采样关闭、关闭源、封存 Raw、离线解析、报告五阶段;2s drain + 1s source stop + 1s owner + 0.5s lease;10s 故障兜底 | 超时按 partial;报告不继续持有设备 |
| L4 回归 | 300 MiB decoded-source 模型 20 轮;Python/Swift 全量测试 | E2;真机 E4 另行验收 |
验证数据
| 项目 | 结果 | 证据 |
|---|---|---|
| Python Sidecar/Core | 233 / 233 | E2,冻结 Python 3.12 环境 |
| Swift | 109 / 109 | E2,x86_64 macOS |
| 300 MiB 启动模型 | 20 / 20 | 唯一 launch、launch 先于 decode、click-to-launch ≤500 ms 合同 |
| 30 MiB 重型源下普通首点 | 20 / 20 | 合法 sysmontap Raw→Wire ≤250 ms |
| 启动模型完整测试进程 P95 | 329.413 ms | 含 Python/unittest 启动,不冒充产品 click-to-launch |
| 首点模型完整测试进程 P95 | 337.219 ms | 同上,不冒充 Raw→Wire 产品边界 |
| Registry | 64 / 64 | 业务指标公式、unit、scope 未改变 |
| Build 38 内部 ZIP | x86_64;110,299,005 bytes | SHA-256 d3255ee5039ae73c715393a3bf4ca293fcbfecf9954d19d5909aeb74230f6858;独立解包、严格 codesign 与 Core probe 通过 |
机器证据:perfowl-capture-latency-regression-e2-2026-09-08.json。P95 使用 nearest-rank:第 ceil(0.95×20)=19 项。
数据质量语义
- bridge drop 大于 0 时写入
core-profile.source-loss.raw,相关 Raw/Session 为 partial。 droppedEventHighWater取设备源与 bridge 丢失计数最大值。- JSONL 每 16 MiB 或 250 ms flush;封存仍执行 flush、fsync、SHA-256 与 replay。
- Startup 未闭合时 UI 显示采集中/解析中/缺失;外部观测不冒充九阶段 Total。
未关门门禁
- Build 38 的真机点击→launch、首 sample、设备释放与完整报告仍需 E4。
- 真实 300~450 MB Raw finalizer 墙钟尚未重测;异常可能在 10 秒兜底后保留 partial。
- 商店 App 九阶段仍受目标归因与 RAW schema 门禁影响。
- iOS 26/27、GPU data row、ThermalStatus、竞品同窗校准和公开发布门禁继续开放。
- 本机无有效 Developer ID identity,notary keychain profile 不可用;当前包为 ad-hoc 内部测试包,Gatekeeper / staple 未通过,不属于公证正式包。
下一阶段与整体进度
下一阶段为 Build 38 E4 体验验收:Startup 开/关各至少 3 轮,记录点击→launch、合法普通样本→Wire、首样本、停止反馈、设备释放、最终报告与 Startup quality。整体 64 项 Registry 合同保持;P4 离线修复完成,真机体验未关门。