用户报告简化与 PerfDog 结构对齐导出方案
0. 决策、状态与执行边界
Owner于2026-10-28指定的最终目标:
- 正常打开的报告服务普通用户,直接呈现测量结果,不出现内部标记,也不出现“可信/不可信/可靠/估算/候选”等可靠性标签、徽标或暗示。
- 默认导出为一份与实际 PerfDog 样例结构对齐的 Excel,以及一份真实采集截图 ZIP;优化 Excel 样式与可读性,而非复制样例的粗糙外观。
本文件为Lead方案定稿,证据为E1静态核对;产品实现、软件验证和打包仍待执行。同一AI按既有Owner授权顺序切换工作面,不创建子代理;本次只修改方案,不顺带开发。
- 开发基线:分支
codex/metric-comparison-round2-20261028,当前HEAD4366bf84;已含68476537的共享CPU/报告统计改进。实施前再次核HEAD及工作区,仅接续明确相关的变更。 - 正式55/66,余下11项全部暂停;不恢复旧验收队列,不重测历史正式指标,不新增采集源或改被测App。
- 当前第二轮内部包的构建、安装与推送状态仍以原批次实施记录及实际收据为准;本方案不宣称该包已安装,也不自动混入既有候选包。
- 手机测试由Owner执行;公证继续暂缓,系统安全机制不变。后续仅同址覆盖
/Applications/Perfowl.app,不装并行客户端。 - 保留三份第一轮Session、原始对比输入及失败证据;本批不改AGENTS,不回写历史Session,不修改历史测试数字。
1. 已纠正的样例事实
1.1 Excel来自实际PerfDog,而非自动化平台
已直接检查Owner提供的三份PD_20261028_11_*.xlsx:
| 样例 | all行数 | @FrameInfo行数 | all明细宽度 |
|---|---|---|---|
| 11:41:21 | 81 | 506 | 44列 |
| 11:42:58 | 65 | 425 | 44列 |
| 11:44:19 | 70 | 443 | 44列 |
三份均有all和@FrameInfo两个工作表。上述行数包含表头/元信息,不当作有效采样数。
旧提案的“一个sheet、29固定列+每步骤4列、每次执行一行”,实际来自自动化探针平台的4行49列表格。旧提案据此推导的任务、活跃CPU、步骤流量和videoUrl,全部撤出本批PerfDog格式合同。双方使用相似的文件生成器,不构成平台来源证据。
私有样例不入Git。实现时用去身份化的schema快照固定字段名、顺序、位置和类型;不复制私有元数据或采样值到公开fixture。
1.2 all结构合同
首批固定对齐Owner提供的桌面版样例,不承诺PerfDog任意版本或其导入接口兼容:
| 位置 | 内容 | 本批处理 |
|---|---|---|
| 第1–6行 | 应用与设备基本信息及分隔 | 保留布局;展示应用名、版本、设备机型、系统、测试时间。身份信息使用设备A等别名 |
| 第4/5行 | 设备字段/值 | 延续原列位置;未知硬件属性留空,不构造型号参数 |
| 第7行 | Stat分区标题 | 保留;使用清晰的分区样式 |
| 第8/9行 | 统计表头/统计值 | 保留样例29列及顺序;有明确映射的数值才填入 |
| 第11行 | Data_v4结构标识 | 为兼容样例结构保留;它不是Perfowl算法版本或质量标签 |
| 第12行起 | 明细表头+逐秒数据 | 保留44列及相对位置;一行对应一个真实产品采样点 |
第12行固定表头如下;这里只固定列结构,不宣称同名指标底层算法相同:
Num, time, absTime, label, Notes, FPS, Smooth, 1%Low(FPS), TinyJank, SmallJank, Jank, BigJank, Stutter[%], AppCPU[%], TotalCPU[%], Memory[MB], XcodeMemory[MB], RealMemory[MB], VirtualMemory[MB], AvailableMemory[MB], Send[KB/s], Recv[KB/s], ReadDiskBytes, WriteDiskBytes, CPUUsage0[%], CPUUsage1[%], CPUUsage2[%], CPUUsage3[%], CPUUsage4[%], CPUUsage5[%], Render[%], Tiler[%], Device[%], BTemp[℃], ThermalStatus, Wakeups, CSwitch, CPUEnergy, GPUEnergy, NetworkEnergy, LocationEnergy, DisplayEnergy, OverheadEnergy, ScreenShot
样例CPU逐核列只有六列,这属于样例schema而非通用设备事实;首批保持六列,按真实数组顺序填可对应值,缺项留空,不平均补核、不宣称物理核心身份。其他架构扩展另立schema,不偷偷增减列。
第8行统计表头固定为:
Avg(FPS), FPS>=18[%], FPS>=25[%], Std(FPS), Var(FPS), Drop(FPS)[/h], Median(FPS), MedRange(FPS)[%], Smooth, 1%Low(FPS), TinyJank(/10min), SmallJank(/10min), Jank(/10min), BigJank(/10min), Stutter[%], FTime>=100[%], Delta(FTime)>100ms[/h], Avg(FTime), Std(FTime), Var(FTime), Avg(Memory)[MB], Peak(Memory)[MB], Avg(AppCPU)[%], AppCPU<=60%[%], AppCPU<=80%[%], (Recv+Send)[KB/s], (Recv+Send)[KB/10min], Send[KB/10min], Recv[KB/10min]
1.3 截图包与帧表
- 截图包沿用平铺
1.jpg…N.jpg,一份Excel对应同一次Session的一个ZIP,使用相同Perfowl文件名前缀和导出标识,不冒用PD_品牌前缀。 @FrameInfo样例首行有Data_v4,后续是三列记录。仅凭三列数值不能确定各列语义、时间基准和单位;实现批次先完成三列字段映射文档及脱敏fixture,再填已有真实帧记录。- 如当前Session没有可对应的真实逐帧数据,保留该sheet及结构标题、数据区为空;不将1Hz FPS反推为帧记录,不复制启动片段冒充全程。
- 结构对齐不等于跨工具数值校准,也不等于格式通过PerfDog自身导入。验收只声明实际验证过的读取/打开兼容范围。
2. 普通用户报告:去内部化,不改测量事实
2.1 正常报告的展示合同
普通用户界面默认直接把已有测量结果作为产品数据展示。不显示可靠性评分,不要求用户自行判断数据真假,也不通过删标签改变采集或统计结果。
| 保留并优化 | 从普通报告移除 |
|---|---|
| 应用名、版本、设备机型、测试时间、测试时长 | Session UUID、Raw路径、SHA、PID、协议/服务名 |
| 应用CPU、内存、FPS、网络、启动等通俗名称和单位 | metricID、算法版本、source、adapter、profile |
| 默认平均值,按需查看峰值、曲线和截图 | candidate、valid、质量码、正式验收计数、诊断状态 |
| 应用/整机的对象区别、CPU整机100%刻度 | “可信/不可信/可靠/不可靠/估算”等标签及红黄绿质量徽标 |
| 用户可理解的操作成功/失败和真实进度 | session-timeline.v1、raw顺序保留等开发过程文案 |
说明指标含义的“应用CPU(整机100%)”“应用内存(物理占用)”“整机网络”等是必要口径,不是可靠性标签,应保留。普通报告、悬停提示、分享及默认导出均使用同一用户文案映射,不直接拼接底层字段。
- 结果页默认“概览→趋势→截图”;均值优先,峰值为次级信息。历史结果不出现“等待设备/等待样本/每秒更新”等实时用语。
- 无值指标卡不显示;曲线保留真实空缺、不插值补成已测数据。Excel对应单元格留空,合法测得的0正常显示。
- 结果页中的“已完成”仅表示测试流程结束,不生成“所有指标已认证”之类声明。
- 正常操作错误仍要提示,如保存失败、空间不足、文件损坏;它们属于操作反馈,不是数据可靠性标签。
- 阶段名使用用户语言,例如“启动耗时”,不直接显示Core、endpoint、not-applicable或端点重配对文案。
2.2 内部语义仍完整保留
本次Owner指示调整的是产品展示面:Session原件、内部诊断、测试日志和开发记录继续保留candidate、来源、覆盖、算法及验收边界。普通报告不展示这些内部字段;诊断工具明确区分于面向用户的报告。
不因移除标签而启用11项暂停源,不修改SessionReportBuilder.accepts或把missing改成有效。现有合法观测即使内部来源名包含candidate,仍按既有统计合同处理,不额外用“历史已验收”替换运行时有效性判断。来源、单位或窗口不匹配的列不硬映射;单元格留空,不附可靠性标记。
AGENTS保持原样。证据等级仍用于工程交付,不变成普通用户报告上的评分。
3. 复用现有统计,禁止另起汇总内核
共享路径:PerformanceSessionReview / sealed report → SessionReportRepository → SessionReportBuilder / ReportSeriesIndex → 用户报告与Excel适配器。
- 复用
MetricPresentationContract、session-report-summary.v2、现有原生SessionReportView.swift和NativeReportPDF.swift;不另建竞争的统计内核,不再次全量扫描Raw。 - Excel Writer只负责字段映射、单位转换和格式化,不拥有另一套CPU/FPS/内存均值逻辑。
- 每轮默认平均值:在选定范围内,对既有1Hz产品序列中有效且有限的点求算术均值;缺值不补0、不重复按墙钟补齐。先计算后显示取整。
- 同一范围、同一单位下,UI、Excel、CSV/PDF逐项核同;不同单位必须显式标注并验证换算,不要求MB与MiB数值相同。
- 多次测试仍分别导出,不为本批新增任务合并系统。Owner最终三轮对比采用“各轮均值再等权平均”;与混合所有采样点的加权均值分开,不混称总体平均值。缺一轮不按0计入。
- 单次启动事件只显示一次,不扩展成每秒值,不参与周期指标平均;不能映射到选区的事件不硬归入选区。
3.1 映射、单位与统计口径
实现前在Canonical知识页补齐逐列矩阵:原字段、真实metricID、scope、输入单位、转换、有效性、窗口、取整、版本、来源。以下决策已固定;未知字段不是Implementation自由猜公式的空间。
| Excel字段 | Perfowl处理与公式 | 边界 |
|---|---|---|
Num | 原采样时间排序后1起连续编号 | 不因缺少某个指标而删除整个真实样本行 |
time | 封存采样的相对时间,秒×1000,单位ms | 保留真实间隔,非行号×1000;不构造缺秒 |
absTime | 已记录且可映射的墙钟时间,Unix毫秒 | 缺失时为空,不把设备Mach tick直接当Unix时间 |
label / Notes | 已有用户标记/备注 | 防XML非法字符;以字符串写入,不执行公式 |
AppCPU[%]、Avg(AppCPU)[%] | 原始应用CPU÷样本显式正整数核数;对派生有效点求均值 | 整机容量100%刻度;缺核数为空,原始单核100%数据保留在诊断 |
TotalCPU[%] | 已有显式normalized整机CPU | 不回退到原始多核累加值 |
FPS / Avg(FPS) | 现有1Hz产品FPS序列及共享均值 | 不用高频源均值覆盖,不按屏幕刷新率合成静态页FPS |
Memory[MB] / Avg(Memory)[MB] / Peak(Memory)[MB] | 产品默认内存=物理占用Footprint,bytes÷1,000,000;均值/峰值来自同一序列 | 普通口径说明明确“内存=应用物理占用”;不据同名宣称等同PerfDog内存源 |
RealMemory / VirtualMemory / AvailableMemory[MB] | 对应已记录的真实/虚拟/整机可用内存bytes÷1,000,000 | 各列独立;不把Footprint复制到多个列,不把free当available |
XcodeMemory[MB] | 未建立严格映射时留空 | 不凭字段名或数值接近对号入座 |
Send / Recv[KB/s] | 目标应用网络速率bytes/s÷1000 | 不把整机网络塞入应用网络列;UI如用KiB/s仍保留正确单位 |
(Recv+Send)[KB/s] | 同时刻上/下行都有效时求和,再对共同有效点求平均 | 不直接相加不同覆盖集合的两个平均值 |
CPUUsage0…5[%] | 已记录逐核数组的对应位置 | 缺项为空,不做频率加权或伪造物理核心编号 |
ScreenShot | 与该采样点明确时间匹配的ZIP内JPEG名 | 超出既有匹配窗口或无图时为空,不按行号强行关联 |
| GPU、磁盘、唤醒、切换、能耗等 | 仅复用已记录且scope/unit/统计形态一致的字段 | 未映射/暂停字段留空,不新增采集或恢复暂停项 |
| Jank分档、Smooth、1%Low、Stutter、帧时统计等 | 完整源及算法已闭合时才能映射;否则保留空列 | 不用“每10分钟次数”冒充本秒次数,不凭PerfDog列名发明阈值 |
导出MB/KB使用十进制,与表头一致;既有产品MiB/KiB使用二进制。只在展示适配层转换,原始bytes及既有源公式不变。用户报告的通俗口径说明不声称PerfDog内部单位已得到独立证明。
FPS>=18、FPS>=25与CPU阈值比例,在对应产品序列有效点上按100×满足条件点数/有效点数定义;这属于明确写入知识页的Perfowl统计,不据列名认定等同PerfDog内部采样。Std/Var、MedRange、Drop、每10分钟流量等未固定总体/样本、阈值、窗口和重置处理的统计暂留空,不借本次样式改版调整源公式。
启动耗时保留在App概览;三份模板均已核实all基本信息区K4/L4与K5/L5未占用,首批使用K4“启动耗时[ms]”/K5单次启动值、L4“测试时长[ms]”/L5起止单调时钟差。缺事件/时钟映射时留空。不插入新行、挤移第8/12行,也不将这些扩展信息伪装为PerfDog既有统计列。
速率、累计流量与每10分钟归一统计分开;不使用平均速率×Session时长伪造精确累计量。本批不实现任务/步骤流量、白屏、丢包或活跃CPU。
4. Excel视觉优化:结构相同,外观更易读
选择“保留字段与位置+优化样式”,放弃“逐字节复制POI文件”。不复制样例的字体表、rId编号、fills数量或丑陋样式;验收以语义结构和打开效果为准。
| 部位 | 视觉规范 |
|---|---|
| 整体 | 浅色工作表、隐藏网格线;默认11pt,使用跨平台常见字体和回退,不依赖某台Mac私有字体 |
| 品牌与分区 | Perfowl自有深色#0B1020分区标题,白字;强调色#2F83FF,辅助色#55D2C1 |
| 元信息 | 标签与值层级清楚,留白充足;不把技术ID放到首屏;不合并明细表单元格 |
| 汇总区 | 标题行高28–36pt,自动换行;数值行醒目但克制;CPU/FPS/内存/网络用浅色分组,不按可靠性上色 |
| 明细表 | 第12行表头固定,启用筛选;默认冻结F13,保留前5列和顶部元信息/汇总;按实际窗口验证滚动可读性 |
| 列宽 | 时间列约18–24字符,指标列12–18字符,备注24–36字符;长表头换行,不靠极小字体塞入 |
| 行与边框 | 数据行20–24pt,极浅隔行底色;仅必要细分隔线,不给每格厚边框 |
| 数字 | CPU/FPS/内存/速率默认2位小数;时间ms/次数为整数;数值单元格仍为数值,0正常显示,空值保持空白 |
| 表头单位 | 已有[%]数值使用0–100尺度,不套Excel百分比格式放大100倍;MB/KB与转换规则一致 |
| 长表 | 不把整个44列表压到一页;打印横向、重复表头,按可读宽度分页;不依赖打印结果作为唯一使用方式 |
| 帧表 | @FrameInfo有真实数据时使用清晰表头样式与适当列宽;无数据时结构为空,不加内部诊断提示 |
附着在表头上的中文解释可说明指标业务含义和单位,不含算法代号、质量码或可靠性评价。无数据的高级列可折叠为列组,物理列仍保留且可展开;不删除或偷偷重排schema。首批不新增装饰性图表sheet,避免多一套均值及文件负担。
5. 截图ZIP:真实、可对应、两个文件成套交付
- 正常菜单主项“导出报告(Excel+截图)”,一次选保存目录。生成
PF_<时间>_<短导出标识>.xlsx和同stem的.capture.zip,避免重名覆盖;不把内部Session UUID直接用作普通文件名。 - 截图来自当前Session保存的真实图,按原采集时间排序后输出
1.jpg…N.jpg。不补帧、重复图填秒或补拍设备;仅关闭预览而仍保存的截图可导出,预览和保存均关闭则没有历史图可导出。 - 纵屏样例为295×640;实际输出最长边不超过640,保持纵横比、不放大小图,正确应用旋转。使用ImageIO缩略图解码,避免为小图先完整解码原分辨率。JPEG去除EXIF/GPS等元数据;保留原图不改写。
- JPEG初始质量0.7,以文字和界面可辨认优先,不以强压到样例体积为验收。ZIP对JPEG默认store;实测deflate有显著收益后才启用,不盲目重复压缩。
- ZIP保持平铺图片,无强制新增manifest文件。
all.ScreenShot是逐点映射;精确图片时间映射、exportID和格式版本可存xlsx的非展示custom XML part,schema先文档化且不含敏感身份。普通Excel不显示该内部part。 - 没有截图时仍可完成一份Excel+一个有效空ZIP;保存对话框提前用普通操作说明“本次未保存截图,截图包为空”,不使用质量标签。Excel的
ScreenShot列为空,不作虚假成功张数。 - 银行截图的像素内容可能含账号/姓名;去EXIF不等于内容脱敏。保存确认提供截图预览和“包含截图”选项,提示仅说明截图内容可能包含个人信息。首批不自动裁切、模糊或用内容识别生成新图;取消包含截图时输出空ZIP。
- 导出前检查至少10GiB可用且不少于预计新增量两倍;空间不足直接提示,不启动编码。两个输出先写私有暂存并校验再提交。取消、磁盘满或第二文件提交失败时清除本次已提交的另一文件,保留已有同名旧文件;不显示双文件完成。两个独立文件不具备跨文件系统事务原子性,使用本地作业清单记录发布进度,崩溃后识别并清理本次半成品,不误删其他文件。为免覆盖歧义,默认使用唯一stem,覆盖操作必须显式确认。
- CSV/PDF已有功能保持可用,列入“其他格式”;原始JSONL和详细诊断导出放独立开发者入口,默认关闭。默认普通PDF也使用同一去内部化文案,不留下另一份带质量码的用户报告。
6. 实现结构与取舍
新增仅为展示/导出适配层,可命名UserReportPresentation、PerfDogLayoutWorkbookWriter和CaptureArchiveWriter;复用现有Report索引及缓冲/原子写入工具。
ZIP先检查项目现有可复用实现。选择无新运行时依赖的流式写入方案,支持store和需要时的deflate;如需自写,先独立证明CRC32、UTF-8、ZIP字段、raw-deflate格式、偏移与中央目录正确,再用于xlsx。不要把压缩API的名字当作ZIP格式兼容证据。
明确限制:首批不支持ZIP64,校验单项大小、各偏移、中央目录大小和entry数量;超过32位大小/偏移或65,535项前停止并提示拆分,不在尾部生成损坏包。xlsx明细超过1,048,576行时拒绝并建议分范围导出。字符串按OOXML字符串写入,处理XML控制字符和Excel长度边界;备注中的= / + / - / @不变成公式,截图链接只指向本次安全文件名。
放弃的选项:另起统计内核、照搬自动化任务schema、同名自动归并任务、先上步骤管理、以截图轮询生成帧真值、逐字节复刻POI。收益是减少第二轮变量;代价是暂不提供跨Session任务汇总和步骤流量,这些另立方案。
7. 执行效率与资源预算
关键路径:复用已加载Report → O(n)字段映射/XML流式写入 → 有界截图编码与串行归档 → 两产物验证/提交。多次均值查询继续使用现有索引,不因滚动、悬停和导出反复扫描Raw。
| 项目 | 策略 | 预算与验证 |
|---|---|---|
| 汇总 | 已建索引查询,新增映射单遍O(n),不建立第二套统计 | 3600个产品点映射目标≤50ms;单列计时,不把Session加载算作已达该目标 |
| Excel | 64KiB有界缓冲,O(n×列数),仅存必要索引 | 3600行≤1s、14,400行≤4s,新增峰RSS目标≤32MiB;样式数固定,不每格造样式 |
| 截图 | 默认并发2、最多4;编码结果按序写,待写队列≤8张 | 600张≤5s、3600张≤30s,新增峰RSS≤200MiB;预算是待实测目标,不预填结果 |
| 交互 | 主线程只创建任务/更新进度;按阶段取消 | 首响应≤100ms,取消反馈≤1s;不在主线程压缩或遍历截图 |
| 超时 | 记录数/字节/耗时进度;单图10s,总任务10min上限 | 失败即结束当前任务,不无限重试;保留内部失败证据、清除用户半成品 |
| I/O | 每图读一次、编码一次、输出一次;schema模板缓存 | 计量读写字节与进程采样峰值,不称物理磁盘峰值 |
使用相同主机、构建配置和输入,对60s/1h/4h Session及600/3600张截图测量:首响应、总耗时、CPU、RSS、读写量、取消和最坏情况。CSV/既有PDF仅用于各自受影响路径前后回归;截图路径用相同截图输入比较编码/归档方案,不以CSV作为截图ZIP性能基线。JPEG store/deflate的时间和体积单独实测。
已有报告加载/首绘绝对门保持开放,本批不通过缩小计时范围掩盖。新路径未达预算或相对相同工作基线出现明显回退(目标不超过1.2倍,短输入额外50ms)时,记录partial并优化,不把“文件能打开”称完整效率交付。
8. 实施批次与验证标准
| 批次 | 实际范围 | 软件验证与边界 |
|---|---|---|
| R0 | 逐列映射和知识页增量,固定去身份化PD schema与截图样例;补齐帧表可映射性 | 44明细列、29统计列、两sheet位置;未闭合字段明确空列;不新增指标验收 |
| R1 | 普通报告去内部化、统一用户文案,复用共享统计 | 对已展示合法观测不因标签变化改数;空值/合法0、CPU核数、均值/峰值、选择范围及启动事件回归 |
| R2 | 流式xlsx及样式、截图ZIP、成套保存、普通PDF同步 | 独立解析xlsx/ZIP;数值重算、文件损坏/磁盘满/取消/超限/旧Session兼容;生成样例后逐页视觉复核 |
| R3 | 提交实际实现增量、匹配基准,内部签名打包与同址覆盖 | App/包签名、SHA、独立解包/安装核同分别记录;不混称手机可用或精度已校准 |
| Owner第二轮 | 按既有冷启动、五标签每10秒切换方案提供三轮数据 | 由Owner测试;AI之后比较各轮均值及三轮等权均值,分析差异,不自动恢复正式验收 |
实现记录追加到本devlog的Implementation/Validation Update,说明相对方案偏差。知识口径增量使用唯一Canonical页,优先现有session-replay/session-integrity及各指标页,不新建竞争均值知识版本。
必须验证的门槛
- 普通报告、悬停、历史入口、默认PDF/Excel无Perfowl内部质量码/版本/来源标记,无任何可靠性徽标。验证实际渲染路径,不能只扫静态字符串。
- 数据筛选与计算不因去内部化而放宽:空值不变0,合法0不丢弃;旧Session缺字段可读;原件SHA不变,11项暂停状态不变。
- 三份实际PD模板逐一核对两sheet、29统计表头和44明细表头、位置/顺序/类型;允许样式、ZIP part编号、生成器、时间及Perfowl基本信息扩展不同。不声称任意版本的逐字节/导入兼容。
- Excel、Numbers、WPS实开可读并截取顶部汇总、长表滚动、帧表和打印分页;未具备的软件明确列为未验证,不以一个软件打开替代三者。
- UI/Excel/CSV/PDF同范围同单位统计一致;独立实现复算均值和单位转换;多轮均值等权规则单测,不改已有历史数字。
ScreenShot所有非空引用都落到同次ZIP真实文件,时间映射可还原;无图为空ZIP;纵/横屏/旋转/损坏源图/取消包含截图均有用例。- 身份隐私扫描覆盖XML、custom parts、文件名和备注;像素内容由用户保存前预览确认,不把扫描通过描述为已自动脱敏。
- 完成资源预算测试,提交真实前后数据;软件/环境证据与Owner手机试用分别报告,不自行升级指标校准状态。
9. 交接与后续动作
当前状态:方案approved,尚未实施。两个Owner目标已纳入;旧模板误认已纠正。当前第二轮包收尾与本报告优化是两个范围,后者完成后使用新的递增build号,不修改既有包的验证收据。
本方案落盘后可直接交Implementation执行R0–R3,不设置Owner逐批审批;遇到未知字段按本合同留空或保留空帧表,不扩大采集/公式/任务体系。若需要改变已固定单位、scope、帧语义或字段位置,先追加文档化决策再实现。
完成各批按AGENTS窄范围提交、双远程推送尝试、文档/站点闭环和通知,GitLab一次失败不重试;公证暂缓的内部交付状态如实分列。交付提供真实包路径、安装build、签名/哈希、验证范围和遗留,不将源代码完成等同用户第二轮通过。
可转发执行指令
> 项目Perfowl,按Implementation职责执行本方案R0–R3。先读AGENTS、current-ai-handoff、本文及第二轮统计合同实施增量;核对分支codex/metric-comparison-round2-20261028与基线4366bf84,保留已有WIP和三份用户Session。普通报告无内部/可靠性标记;Excel以实际PD的all+@FrameInfo结构为准并优化样式,配套真实截图ZIP,复用共享统计,未知字段留空。范围不含采集源/公式调整、任务步骤体系、11项暂停验收或AI手机操作。同一AI顺序执行,不创建子代理。实施与验证追加同一devlog,完成后按内部签名要求打包同址覆盖,由Owner做第二轮测试;返回提交/双远程/通知、实际包与安装、软件及资源证据、偏差和遗留。公证继续暂缓。
10. Plan Validation Update · 2026-10-28
- 逐一读取三份原始PD Excel,程序核对两个sheet名称、第8行29项统计表头、第12行44项明细表头,均与本文完整相同;K4/L4/K5/L5空位均确认。此为E1格式证据,不是跨工具数值精度结论。
- 已更新Owner指定原提案的本地完整阅读副本、当前handoff、开发时间线及新增HTML方案快照。原提案旧内容保留在私有证据目录,不回改既有不可变归档。
git diff --check和66项Registry知识合同门通过;本次未修改产品代码、指标Registry或原Session。- 全站
npm run build已尝试:当前实际选中的Node为20.19.5,被项目固定24.19.0版本门拒绝。未放宽版本门、未发布网站;站点构建/发布状态partial,文档可本地读取。后续使用项目固定Node重新执行构建与链接验证。 - 方案已定稿,产品实现与用户测试仍待执行;不是新安装包或正式指标验收交付。