Gate F0 · F0-02 · Controlled fixture readiness
Fixture 已能稳定编译,真机重绑停在开发签名前置
本轮完成 Perfowl 自有 PerformanceProbeFixture 的可控负载、Marker 和受控 Crash 设计,Release iphoneos 未签名构建通过。当前专用钥匙串缺 Apple Development 身份,现有开发 profile 又与可用证书/私钥不匹配,因此按停止条件未安装、未启动、未伪造 PID/generation 证据。
Verdict
分层结论
Fixture scope
可控场景和证据 Marker
| 场景 | 输入 | 证据边界 |
|---|---|---|
| CPU | 1/2 worker · 30s,1 worker · 5s,手动停止 | Marker 记录 worker 数和时长,不假定线程固定在某个核 |
| 内存 | +10/+50 MiB、20 → 40 → 80 MiB 阶梯、释放 | 分配值是输入;实际 RSS 回收由后续采集验证 |
| 主线程 | 50/100/150/250 ms Stall | start/end Marker 建立共同时间点 |
| 显示回调 | 请求 30/60/120 Hz 并显示回调 FPS | 明确不把 CADisplayLink 回调值宣称为最终呈现帧率 |
| 网络 | GET,1–1024 KiB POST | 记录方法、状态、字节和耗时;不写入业务账号 |
| 生命周期 | scene phase、启动 PID/Bundle、受控 Crash | Crash 必须人工二次确认 |
所有关键事件使用 PERFOWL_FIXTURE 前缀,包含单调 sequence 和 system uptime,供后续重启后切分 generation。
Build evidence
构建产物检查
| 检查 | 结果 | 判定 |
|---|---|---|
| Configuration / SDK | Release / iphoneos / generic iOS | PASS |
| Bundle / Minimum OS | com.perfowl.performancefixture / 16.0 | PASS |
| Mach-O | 64-bit arm64 executable | PASS |
| 签名 / embedded profile | unsigned / absent | 符合本次未签名检查 |
| 非系统动态依赖 | 0 | 无 Probe / 无注入依赖 |
Signing gate
签名阻塞的根因链
- 专用钥匙串可解锁
仅执行 unlock,未修改 partition list 或私钥 ACL。可见 4 个分发签名身份,但 Apple Development 身份数为 0。
- 现有开发 profile 不构成签名对
有 1 个未过期 development profile 覆盖当前 USB 设备与 Bundle ID,但它包含的开发证书与本机可用私钥身份不匹配。
- 两条签名路径都已实测
手动使用现有 profile 因 certificate mismatch 失败;Xcode automatic provisioning 因未配置开发者账号且没有可生成的 profile 失败。
Evidence boundary
本轮证明了什么
| 层级 | 状态 | 证据 |
|---|---|---|
| 源码 | PASS | 场景、Marker、Bundle 与项目配置已复核 |
| 编译 | PASS | Release iphoneos 产物和 Mach-O 检查 |
| 签名 | BLOCKED | 身份/profile/设备/Bundle 精确匹配为 0 |
| 安装 | NOT RUN | 没有有效签名 App,按停止条件跳过 |
| 运行时重绑 | NOT RUN | 尚无真机 PID/start/generation 时间线 |
Artifacts
脱敏证据包
Resume point
解锁签名后的续跑顺序
- 签名产物复核
验证 codesign、embedded profile、application identifier、设备覆盖、arm64 和非系统依赖。
- 安装与可见性
优先使用 CoreDevice install;若本机 CoreDevice 仍异常,使用 pymobiledevice3 对显式 USB 设备安装,只保留目标 App 行。
- 两轮重绑时间线
bundle → executable → PID/start → exit → PID absence → relaunch → new PID/start → generation+1,校验累计指标不跨 generation。
依据
- Perfowl Gate F0 详细验证计划 v1 — F0-02 通过条件、证据层级与停止点。
- Gate F0 · B 批次连接冒烟结果 v1 — 当前 USB iOS 16 设备和 DVT 入口证据。
- PerformanceProbeFixture README — 可控场景、构建方式和测试约束。