planP7E1approved · gate-open2026-10-01

本地可信采集内测版 Gate B · 支持矩阵与真实 UI E4 合同

0. 决策范围与证据边界

本页是 内部 Beta Gate A–E 总计划 的 Gate B 冻结件。Owner 本任务让同一 AI 决策、实施、测试和证据自验收;这不是第三方独立验收。Gate A/P1a 在 Canonical §25 只完成 E2 程序与包子门。截至本页写入,真实 UI E4 尚未按本合同采集,Startup 稳定性改善 NOT PROVEN,A1 UI E4 OPEN,Hybrid FROZEN。

本批仅冻结测试范围、判据、上限与失败停机。不改产品、不采新 Session、不新建工作树/常驻环境、不发布网站;旧会话、旧公证包与原四项他方 WIP 原样保留。Gate B 的 PASS 仅表示合同和机读矩阵可复算,不表示任何 metricID 已在本次设备上通过 E4。

1. 冻结输入与目标

项冻结值与意义
源码基线Gate A 提交 df3dd00;测试开始前仍须重核 HEAD/包内 Core、双远程和共享区
唯一测试包b78 x86_64 已公证 ZIP:Perfowl-SW1-P1a-OnlineReceipt-b78-x86_64-notarized.zip;109,833,589 B;SHA-256 fa5c268dbba9072e194d478aa79c8a4bf0faae6b72be29c3c65086b737f9286a
宿主与目标x86_64 macOS 宿主;设备 A(iOS 17.0 / 21A327、有线配对且设备详情查询成功);目标 App A 为已安装受控 Fixture。型号、设备身份和目标标识只在私有封存件,公开件仅用别名
入口从上述 ZIP 独立解包的真实 SwiftUI App,经 AX 标识 perfowl.device.picker、perfowl.app.picker、perfowl.capture.toggle 选设备/目标并 Start/Stop;直接启动包内 Core 或命令入口不算正式 UI
证据目录只建一个本轮私有批次目录,原始 Session、逐轮 AX 操作、资源、哈希和失败记录都留在其中;不复制成多个环境

机读矩阵:internal/beta-support-matrix-2026-10-01.json(Registry 66/66 逐项列 metricID / scope / unit / source / definitionVersion / mode / requestedInCorePlan / supportedDeviceBuild / quality / e4Evidence / knownMissingReason)。冻结时全部 supportedDeviceBuild=null、e4Evidence=null;设备 A 是验证目标,不是已支持声明。矩阵取值不从页面文案反推:源字段来自 Registry 快照,采集组来自 WorkbenchMetricCatalog.metricIDsByGroup。

2. 内测候选与明确不承诺项

真实 UI 的核心 CapturePlan 只选 cpuUsage + memoryUsage + network 三组,实际向 Collector 请求 12 个唯一 metricID。其中六项为 Beta 必需但待 E4:ios.process.cpu.non_normalized、ios.process.memory.physical_footprint、ios.process.network.send_rate、ios.process.network.receive_rate、ios.device.network.send_rate、ios.device.network.receive_rate。其余六项虽随组三组一并请求(设备 CPU 两项、进程内存两项、设备内存两项),仅观察,不因有值就自动进入支持承诺。六项必需中的任何一项若不能证明目标归属、来源和缺值语义,Beta 核心门 REPAIR REQUIRED;不能靠删失败轮次或把整机网络冒充目标进程网络放行。

Startup 12 项、Frame 17 项仅列为条件实验,与核心矩阵分开。Frame 的 17 项是 Registry 全体,其中 UI frameTime 组直接请求 15 项,P95 与 pacing jitter 另列派生项;不把「15 项 UI 请求」误说成「Registry 只有 15 项」。Startup Total 只有在单独 OFF/ON 真 UI 正负例完成后,才可能从实验候选进入内测支持;未闭合或无 eligible tail 必须保持 missing / inconclusive。FrameTime/FPS 未过来源和长会话 E4 前不进入内测支持。其余 25 项不在本 Beta 承诺内。Registry 数 66 不是支持数。

UI 与报告须保持本矩阵的“待 E4 / 候选 / 不承诺”区别。若现有 UI 对未通过的项使用暗示已验证的显示,Gate D 必须另立最小文案/显隐修复并重包复测,不准靠解释文本绕过。

3. 取证入口、同轴时序与逐轮封存

每轮从冻结 ZIP 同一 App 进入:包 SHA、App/包内 Core SHA 和签名状态复核 → 设备/目标 AX 选择 → 截图状态、三组选择与 CapturePlan 摘要冻结 → AX Start → 首 UI 反馈/首有效点 → AX Stop → Core 退出 → 最终报告可见/落盘 → 关闭并封存。记录独立 Session ID 的私有别名、源 Raw/Metric/Report 摘要、请求与实际 metricID、每项样本数/quality/missingReason、来源 drop/队列、网络源字节与聚合字节、sourceConsumerTaskCount、timedOut、closeoutStatus、networkSourceDropCount 与 networkBytesBalanced。最后复算 Raw→派生→报告哈希链;旧目录不回改。

AX 驱动须在同一个 host monotonic 时钟域记录动作调用前后边界和有界轮询看到的 UI/报告状态;“AX 返回时间”不是按钮回调时刻,文件 mtime 不是报告生成起点。只用保守上界裁门:点击前 → 首可见反馈,Stop 调用前 → Core 退出/报告可读;轮询频率 ≤1 Hz、记录量有界。若无法取得同轴边界,记 unknown,不得相减拼出精确耗时或自判响应门 PASS。状态事件如产品已有可验证绝对同轴时间戳,另列其精确区间与依据,绝不与上界混算。

宿主资源用 ≤1 Hz 有界采样,取真实 App+Core 的 CPU、RSS、物理磁盘 I/O 峰值、首反馈与长任务完成时间;被系统策略拒绝时记 unknown,不填 0。每轮单独记录 P50/P95 只在足够轮数后汇总,最慢轮单列。公开报告不带设备名、原始目标标识、原始进程号或凭据。

4. Gate C 顺序、预算与停止门

串行单设备、无自动重试。先做不创建 Session 的 UI/包/设备预检。正式核心矩阵:①三轮短会话(每轮 60–120 s,截图关闭);②三轮 5 分钟截图关闭;③三轮同配置 5 分钟截图开启;④三轮 20–30 分钟长会话;⑤目标退出、来源掉线/恢复、立即 Stop 三种负向场景各最多三轮。单类有失败即封存该类并暂停后续相依场景,先归因、再立新合同;不补跑覆盖失败。Startup 独立最多 OFF 三轮 + ON 三轮,同一冻结场景顺序交错,须逐轮列 eligibility、在线 _emitted、事件时在线文件与最终 Raw replay;ON 没有 eligible 输入则判 inconclusive,不擅自扩大轮次。Frame 条件实验须在核心长会话成功后另立最小合同,不偷偷混进核心十二项。

短轮 wall ≤120 s、Raw ≤1 GiB;5 分钟轮 wall ≤7 分钟、Raw ≤2 GiB;长轮 wall ≤35 分钟、Raw ≤6 GiB;每轮资源探针自身 RSS ≤64 MiB、采样 ≤1 Hz;全批私有数据预算 ≤40 GiB。触线即通过真实 UI Stop、保存 partial 证据并停后续相依轮,绝不删除失败轮换“干净结果”。若设备掉线、包/Session 哈希漂移、网络字节不守恒、已承诺来源无解释丢数、Core 10 s watchdog 超时、隐私泄漏或监测中断,同样停轮。测试不在此批修改产品以“让数据过门”。

复杂度:逐事件已有路径不新增循环;取证按 Session 文件单遍 SHA 为 O(bytes),样本/资源计数 O(N),资源采样 O(duration) 且 1 Hz 有界,逐轮串行并发 1。不得在 UI 线程重扫 Raw;不重复解码 349 MiB 旧 blob。执行前须记录可用磁盘容量和第一轮预计吞吐;若 40 GiB / 时间预算不够,先降级为 partial,不暗中减少正式样本数。

5. E4 裁定与交付形态

每个正式场景要求 3/3 独立真实 UI 轮,不能把同一 Session 的三个阶段充作三轮。核心必需六项逐轮检查来源归属、原始/派生一致、样本覆盖和缺值 reason;合法 0 与 missing 按各 Canonical 公式分别裁,不以“有值率”代替准确性。网络须逐轮 Σaggregate = Σsource、networkSourceDropCount=0、networkBytesBalanced=true,进程与整机范围不可互换。Stop→Core 退出保持现有 10 s watchdog 且不发生 timed-out;报告与 UI 时延采用同轴上界或 unknown,不能从 mtime 倒推。条件 Startup/Frame 分别判,不因核心通过而连带通过。

Gate C 原始/逐轮机读结果、失败轮、资源/时序、SHA 与隐私全留存后,由同一 AI 按 Gate D/E 做证据自验收。全部核心门通过且最终同源码、同配置包重新签名公证/独立安装,才可能交内部 Beta;本 b78 是 Gate C 输入包,不自动成为最终 Beta 包。若任一必需证据缺失,交付仍为 partial 或 REPAIR REQUIRED,不得宣称稳定性提高或公开发布。