静态帧修复 · 最终验证快照

---
type: devlog
title: 静态画面 FPS 与 FrameTime 空缺的分层诊断
date: 2026-10-16
status: validated
kind: validation
stage: P4
evidence: E4
metric: ios.foreground.fps
---

## 当前授权与范围

Owner 明确启动静态画面测试;启动偶发失败的专门修复暂缓,已有手机配对服务 highwater 终止的原件保留,服务内存增长原因仍 unknown。此前“先启动完全关闭才测试帧”的顺序由本次指示替代,不等于启动已修复。

本批同一 AI 负责方案、执行与原件复核,区分各层证据。Git 基线 main `999c40a`,写前共享状态 1112 项、暂存空;私有独占目录 `static-display-20261016-01` 保存状态和小型旧 WIP 摘要。仅修改本批明确路径,不接管共享 WIP、不打包整个脏工作区。既有 Build73 帧管线专项 E4 验收成果保留,不因新静态场景撤回历史成果。

## 定义与预期(先于实施)

FPS 计算收到且获准的 presentation 数,不等于面板刷新率;FrameTime 只来自设备相邻 presentation 端点,不由 1000/FPS 或主机时间生成。真正静止允许没有新提交帧;没有新帧间隔时 FrameTime 可为空,而不是断链的充分证据。参考 Apple《Explore UI animation hitches and the render loop》9:13(https://developer.apple.com/videos/play/tech-talks/10855/):没有 commit 时不提交新帧。

理论上,完整可观察的一秒零 presentation 窗口允许 FPS=0;当前事件流的沉默本身不能证明窗口完整。现有产品在主机无帧超过 1 秒时标 `stale-source`,同身份时钟的最新系统点超过最后帧 2 秒时标 `stale-device-source`;这些只说明最后帧老,不独立证明通信断开,也不能证明静止。FrameTime 一次发布后为 `missing-no-new-frame`,不重复旧值。当前知识页关于静止必回 0 的文字与实现须核对,不能据旧文字放松真实性门。

## 执行顺序与停止条件

1. E2 确定性软件矩阵:静止、延迟批送、显式来源关闭、恢复新帧、前后台、身份/代际变化。比较同一输入证据是否能区分“真静止”和“未送达”;验证空值不伪造为 0,旧 FrameTime 不重复,恢复不跨代拼接。
2. 只读检查已安装测试 App、正确手机与标准 Mac 安装状态;不操作另一手机。当前 Lab 只有内存场景,不虚构帧控制按钮,不以 CADisplayLink 回调或截图当真实 presentation 真值。
3. E4 定位先做一次最长 45 秒的标准产品静态采集,最多一个新 Session,启动与收尾各 30 秒上限。仅当手机/目标/前台与无活动负载能核实时准入;不通过则记录缺口,不盲目重试。如已有可控视觉变化入口,单列事件时间;无此入口则本轮不声称完成动画对照。真正断链仅软件注入,不主动拔线或终止共享系统服务。
4. 对 Raw 的系统采样、帧事件、来源健康、设备时钟、指标质量、结束封口作一次流式审计。持续 CPU/内存只证明那些来源活跃,不等于帧流完整。只有发现可证缺陷才进入另行明确的最小修复;不靠补值改善连续率。

## 效率与完成判据

串行并发 1;软件组 120 秒、监督进程 192 MiB;真机单次最多 105 秒、原件复制上限 256 MiB。分析 O(事件数)、额外内存有界于计数和最近窗口,不重复解码大启动 blob。测试前、批后与持续 30 分钟检查空间,至少 10 GiB 且超过预计新增量两倍;本批预计不超过 512 MiB。旧失败、Raw、封存清单不清理。

本批完成定位需交回:各软件分支、实际采集是否执行、静态时输入/质量和恢复事实、未证明事项、原件 SHA、共享 WIP 守恒与磁盘记录。定位完成不等于新帧指标正式验收,不以静态空值直接判采集故障;没有 E4 不宣称当前版本静态场景已修复。产品变更与正式指标验收仍须履行知识/开发记录、归档、窄提交双推(GitLab 一次)和网站发布闭环。

## Validation Update · 2026-10-16 · 首轮低活动观察

### 软件与工具

已有 10 个相关模块合计 194 项回归通过,62.679 秒;新增 `test_static_display_diagnosis.py` 的 8 项诊断通过,0.007 秒。覆盖 one-shot、不用其他来源心跳推导零帧、静止与扣留事件同观察输入不可区分、完全沉默不虚构设备年龄、迟到旧帧不恢复当前值、真正新帧恢复且不重复、后台隔离与错误身份不恢复水位。显式断链和真实动画的对照尚未执行,不将这些软件分支等同于 E4。

初次旧测试启动缺少导入路径,5 个模块加载错误,未进入产品断言;修正执行入口后上述 194 项成立。新增测试首次将既有后台标签误写作 `not-applicable`,实际是 `not-foreground`;更正测试标签后 8 项通过,产品未为测试改动。失败输出保留,不隐藏。

### 实际现有包观察(非正式验收)

正确手机型号与既有 Lab 90.21.3 的只读连接/进程核对成功,5.955 秒,所有自有连接正常关闭。Mac 原先未运行,正常打开唯一标准安装 Build175,选择 Lab;一份设备选择工具未成功确认唯一节点(exit6),后续以实际 Session 计划的精确设备与目标身份双核对,不以动作返回推断身份。没有安装、重新打包或产品源码更改。

一次标准 UI 采集正常开始/停止各 1 次,startupDisabled=true,32.633 秒含准备/收尾,56 个发布样本,completed/durable;31 个文件、8387703 B 原件复制并重核一致,监督峰值 RSS 19148800 B。发布样本前台标志 56/56 为 true(产品侧状态,不冒充独立屏幕真值)。没有发送新配方或用户触摸自动化,不曾主动断开设备。

- ActivityTrace 共 779 条解析回调,58 条匹配帧、721 条被帧白名单拒绝的其他事件;底层解析收到 56 个数据批次。最后一次匹配帧后仍有其他解析回调持续 9.499 秒。
- 本地订阅 delivered=58 / consumed=58,pending=0 / dropped=0 / undrained=0。它只证明已匹配帧进入本地消费端,没有证明设备端帧完整。
- 原始帧 host 跨度 17.974 秒;最后两条帧间的设备 presentation 间隔 17326.141375 ms、主机接收间隔 17328.818029 ms,差 2.676654 ms。原生 predecessor 时间与上一已见 end 相等,但 frameSeedDelta=19,不能擅自将 seed 当呈现帧数或宣称完整。该长区间按既有门标 `source-gap`,没有改写为 jank 或 idle 数值。
- FPS 有值 6/56:candidate 1 / valid 5;其余 stale-source 4 / stale-device-source 46。FrameTime 有值 2/56:valid 2;其余 missing 1 / missing-no-new-frame 3 / source-gap 4 / stale-device-source 46。这里的有值率不是静态场景准确率、连续率或正式验收失败率。
- 系统采样、进程 CPU/内存、进程网络的输入跨度分别约 27.887 / 27.500 / 27.988 秒;末尾帧年龄下界 9.405 秒。结合 ActivityTrace 其他回调,不能把本轮空值直接归为整个采集连接断开;仍不能据此证明没有遗漏 FrameLifetime。

### 流程偏差与不成立的结论

只读闲置检查首次使用错误的 HouseArrest 根路径,AfcFileNotFoundError;采集编排未将这一失败串联为准入阻断,仍运行了上面一轮,属于测试流程缺口。收尾改用既有容器路径后,38 份历史记录均终态且 workloadReleased=true,但这只是**后置观察**,不能反证采集前状态。本轮没有屏幕时序或受控动画,故只称低活动诊断,不称严格静态对照,不发正式指标 PASS;不重复本轮补证或隐藏失败。

初步机制:无新帧与批送/缺失共用保守过期门;这会呈现空曲线,但不能单凭空曲线判断采集失联。既有知识页“静态必回0”的实现承诺已按当前代码收窄,FrameTime 一次性事实语义补充到唯一 Canonical 页。没有放松过期门、没有补 0/旧值。

**下一门**:先把闲置前置与采集串为 fail-closed,并验证失败时 Start=0;随后补自有 Lab 的受控静止→动画→静止场景和实际执行记录,才能开展独立受控对照。该新场景需先方案后实现,不把当前内存场景冒充帧测试工具。当前产品不变,文档与测试为本地 partial,尚无提交、推送、网站发布或新测试包。

## Repair Plan · 2026-10-16 · Owner 授权连续修复到可验收

本段先于实现。Owner 要求无需逐步确认,由同一 AI 完成开发、测试与交付;仅必需人工操作时请求协助。基线 main999c40a、1116项共享WIP,私有独占 static-display-repair-20261016-01 已记录写前状态/小文件指纹;原诊断85项封存不回写。

### 修复目标与语义

1. 不把静态无帧当连接故障、不填FPS0或复用FrameTime;当前数值公式、Raw、过期/身份/代际保护不改。FPS/FrameTime读数将原始英文质量码转为明确中文,图内说明空缺为未确认近期帧(可能静止或来源延迟);真实设备断开仍显示设备断开。只有新合格帧才能恢复数值,空缺区不伪连线。此目标是修复误解与可观测性,不能宣称证明静态零帧窗口。
2. 为现有自有Lab增加独立帧场景:静止10秒→30Hz移动方块15秒→静止10秒→30Hz移动方块15秒→静止10秒。静止段停止CADisplayLink及所有周期性UI读数;只在阶段边界更新标签。设备Mach ticks、阶段、绘制请求回调另记JSON,CADisplayLink只证明刺激已执行,绝不冒充系统实际呈现帧真值。旧内存场景保留,互斥、前后台/热/取消停止、独占运行名与终态封存。
3. 测试编排前置fail-closed:正确手机/标准安装/已签自有App/历史负载已释放/空间/目标匹配均成功后才允许Start;缺文件、超时、身份变更、活动负载任一失败应Start=0。失败原件保留,不自动补轮。

### 验证与交付门

软件覆盖质量中文映射、断开/非前台/未知质量不作静态断言、旧Session兼容;夹具覆盖阶段边界/取消/重复名/非法输入;编排负控验证Start=0。先软件后设备,串行、不操作其他手机或商店App。

固定新五轮,每轮完整60秒配方/同一自有App生命周期,首失败停后续、不拼旧轮;先核阶段ticks与运行封口。每动画段剔除起始2秒过渡后,FPS与FrameTime有值采样各至少90%,真实FrameLifetime必须覆盖两段动画、原生30Hz节奏相符(仅粗粒度合理性,不独立精度校准);静止段允许空值,不用数值有值率考核静态,核中文提示、无伪零/重复旧值、恢复动画后2秒内重新发布合格值。归档Raw、原始质量与全部失败;本地队列已匹配帧全部消费、drop/undrained=0、正常停止durable、目标同身份,5轮均过才报告此限定场景E4通过。真实断链用软件负控,不拔线、不结束共享系统服务。

效率:新增状态映射O(1)、图注O(1),不扫描历史;夹具每活动段最多900回调/全轮1800,内存上限2MiB日志、最大运行65秒、每轮文件上限4MiB;本地软件单组120秒,设备单轮含启动/封口120秒,五轮轮间15秒、总上限12分钟,监督192MiB、每轮复制上限256MiB;每批及30分钟检查空间≥10GiB且≥新增量两倍。记录wall/RSS/采集队列和源事件耗时,不用回调数校准实际FPS。

先验证签名后同址覆盖手机自有App;Mac包保留175回滚于私有目录,不新安装并行版,只覆盖 /Applications/Perfowl.app,内部测试按Owner继续暂缓公证、签名严格核对。尽量复用已验175后端,不夹带启动诊断等未验修改;Swift编译源与实际冻结依赖必须pin,若不是干净main构建明确说明,不整包提交他方WIP。完成后窄提交本批、GitHub/GitLab各推同号(GitLab仅一次)、知识/开发/归档/站点联动与发布,闭环通知清楚区分限定场景验收与全指标进度。没有真机通过不宣称修复可用。

### Implementation Update · 2026-10-16 · 展示修复与可控刺激

新增纯展示 `DisplayMetricPresentation`,将FPS/FrameTime无新帧、过期、待确认间隔与后台质量转为中文;主读数与图内解释都使用当前已计算样本,设备断开不贴静态说明。没有修改计算、Raw、过期门或缺值断线分段。新增Lab90.21.4固定60秒五阶段及Mach时间事件,静止关闭CADisplayLink、动画30Hz方块;回调不作presentation真值。前台/热/取消停止、独占运行名、终态四件封存,保留原内存功能。

前置编排复用既有精确身份、同生命周期、准入fail-closed和正常Stop封口;新负控验证任一准入失败/缺失Start=0。旧手机Documents约2.43GB、1507件,沿用已验证安装器**300秒**有界一次Upgrade,全部备份并逐文件SHA核旧数据保留,不删除未知证据。

内部Mac176从唯一已验175完整后端派生,仅替换当前Swift可执行文件及版本并重新Developer ID签名,不冻结工作区Python启动诊断等新WIP。当前Swift为共享工作区集成快照,实际编译输入独立SHA登记;不是干净main发行包,不把全部共享改动提交。Owner暂缓公证,此为内部验收包。软件构建中曾因错误相对路径未应用改动,随后因源在编译中被改动触发编译器拒绝;失败日志保留,最终冻结后完整重建,不拿失败构建交付。

对照的样本时间使用主sysmontap设备Mach与主机收取差的观测中位数对齐,登记p95–p05传送波动;绝对误差上界unknown,不当独立时钟校准。动画开始剔除2秒、结束另留0.5秒边界,不用CADisplayLink数量证明FPS精度。此边界是在首次新设备对照前声明,不改变90%有值、粗合理范围、两段覆盖及恢复2秒门。

### Validation Update · 2026-10-16 · 新包与准入负控实况

最终Swift相关24项中23通过、1按原条件skip、0失败;最终release稳定源构建32.17秒。iOS真实SDK90.21.4六源构建与严格开发签名成立;一次手机Upgrade232.385秒,1507件2425580709B写前完整备份、写后逐件SHA相同。Mac176已正常退出175后同址覆盖,13104个普通文件与候选逐件SHA一致,旧后端树未变,严格Developer ID签名;内部DMG已签,不声称公证或正式发行。

新正式A在第1轮准入5.190秒停止:新Mac版本初次启动未保留已选目标,实际UI为“请选择设备/测试应用”,故精确目标门拒绝;Start=0、Stop=0、URL=0、Session=0,资源全部close成功,A2–5未执行。旧A结果保留,不能伪称已采一轮或补拼通过。正常UI明确选择原正确手机与自有Lab后,另立**全新B固定五轮**,同门槛、不同独占运行名,不修改数值/实验分母;B失败仍停。

### Repair Plan Update · 2026-10-16 · 配方发送通道有界替代

B1准入通过且Start1次,但CoreDevice URL发送12秒超时,Stop1次、源连接均关闭;原Session正常封口31件4983224B独立保全,B仍partial、后四轮不运行。后续只读CoreDevice精确设备详情15秒亦超时;设备清单显示该设备tunnel connecting,而原生DVT可读。这不足归因产品帧流,也不通过重发URL凑成成功。

为避免需要Owner拔插/操作手机,新增**仅自有Lab**90.21.5启动请求入口:在自有Documents独占`PerfowlLabFrameRequests/<run>.json`写一份最大4KiB请求,App冷启动只接受唯一未执行且通过严格schema/名字检查的请求;已存在终态run不重放、不改请求/历史,多个待执行或非法请求直接拒绝,无后台轮询、无常驻服务。先通过软件边界测试再构建、签名与一次覆盖;保留90.21.4及B失败。产品仍176、后端不变。

新C另立全新固定五轮、不使用A/B的任何轮;准入增加无待执行/模糊请求门,先封存新请求才按产品正常Start,记录请求原字节与SHA、同生命与终态四件、两动画与静态提示及恢复门。配方读取只在启动一次,O(≤32请求)、每件≤4KiB;不引入静态轮询/周期UI提交。设备单轮上限120秒不变;同版本升级300秒、原1507件全SHA保全,已有备份不删除。

### Implementation / Validation Update · 2026-10-16 · 自有场景自动启动修复

90.21.5一次Upgrade212.677秒、旧1507件2425580709B全保留。C1请求读回字节成立、正常产品Start/Stop各1、静态中文读数与图注真实AX观察成立,但60秒后没有本轮plan,故C为partial、后四轮未执行;不是产品帧门通过。一次**仅布局**截图(不作FPS真值)显示帧面板已打开而仍为“开始固定五阶段”,证实刺激未执行;未把空值结果拿作动画测试。

实现存在两个未受控的SwiftUI启动依赖:分离的sheet布尔与run可选值捕获,以及父onAppear早于UIKit canvas可用。修为item携带run的sheet,且只在实际makeUIView完成后向主队列派发自动Start;不再在父onAppear上赌时序。两机制的各自因果贡献仍未独立分离,不声明唯一根因。新90.21.6使用相同五段/30Hz/门槛;新D五轮另立、不拼C。C旧未执行请求经逐字校验后移至自有退役请求目录保留,防止升级后无意重放;新准入仍拒任何未决请求。所有旧Session、原始请求和失败保留。

### Repair Plan Update · 2026-10-16 · 启动资格事件与保全复用

D1仍未施加刺激,五轮门保持未通过;已正常Stop,旧请求保留。单次布局截图现明确显示“前台或温度条件不适合,未启动”:v6已越过canvas/run传递门,但资格检查时尚未符合条件。该组合文案没有记录两条件各值,不能武断归因发热。新90.21.7把自动启动改为**canvas-ready + didBecomeActive / thermal-state-change 的事件门**:只在前台且温度允许才执行一次意图;未达到资格不创建负载,不轮询、不重跑失败负载。每个新请求附有有界资格状态轨迹,实际不适合仍停止/partial,不放松热保护。纯状态组合先补单测。

避免每次重读同一2.43GB旧数据两遍:下一升级复用上批已完整核同的私有备份,复算本地备份SHA、与当前独立inventory的原件stat/大小对齐,补齐本批新增请求的小文件;不卸载、只Upgrade一次,**升级后仍全量逐文件SHA核对全部当前旧件**。复用的是字节备份,不以mtime认证当前SHA;“本轮写前重新SHA整个手机”不再声称。新增/旧请求保全与前次基线身份分开记录,减少手机I/O与热负载,超时240秒。

下一个新E五轮在设备冷却180秒后开始;轮间固定180秒冷却,总上限25分钟,单轮120秒和原90%/恢复门不变。变更只在首次E执行前落盘,不补拼A/B/C/D;若资格仍不成立则保留失败,不把无刺激静止认作动画通过。

### Validation Update · 2026-10-16 · E1实际资格与两段动画成立(非五轮结论)

新90.21.7一次升级105.726秒:复用1508份已核本地备份、增量备份1份69B,写后1509件2425580847B全SHA一致;写前复用件没有再全手机SHA,不混称。已验证重复的两份旧备份按1507/1507逐件与保留备份核同后清理,逻辑4.518GiB,原Raw/失败/清单/回滚0删除,保留第三次完整备份及增量件和重定向摘要。

E1资格轨迹明确:canvasReady=true、thermal=0时首先active=false,随后约214.6ms成为active=true才admitted;事件驱动门实际生效。这直接证实“UI构建不等于已进入前台”的冷启动风险,不把旧D组合文案事后说成独立热证据,也不等同于Perfowl启动Total故障。两动画段FPS中位30/29、FrameTime中位33.279/33.281ms,剔除边界后的有值率均100%,恢复估计451.266/230.865ms;静止中文提示实见,1082原生FrameLifetime全部本地消费、0drop/undrained。132样本、31件21934166B、75.930秒/监督91.58MiB,正常Stop/durable、同生命。独立物理时间精度与静止零帧窗口仍未证明。E2–5尚待,当前只能说1/5,不提前发布五轮PASS。

### Validation / Repair Plan Update · 2026-10-16 · E3界面取证时点与固定三次静止取样

E1/E2通过,E3完整完成并正常封口但专项门失败,E4/E5依约未运行;失败原件不改、不与新轮拼接。E3两动画段有值率均100%、中位FPS27/27、FrameTime33.279833/33.279458ms,恢复估计528.555/301.698ms、1065实际帧全消费、0drop/pending/undrained。唯一失败是`static-notice-not-observed`:单次界面读到FPS1.0、FrameTime“帧间隔待确认”和正确中文间隔说明,并非没有图注。按同一观测时钟桥,第二静止段+2.302/+2.802秒确有FPS1/FT source-gap,+4.303秒后双方stale-device-source;此事实解释单次过渡取样可能漏掉稳定静止说明,但不把source-gap改为零帧、不把该轮追认通过,也不判唯一物理根因。

改进只限取证编排,不改Mac176、Lab90.21.7、公式/质量/数值及90%/2秒门:原单次控制时钟+26秒AX取样,改为**事先固定+5/+30/+55秒三次只读AX取样**(各一次,不按结果重试/轮询),分别覆盖三静止段内部;记录每次主机单调时钟起止,封口后用已声明观测桥核其落在预定静止段内部,并保留绝对时钟误差unknown。至少一次须实际读到静止中文说明,另外快照允许如实展示过渡间隔说明;缺观察/越界/错误仍失败。三个AX取样总预计<1秒、单次8秒上限、全轮120秒、并发1,62秒场景等待不增加;评估O(样本+原生事件+3),无新源或静态周期UI更新。先补软件的固定次数、错阶段、缺提示负控,再启动**全新F固定五轮**,预冷/轮间180秒、总25分钟,首失败停,不使用E任何轮。旧A–E全保留。

### Decision / Repair Plan Update · 2026-10-16 · F2停止剩余计数竞态

F1完整通过;F2三次静止说明/相位、两动画100%有值及恢复均通过,但`local-frame-delivery`门失败,F3–5依约不运行。原件1072 delivered = 1072 consumed = 1072 Raw、drop=0、pending=0,却undrainedAtClose=1。未把该轮追认通过、不放松零剩余门。软件精确安排“等待消费者、pump入队、close先于消费者恢复”五次,旧实现均得到delivered=consumed=1、实际queueSize=0、undrained=1,证实**aclose在取消/等待pump之前取深度,等待期间消费者继续取走事件,旧深度未更新**的可复现计数竞态;与本轮矛盾签名吻合,不因此声明所有设备来源无丢失。

修复范围只限`Pmd3Subscription.aclose`:先关闭准入、取消并join pump,再同一同步段读取队列深度并扣除当前terminal控制项。该计数代表关闭边界实际未消费事件,不用delivered/consumed差覆盖真实积压,不额外排空或丢弃,不改帧公式/来源/主路径调度/等待门。O(1)关闭处理、热路径新增0操作、不添加进程/环境。先增加确定性竞态、真实积压、终端项、重复close和容量溢出负控;对冻结旧方法/新方法串行各1000次×多轮比较耗时、CPU/RSS,目标关闭无新增阻塞、平均增量<0.1ms、单组120秒。相关完整回归后才能新包。

内部177基于已经验证的176,只替换嵌入Core的**该方法代码对象**与版本/必要签名,保留其他压缩模块字节及运行库;生成器核方法与同一HEAD+窄补丁源码一致,重读压缩包核其他模块逐个未变,运行probe/签名/独立DMG/标准安装逐件验证。此隔离避免把共享启动诊断等WIP冻结进交付,不改变无侵入采集边界。复用176展示可执行文件,手机Lab90.21.7不再升级;旧176包/全部A–F失败及必要回滚私有保留,dist仅新当前包。Owner继续暂缓公证,不称正式发行。

随后另立**G五个全新轮**,三次固定AX/原90%/恢复2秒/零drop与零undrained/同生命周期/正常Stop durable均不变;预冷/轮间180秒、总25分钟、单轮120秒、首失败停,不与A–F拼接。独立Raw与原件复核成立后再窄提交、双远端各一次、知识/开发/归档及网站发布,交Owner内部验收。

## Validation Update · 2026-10-16 · G五新轮限定场景独立复核

90.21.7一次同址Upgrade105.726秒,复用1508件已核本地备份、增量备份1件69B,写后1509件2425580847B全SHA一致;复用件未重扫本轮写前手机SHA,不把stat对齐当成字节身份证明。旧未执行请求以相同字节退役保留,不自动重放。G使用五个全新run与Session;以下来自逐轮落盘机读件,不使用A/B/C/D/E/F补拼。

| 轮 | 发布样本 | 实际FrameLifetime | 两段动画最小有值率 | 最大恢复估计ms | 静态图注 | 原件件数/字节 | wall秒/RSS MiB |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 131 | 1054 | 100.0% | 522.028 | 实际可见 | 31 / 21685429 | 77.048 / 91.12 |
| 2 | 132 | 1057 | 100.0% | 500.665 | 实际可见 | 31 / 21760920 | 74.844 / 92.70 |
| 3 | 132 | 1066 | 100.0% | 572.952 | 实际可见 | 31 / 21798595 | 74.897 / 91.40 |
| 4 | 131 | 1060 | 100.0% | 266.573 | 实际可见 | 31 / 21696748 | 75.197 / 93.69 |
| 5 | 132 | 1053 | 100.0% | 264.582 | 实际可见 | 31 / 21812248 | 75.534 / 90.77 |

五轮均同一目标生命周期、Start/Stop各一次、启动采集关闭;每轮固定三个静止段只读AX取样、起止时钟桥事后核段,不按结果重试;至少一次静态说明实际可见,三次原件全部保留。自有App请求只写一次、URL发送0次、四件终态封存。两段动画各满足至少90%有值与30Hz粗合理范围;静止CADisplayLink回调0,允许保守缺值并实见中文说明,不用0/旧FrameTime补线。本地已匹配帧全消费、pending/drop/undrained均0,productSessionDurable=true、completed,所有自有服务close。独立审核另行流式重读Raw和Session封存、逐文件比对原件与副本、复算两动画段分母/范围,冻结执行器与安装二进制指纹未漂移。没有把本地零drop外推为设备端完全无丢帧。

**判定:本次静态说明与受控动画恢复专项E4通过,可交Owner内部验收。** 这不是所有App/刷新档位/丢链条件的全指标精度验收;不补FPS0、不重复旧FrameTime,静止零帧窗口完整性仍未独立证明。相位对齐绝对误差上界unknown,恢复毫秒数是观测桥估计,不当精密校准;两动画段原生帧覆盖与完整刺激日志另核。历史Build73成果保留,全指标数量不因这个回归专项自动增加,其他指标不自动开始。

### 软件与效率复核

既有194项相关后端回归与8静态语义测试通过;新13编排/评估控制通过(包含失败准入Start0、没有来源不能过、迟到缺值/静态伪0/真实drop/代际变更负控)。Swift相关24项中23通过、1按既有条件skip、0失败;iOS真实SDK六源构建/签名及Host阶段/请求边界通过。编译中修改源导致的失败、CoreDevice超时、C/D未施加刺激及E3单次过渡时点取证失败全部保留,不称为有效动画轮;F2虽完整刺激和恢复通过,关闭残留计数竞态使本地交付门失败,旧轮不追认。新增关闭相关126项回归/61.320秒通过;首跑两项测试构造参数错误保留,修正后全组通过。

纯展示映射与图注100000次×5轮,每调用约56.9–62.3ns;原英文字符串拼接基线约105.3–116.3ns。该微基准只说明纯映射轻量,不是完整GUI CPU提升证明;图注只读当前样本和固定两条series,不扫历史。旧/新关闭方法各1000次×5轮确定性竞态,旧5000/5000假残留、新0/5000,包含夹具完整单例wall中位0.1888/0.1791ms;不是对整个采集吞吐的提升声明。全串行基准RSS高水位约50MiB,不能归因单变体,CPU逐轮留存;热路径新增0操作。五轮实际wall/RSS与队列计数见上表,不解码启动大blob、不主动断线或杀共享服务。

### 内部包与边界

Mac177在176展示修复基础上,仅将Core压缩模块内的`Pmd3Subscription.aclose`方法按当前窄补丁源码重建,并更新版本及必要签名;另2062压缩模块、12外层归档项和运行库字节逐一未变,GUI去除签名后字节与176完全相同。源码方法结构与嵌入方法独立核同,嵌入代码直接运行5项关闭竞态/积压/terminal/重复close/溢出测试通过。全部13104个普通文件在候选、DMG独立解包与标准安装逐件核同。DMG Developer ID严格验证通过,Owner暂缓公证;Gatekeeper如实为Unnotarized Developer ID拒绝,**不描述为正式发行包**。编译源实际SHA另存,当前Swift为共享WIP集成快照,窄提交不代表全部WIP已并入main。标准安装仅`/Applications/Perfowl.app`,旧包与必要回滚私有保留、不另行安装,dist仅当前包与校验。

打包隔离过程中发现外层归档含contents-directory选项必须保留、marshal字节可因引用表布局而异须比较完整code字段、原GUI无entitlements不得猜测、重新签名会改Mach-O签名而非GUI逻辑;失败候选保留不安装,最终独立复核后才覆盖。

必要的独立Lab基座(原四Swift/覆盖表/Info与构建签名工具)随新场景纳入本批依赖,未把其他CPU/网络/启动探针或共享变更整批提交;不因纳入基座声明重新验收其他指标。初始1116项共享WIP按路径隔离,本批只暂存自己的Workbench差异,不暂存原先工作台改动。提交、远端和网站结果在交付记录另列;测试通过不伪装同步/发布已完成。

下一步:Owner按内部自测指南复验静止→动画恢复;无须先操作手机解除本批阻塞。本专项另修复了关闭快照计数竞态,不重开启动故障或下一指标。公证/全指标校准/其余共享源码整合仍不在本次验收结论内。


### Publication Update · 2026-10-16 · 干净发布构建前置修复

第一次暂存快照构建在25.06秒明确报一条既有死链:G431引用的G430只有共享区未提交稿。未放松死链检查、未夹带该稿;只将原关联链接保留为文字路径,带日期增量指向已在主线的G432–G438结果,原数字/结论/归档不动。首次编排还误以site子目录导出tree并启动了一次共享区构建,12秒左右主动终止,不能当发布验证;后续一律完整根tree/干净提交构建,失败日志保留。


### Validation Update · 2026-10-16 · 干净暂存源与站点收尾

完整根暂存tree(不含其余共享WIP)站点构建通过:66 Registry合同、549归档、41.97秒、0死链;既有42项措辞风险提示与大chunk警告未当成“零警告”,本批增量未引入其风险模式。干净暂存源`swift build --product Perfowl`通过26.62秒;同一干净源13项Python关闭/静态测试通过0.033秒。

干净源的Swift测试target仍有**既有主线不兼容**:`SampleStatePublicationTests.swift`使用`lifecycleJournal:nil`,而HEAD的controller初始化参数尚无此项,触发编译错误、过滤测试亦会先编译整个target。两件均为本批未改的HEAD文件,另有共享WIP实现未合入;不为此夹带其他产品改动、不删除/skip测试、不把干净全测试宣称通过。先前共享集成快照的24项相关Swift(23过/1既有skip)与实际已安装177五轮E4证据分别保留;本次可交内部包及限定场景结论,不代表整个主线全回归已经绿色。后续源码整体收口需单列解决这个既有测试依赖,非静态曲线缺值的证据。

当前标准唯一177包、严格Developer ID签名、独立DMG/安装13104件核同;公证仍按Owner暂缓。自测入口为自有Lab帧率静止/动画对照,方法见`internal/acceptance/static-display-177-selftest-guide.md`。本批只关闭静态说明/恢复及关闭快照竞态,不新增其他指标通过数。