G84 将完整依赖的真实源配置接入产品
Owner允许同AI制定/实施/自复核,非第三方独立验收。基线7b6bf9a/main干净;G83实际14消费者依赖组合135s/259真实目标行/固定120诊断槽全部连续有效、末身份同/服务关闭,旧partial及失败全部保留。已证当前产品Sysmontap默认全74process/37system列和ur1与已验证组合不同,不声称已唯一证明过去停顿根因。此批修正过采集配置并验证产品入口,不改变指标/误差/54分母/正式五轮或近似质量。
1. 最小源码范围与确定字段合同
只修改MacApp/Sidecar/perfowl_collector_core/adapters.py及新增匹配测试。共享source始终覆盖资源契约全部14个Sysmontap消费者,其他40仍在原54账本。全部字段公式与G83 §1/原RawMetricEngine完全相同:九个process消费者的cpuUsage/physFootprint/memResidentSize/memVirtualSize/threadCount/ctxSwitch/intWakeups/diskBytesRead/diskBytesWritten,加mandatory pid/procAge;三device CPU依靠原SystemCPUUsage/PerCPUUsage/EnabledCPUs;两device VM依靠vmFreeCount/vmExtPageCount/vmPurgeableCount与原VMPageSizeBytes候选。速率仍原生时钟差分/初warmup/重置与epoch门;available仍candidate-xnu-no-secluded,不能升格valid。
共享process固定sorted11列、system固定sorted3列,不逐包排序/读资源,不暴露新的UI选择字段、不以selected metric重建prewarm旧向量。G83依赖表与资源14 metricID及真实公式源必须由匹配用例逐项cross-check,未来消费者新增时测试失败提示更新依赖,而非静默漏采。未知metricID仍归现CapturePlan门,不引入第二选择准入;整个共享source不缩小requestedMetricIDs或旧planHash,sourceEpoch/绑定代码不变。
支持列表仍来自SDK11.3.1 DeviceInfo.sysmon_process_attributes/sysmon_system_attributes原方法;与现mach_time_info查询共用一个DeviceInfo上下文,clock失败仍保留None并让rate原逻辑fail-closed,列查询失败/非法类型/duplicate/必需缺列则在setConfig/start前明确失败,不降级全列或删指标掩盖。用SDK原Sysmontap构造器的11/3列表同步真实dataclass与config,不仅修改_config而留下旧列dataclass。CPU开关/physFootprint/bm/sampleInterval保持原值;仅ur由工厂1改为已声明intervalMs(默认500),为原500ms采样与输出对齐;其他interval只E2控制,不冒充已真机验证。
准备/target rebind/stop/reconnect仍用同一固定schema与现身份/sourceEpoch规则,没有新常驻服务、hook、缓存hold-last或自动重连。tap未连接时创建短对象,测窗/ready契约不变。O(运行时支持列数)仅建源时计算,逐包成本不变;比factory.create少一个DeviceInfo开闭及全74/37 dataclass构建,不新增逐样本工作。
2. 先红后绿匹配控制与效率门
新用例使用真实固定SDK Sysmontap/TapMessageChannel及现adapter/stream/engine,只mock设备外部DeviceInfo和DTX服务;不重实现产品方法。旧adapters文件单独保存到原私有g84(不新worktree/环境),先同用例对旧方法红、再新方法绿;控制:完整依赖/确定排列/原开关/ur500与1000/dataclass一致;缺mandatory pid/procAge/任何metric列和system列启动前失败;异常/重复/type/clock未知;transport-only准备不setConfig/start、rebind不变schema、实际SDK ack/data/原生clock/头部保留、错目标/缺行/非正footprint仍missing、所有14引擎输出保留(额外network missing-source不伪源)。原v3、54 ledger、FORMULAS、所有其他源pin不变。
匹配测试120s/128MiB、串行1;完整Python baseline1585+新测试600s/256MiB,相关Swift CapturePlan/Metric/Workbench合同600s/2GiB,不能以skip当通过。真实G83单遍32.7MiB retained data校验/实际当前adapter/engine与旧方法不改值,用来证明实际字段传递与开销;该数据不是新独立参考/五轮。旧/新实际make_stream外部相同supported字段/clock原生模拟5对,各40次;first response/median/worst/wall/CPU/RSS/字节记清,构建局部wall与CPU不得>旧1.2×+5ms(RPC固定开销另列),峰RSS≤128MiB。Native包体比率不从非匹配G81/G83假推因果。I/O峰unknown不填零;超限停,不自动retry。
3. 内部包唯一覆盖与产品入口诊断
仅全部必要E2/成本门绿后复用原环境build126并Developer ID严格签名、实际PYZ75+CLI及资源与本批源码代码指纹匹配、独立DMG解包树一致/66契约source-independent probe/原版本真实回退;只覆盖/Applications/Perfowl.app,同源码签名与版本复核。dist仅本批DMG/SHA,旧包与原安装完整移入原私有回退不重复登记安装;成功后只删本批全树相等的三份可重建stage,不删除Raw/失败/参考。按Owner内部暂不公证,实际spctl/stapler结果保留,正式签名公证/GPL门不关闭。包900s/512MiB父(子build300s/2GiB独立监督);空间≥10GiB,source drift即停。不并发旧大回归/设备采集/打包。
本批原设备原76.1.0/当前正目标身份及完整exe/既有唯一USB路由,MacGUI与其他collector须闭;新已装CLI实际record_candidate_session仅sysmontap/125s一次被动辅助Session,外监督150s/256MiB,末目标身份复核/close与真实Raw/manifest保留,0launch/kill/config/正式轮/新独立参考。whole manifest completed不代持续性;按真实原生窗与全准备固定120诊断槽逐槽对账,不在不足时缩窗/重跑。若GUI产品入口仍未测试,明确不能从CLI推GUI恢复;原正式TASK_VM_INFO同代绑定/五轮0/5下一批再执行,不跳第二metric。
4. 实施记录与交付门
结果与偏差追加本页、总goal/serial/完整54 ledger/handoff;知识Canonical/总览/Home/时间线/P4及未关门门禁联动,新增不可回改HTML、站点300s/3GiB仅build不发布;窄提交、双远端各一次/Webhook一次,GitLab失败不重试且不阻断其他工作。源码/测试/安装/诊断/独立误差分别报告,不把新源子窗当全目标通过。旧G83与所有partial/参考/回退文件SHA保持,无新环境/worktree/网站发布,A1OPEN/HybridFROZEN/G9OFF/GPL保持。
Amendment · 2026-10-07 · 构建成本最差点未过,先保全与分层
首五对实际SDK make_stream成本对照全部wall/CPU/首响应/median门通过,但第5对new worst25.500193ms高于old11.380532ms×1.2+5ms,原成本门失败,旧5对/资源/失败都不回改或丢样;不能只报median快就当交付。产品17匹配控制已绿、完整回归进行中,不提前打包。
原timer包含每次进入/退出两个unittest.mock.patch,不是纯产品构造边界。新增独占r1成本场景:每对同一个external DeviceInfo fixture context由patch外层一次持有,单次wall/CPU只计实际_make_stream await,40次×5对/顺序交错原样,另记GC start/stop次数与同期wall/CPU,不禁GC、不改宿主负载或阈值。原失败证明该旧混合工具边界未达门,根因unknown;新控制只可单独证明产品路径构造预算,不宣称原失败不存在。资源120s/128MiB,0产品/设备重跑或自动retry,若新产品路径仍超最差门则继续具体诊断,不放包。源码字段/公式与原54、全部数据源准入不变。
Amendment · 2026-10-07 · 完整回归发现旧准备夹具缺依赖
首完整1602用例terminal:2fail/0error/0skip,173.294469s/202477568B/source drift0,原件保留。其一旧test_source_preparation的外部Service只声称支持pid/cpuUsage和vmFreeCount,不是现真机74/37支持集合,新增完整依赖拒绝门按设计把它拒绝。允许同批最小修正该测试外部fixture为明确列出的完整11/3支持集合,仍验证prepare_transport不setConfig/start,并新增“缺必要字段明确失败、不激活”匹配控制;不放宽产品拒绝门。
另一既有Display 120Hz synthetic性能用例source→ingress max62.529629ms超10ms,没有Sysmontap路径参与,不能归因本批修复或直接宣布flake;宿主瞬时mediaanalysisd高CPU仅观察非唯一归因。该测试代码/阈值不改;新增有界单独控制在真实用例期间禁止调用sysmontap构建,验证成本边界并记录结果,然后修正fixture后的新完整回归只执行一次、独占不并发其他重任务,原失败不覆盖/不隐藏。若仍失败不放包,继续证据驱动诊断。第二段范围仅多一份test_source_preparation测试,产品仍只adapters.py,其他源/54/误差/五轮不变。
Amendment · 2026-10-07 · 新测试外部替身污染需修,产品不回退
单独Display边界控制已通过原7200事件/原性能阈值,Sysmontap调用0;不证明首62.53ms失败的唯一根因,首完整失败保留。修正fixture的25项组合检查出现TypeError:新测试patch继承的DeviceInfo.__new__/__init__后,CPython类型slot恢复不等同原类可实例化,后续真实SDK准备路径报object.__new__多参数错误。该组合揭示本批测试替身有状态副作用,不是产品字段拒绝门需回退。
只修新test_sysmontap_dependency_configuration中的外部factory替身:替换device_info模块/SDK sysmontap模块的DeviceInfo名字,不改真实类的__new__/__init__,Sysmontap/Tap与产品方法仍真实执行。增加patch退出后原类仍能用provider构造的控制;允许新修订25+控制检查,再前瞻新完整回归一次,原17绿仅局部门不替代无污染门。设备/产品代码不额外改动,旧失败/工具/资源全保留。
Amendment · 2026-10-07 · 产品辅助观察完整准备与尾窗
尚未执行本批设备capture。原§3写125s辅助record,却要求首原生target start后5s准备+120s固定诊断槽,边界上没有剩余尾段可覆盖最后半秒采样,不能靠删尾槽达门。前瞻更正该唯一新产品辅助record为135s(外监督160s/256MiB),与G83既定源观察长度相同;保留原5s/120槽/100%及完整135s/prepare/尾窗,不是追加轮数/自动retry。所有真实手机与产品旧Raw保持,正式五轮仍未开始。此变化只新本批待执行CLI,已执行G83原生预算与数字不回改。
Amendment · 2026-10-07 · 实际规模逐包成本最差门失败的有界控制
首32,665,162 B retained单遍旧/新518 envelope所有payload及实际引擎frames逐字相同;wall0.605234353/0.636276837s、CPU0.590759/0.623395s、首响应门通过,但最差old3.498509ms/new18.444918ms超old×1.2+5ms,原成本门失败保留,不能放包。原处理次序每包固定old→new且未记录GC/逐包CPU,不能仅凭源码未变排除实际最差退化,也不能声称该点是GC。
前瞻只做一次新独占控制:同一份完整真实input单遍,先对旧/新_payload与_is_sysmontap_envelope做AST字节身份核对,metric_engine固定同一模块;每个envelope旧/新顺序按奇偶交替,保存所有逐包wall/CPU及原生包序号、GC start/stop同期事件,不禁GC、不删除离群值、不删样本,全部四项原1.2×+5ms与60s/128MiB门不变。外层decode/JSON序列化仍单列,不纳入产品payload+engine区间;观察不证明原失败唯一根因。无新设备数据/扩大原正式轮数/自动retry;若控制未过门继续诊断而不是打包。
控制工具修订 · 2026-10-07
新r1控制在读取原生blob之前因inspect.getsource无法定位动态exec的相对文件名退出;它没有完成回放、没有性能结果。失败日志/工具保留。只修工具为直接读取已封存旧源码与当前源码AST定位相应class method及envelope predicate,身份一致后执行原定唯一回放,不改产品、顺序、GC或预算;新r2独占产物不覆盖r1。
设备入口监督细化 · 2026-10-07
新的唯一已装CLI记录前、后各一次只读身份准入:原USB硬件/76.1.0安装元数据、唯一既有RSD路由、当前正PID与完整exe、原生clock;后轮要求同PID。每次内25s工作+5s显式关闭,外32s/128MiB,服务全部关闭后才启动CLI;不沿用旧正PID作为当前事实。实际record外160s/256MiB一次,后只读原Raw单遍30s/128MiB分析,完整SHA/count/header11+3/目标身份与原生5s准备+固定120槽对账。真实引擎回放只证原值传递,不是GUI入口或独立准确性;所有初missing/warmup/近似及无网络源missing输出仍保留。任何阶段失败封存而不自动重跑手机。
Implementation / Validation Update · 2026-10-07 · 共享源修复已安装并观察
Owner同AI方案/实施/自复核,非第三方。最小产品修改仅 adapters.py:固定完整14消费者11+3依赖列、实际SDK构造器同步dataclass、同一DeviceInfo上下文取得clock/支持列、ur匹配intervalMs;保留CPU flags/sampleInterval/原生clock/页候选及所有引擎公式/身份/sourceEpoch。两个测试路径同步;支持列表异常、必需缺字段明确失败,不回退全列、不削减requested指标。
| 验证层 | 实测结果 | 结论边界 |
|---|---|---|
| E2匹配 | 18新增控制+8源准备=26,0失败/错误/skip | 实际SDK与adapter/stream/engine;仅外部服务替身,不替代真机 |
| E2完整Python | 1603,0失败/错误/skip;完整子170.006888s,外170.493882s/CPU104.228696s/202727424 B | source drift0;首1602轮2失败及25组合污染失败保留 |
| E2相关Swift | CapturePlan/PerformanceFoundation/WorkbenchDisplay合同55,0失败;10.593771s | 不是完整Swift回归或GUI实际采集 |
| 构造成本 | 5对×40旧/新SDK调用,前瞻r1全部原预算通过;whole1.745816s/RSS78626816 B | 同external fixture,未模拟RPC延迟;首第5对最差超门保留 |
| 实际规模投影 | 同G83原32665162 B/518 envelope,旧新payload与引擎frames逐字相同;digest7d34339f… | 全真实数据、无重扫手机;不是独立参考 |
| 投影最差控制 | 首新18.444918ms/旧3.498509ms失败保留;r1工具读取blob前定位失败;r2奇偶交替、GC保持、所有518×2成本都保留,原四门通过 | r2旧/新wall0.866109694/0.681214859s、CPU0.823832/0.638951s、worst20.809873/10.623634ms;旧最差同期有GC,不据此倒推首失败唯一根因 |
| E2包来源 | 75实际PYZ模块+CLI/资源与当前源码一致;独立DMG整树相同、66契约source-independent probe | 不靠strings/版本号假证源码 |
| E3唯一覆盖 | Developer ID App/DMG严格签名、b125真实回退保持、同址覆盖b126;标准/登记/Spotlight各1 | 内部暂不公证;spctl3/stapler65真实保留,未绕过安全机制 |
构建whole139.211902s/CPU116.010546s/RSS201850880 B;包监督100.807504s/CPU83.252796s/RSS81641472 B,原环境,无新venv或worktree。构建后只清本批三份全树相等可重建App副本,旧Raw/失败/参考/回退未删。CPU/RSS均注明实际边界,采样树峰不排除未观测峰,物理I/O峰unknown。
真机产品入口(E4一次辅助源诊断,不是正式五轮)
新安装包实际CLI record、原设备A/目标App A当前76.1.0与完整exe、前后同一正目标身份;前后服务全部显式关闭,0launch/kill/手机config写。仅shared Sysmontap源,固定135s观察、原生目标起点后5s准备+120个1s诊断槽,全部Raw与准备/尾段保留,不hold-last/插值/删槽。
| 项目 | 实测 |
|---|---|
| Raw封存 | 518 events / 13034517 B;SHA 0254f9f06b25cd87a2c5202edbe76db96f6e3ada48995fa107dc02f971e9ac3d;manifest/count/字节/hash一致 |
| 新鲜目标 | 259真实行、目标缺席0;procAge严格递增;原生134.0688277917s |
| 固定诊断槽 | covered 120/120、valid 120/120;相邻窗最大1 native tick(41.6667ns)、倒序0 |
| 身份/布局/转换 | 518 verified、单sourceEpoch/targetGeneration、前后同PID;11+3真实header;layout mismatch0、原值engine mismatch0 |
| 14消费者依赖 | 全部14 metricID出现;6core向量1554值;无数值校准提升 |
| 质量不掩盖 | 进程CPU首1 missing;四counter速率首各1 warmup;available259 candidate-xnu-no-secluded;额外两network各259 missing-source,非网络真值 |
| 资源 | 已装CLI whole138.564074s/CPU13.771547s/RSS68976640 B,160s/256MiB门内;单遍Raw分析0.815710s/49082368 B |
自复核结论:此配置修复已通过E2控制、E3安装与一次E4实际CLI源准入。未知之前停顿的唯一根因;无同场旧/新因果对照。不能将候选传递正确当独立数值准确,不能从CLI外推GUI,也不将一次诊断计入正式五轮。完整54验收数量0、首项正式0/5保持;工程进展不是全部指标无进展,也不是最终100%可信完成。
下一动作:本机保持唯一b126,从原设备新同代参考生命周期获取当前TASK_VM_INFO独立参考,先严格原生窗/误差准入,再执行首metric原预先声明五轮(120槽/完整准备/2MiB或5%)。逐项推进,不跳到第二指标;源无独立参考、未知采样瞬时与跨读取连续时间边界须如实保留。其他53含电学/温度未验,不缩54分母。原五轮失败若有要全计,不能重采挑好轮。新的正式参考/真机轮另立前瞻合同,不混用G78旧参考与本次静态App数据。
边界:没有网站发布/新环境/其他App信号/新正式轮;原G83 50件、260旧源码除明确3代码/测试路径及新增测试外守恒、原v3摘要保持。12对应指标Canonical页更新真实SDK调用/共享配置,不改公式/容差/信任计数。A1OPEN/HybridFROZEN/G9OFF/GPL与正式公证保持。GitLab每批一次;失败不阻断后续修复,Webhook单次结果以交付机读件为准。