Skip to content

ARM完整产品冻结与兼容 ​

1. 范围与当前事实 ​

Owner授权同一AI承担方案、实现、测试和分离复核,无子代理。本批起点main a7531d12c73d60bf5c4662db1345f77f44fc119e;整体27/66,唯一当前中断唤醒率1Hz旧4/5、新正式0轮。本机ARM源码环境101条版本、147相关控制、实际44Core的18案例已通过E2;Lab开发签名和只读手机通道已核。此方案不重测历史指标、不重放旧队列、不拼接第五轮、不进入磁盘。

现有冻结脚本限制x86_64,并假定cryptography链接host动态OpenSSL、sslpsk包含私有.dylibs。本机固定ARM官方wheel的这两项均为静态OpenSSL布局,不能照搬路径,也不能为过构建换版本。未形成新完整产品、未安装;Mac Developer ID身份类别仍缺,iOS Lab开发签名可用。公证继续暂缓、内部测试限定,正式分发/GPL门开放。

2. 固定输入与实施决策 ​

  1. 版本逐条沿用原101依赖与PyInstaller6.22.3,不改现有锁、不改相邻项目。共享预检验证实际macOS CPython3.12、本机/目标架构一致、全部版本和必要Mach-O架构。ARM使用已经建立的唯一源码环境,不自动创建或下载新环境。Intel原libusb二进制SHA保持不变,不把新架构产物覆盖旧pin。
  2. ARM的libusb使用官方固定1.0.29源发布包;官方GitHub release资产声明SHA-256为5977fc950f8d1395ccea9bd48c06b3f808fd3c2c961b44b0c2e6e29fc3a70a85,645381B。先核来源/摘要再构建,单独记录架构、编译器、SDK、最低macOS13、flags、源码和builder摘要、实际输出SHA、Mach-O依赖及版本;不冒充旧Intel包。来源:官方release。此为本批有意固定的输入,不宣称最新版本。
  3. libusb在项目现有构建缓存内从源码构建,不安装Homebrew或修改系统目录。保留源码失败/输出,产物以实际版本和架构验证后才写成功收据;新建架构缓存、保留原Intel输入。复制对应许可证进候选包;不以此关闭正式法务门。
  4. 增加共享冻结输入检查器,读取实际cryptography/sslpsk本机模块及otool -L。静态布局不得注入不相关host OpenSSL;动态布局仍保留cryptography host pair与sslpsk private pair隔离。缺失半对、未支持的OpenSSL依赖或架构混合立即失败。从模块实际路径选ABI,不硬编码后缀。共享检查器输出稳定manifest和NUL参数文件,shell不eval、不拆带空格路径。
  5. 更新Core/CLI/兼容sidecar冻结和App环境检查,允许明确同架构的arm64或x86_64;Core缓存纳入环境/native/脚本输入,缓存返回前运行实际probe。不以旧缓存或可启动解释器代替完整runtime。沿用GUI现有Tools/arm64选择;ARM可选预览仍为既有ImageIO路径,不引入图像算法变化。
  6. 每个新冻结runtime执行probe/版本/帮助及本机架构/依赖闭包检查。完整App从当前Swift源码构建,使用单一私有候选输出目录(非标准安装路径,不创建并行已安装客户端)。若Developer ID类别仍缺,只保留内部构建候选和明确签名状态;不以ad-hoc/Apple Development候选宣称正式Mac交付,也不自行豁免安装门。具体验证后再提出确有必要的Owner动作。

3. 轻量与效率门 ​

关键路径:固定输入验证 → libusb一次源码构建 → 三个runtime串行冻结 → Swift/App组装 → 独立包内检查。预检O(101版本+有限本机模块字节),冻结及完整树核验O(实际输入/输出字节);流式SHA、复用唯一环境/缓存,无常驻进程、无高频手机轮询或新采集。PyInstaller内部图处理按真实锁测量,不虚构复杂度上界。

  • 开始前与批后检查空间,≥10GiB且≥预计新增量两倍;预计新增≤4GiB,当前约127GiB。
  • 元数据/下载各≤30秒、192MiB;下载≤1MiB,TLS使用已有系统CA,不禁验证。
  • 共享预检/单个probe≤30秒、192MiB;native libusb构建≤180秒、512MiB、make jobs1。预计数秒到1分钟。
  • 每个冻结≤300秒、1024MiB、串行1;预计每个30–120秒。三份runtime预计≤600MiB,本批构建缓存另计。Swift/App构建≤300秒、1536MiB,jobs1;组装/架构/动态依赖扫描≤120秒、512MiB。
  • 记录首响应、总耗时、CPU、RSS、文件数/字节与可靠可测I/O;未测吞吐/系统I/O写unknown。对比旧脚本在本机的具体拒绝与新候选实际完成量;旧脚本无法在同输入完成,不能捏造可比运行性能数字。真实GUI响应/采集性能仍须后续真实数据规模资格,不以冻结速度替代。
  • 首失败保留并分析,修复必须先追加方案,使用新attempt目录;不因观察超时重启活任务,不提高采集192MiB门。

4. 验证与交付判据 ​

共享检查器必须反控:错架构、版本不符、缺动态半对/不支持链接、libusb摘要错、缓存输入漂移均拒绝;静态ARM和动态Intel声明分别验证。不能在无Intel输入的新机伪称Intel真运行回归通过。

实际构建只证明E2;完整runtime需实际probe成功,独立核ARM闭包、无host绝对动态库依赖、关键native加载及包内来源一致。新Mac标准客户端只允许后续空闲退出后同址安装。签名类别/安装与GUI/真实参考开销、配方资格、新诊断、手机原件保全归位/实际容量收据仍分别开放。新正式独占attempt另写当前Canonical后才新五生命/Session,每轮600秒冷却、首失败停。

批次完成追加实际文件/偏差/命令/资源/失败,生成不可变HTML快照与时间线/门禁联动,窄提交双推并按实际收据通知;网站资源/认证缺口单列,不伪称发布。指标计数保持27/66。

Implementation Update · 2026-10-18 · 首批实现 ​

已按方案增加固定native输入清单、离线ARM libusb builder和共享冻结预检;预检核101版本、固定冻结器、实际Mach-O/静态或动态OpenSSL布局,并将已安装源/native/metadata内容摘要纳入缓存。Core/CLI/兼容sidecar和App架构检查已接入,Intel原libusb SHA保持不变;ARM不自动创建新环境。动态同名OpenSSL隔离、带空格参数与缓存内容漂移增加反控。当前实现尚待首次软件控制和实际源构建/冻结验证,不能称已交付;私有原件使用独立arm-product-freeze-01目录。

Review Decision · 2026-10-18 · 缓存路径稳定性 ​

首个Core/CLI实际冻结均通过。分离阅读发现CLI与兼容sidecar沿用的shasum原始输出含调用脚本路径:相对路径执行后,App用绝对路径调用会造成无内容变更的缓存失效。先统一按固定文件顺序仅聚合内容摘要,再用新CLI构建与跨路径缓存调用验证;保留首构建日志,不以手工改写成功key跳过验证;相同源码的可重建冻结缓存由builder替换,首份二进制SHA未独立封存,不能声称其产物已归档。该修订不影响runtime产品语义;编译/冻结预算不变。

Diagnostic Decision · 2026-10-18 · 冻结闭包检查器的symlink上下文 ​

首次独立扫描在CLI的PIL相关依赖上报告13条未解析,保留失败JSON与日志。实际这些根目录dylib是指向包内PIL/.dylibs的symlink,检查器对别名路径计算@loader_path,没有先正规化真实模块路径;不能因此宣布产品依赖缺失。现有CLI的只读webinspector --help实际exit0且dyld加载日志包含PIL imaging,调用手机0。下一新R2保留每个真实模块的load/rpath、正规化路径和精确包内解析,仍拒绝包外/缺文件/错架构;不改产品或通过注入host搜索目录规避。PyInstaller6的POSIX包需要保留symlink;本批ditto和cp -R沿用保留链接方式。来源:官方说明。

Candidate Decision · 2026-10-18 · 私有Mac开发签名候选 ​

三个runtime闭包R2通过:全部实际Mach-O为arm64,包内动态依赖解析成功,Core89个已冻结模块与当前源码编译的code object逐项相同;CLI版本及兼容sidecar帮助通过。首个闭包检查器失败保留,不是产品依赖失败。跨相对/绝对路径缓存调用三份执行文件SHA/mtime均不变。

下一将完整Swift/App组装到独立私有candidate,内部build190;使用Owner指出且已证明私钥可用的现有Apple Development身份签候选并严格验证。此动作仅产生可审查内部候选E2,不写标准安装路径、不启动GUI或手机,不将开发签名替代Developer ID正式交付要求。完成独立解包/包内核对后,若仍只有开发身份,必须明确保留标准安装门并向Owner说明需要的确切决定。公证继续暂缓。

Packaging Diagnostic · 2026-10-18 · 证书提取参数 ​

完整App已开发签名并严格验证。首次私有容器脚本在提取实际leaf时把--extract-certificates的可选prefix写成分离参数,被codesign当成待读文件而exit1;尚未创建DMG,不据此判断签名失效。原脚本和失败日志保留。下一仅用等号形式传prefix,以新R2日志复用已经核定的App,核实际leaf后再建容器;不重建App、不改证书或提高预算。

Validation Update · 2026-10-18 · 实际结果与分离复核 ​

实现范围与偏差 ​

实际修改五个脚本:Core/CLI/兼容sidecar冻结、App架构/许可证组装、旧独立Core归档脚本的新增builder输入复制。新增固定native输入JSON、离线libusb builder、共享冻结检查器和15项软件反控。原101版本、pymobiledevice311.3.1、冻结器6.22.3、Intel libusb原SHA不变;没有修改Swift/Core/Python指标公式、来源或阈值。当前ARM仍使用既有ImageIO预览路径。

相对首稿补充两项复核修正:CLI/兼容sidecar缓存不再包含脚本调用路径;闭包诊断使用symlink真实模块位置计算loader路径。旧独立Core归档仍为Intel受限历史命令,本批只补齐其新增输入文件,不声称已在ARM执行该旧发行流程。实际Mac候选采用Apple Development签名,Developer ID要求仍未满足;不将构建产物当正式交付或指标通过。

资源与完成量(E2) ​

检查实际耗时退出/监督峰值RSS结论
15项输入/布局/错架构/错版本/摘要/缓存漂移反控0.092秒29,229,056B通过,无手机
官方libusb源码下载/SHA核同2.748秒26,886,144B645381B、TLS验证通过
ARM libusb源码构建/实际加载版本8.701秒78,069,760B通过,未改系统安装
Core首次冻结/native probe21.569秒252,313,600B通过
CLI首冻结 / 路径缓存修订后新冻结36.938 / 35.959秒309,788,672 / 333,103,104B两次均通过,首日志保留
兼容sidecar冻结13.959秒224,821,248B通过
CLI / Core / 兼容sidecar跨路径缓存1.715 / 1.970 / 0.701秒70,467,584 / 75,218,944 / 39,075,840B三份执行文件SHA及mtime均不变
独立闭包R2、字节码与实际命令4.912秒100,859,904B通过
完整Swift/App build190及开发签名47.775秒1,205,633,024B通过,源码pins无漂移
DMG创建/开发签名/独立只读挂载全树核同R217.553秒66,371,584B通过,已正常卸载
签名后App包内闭包与实际命令3.071秒105,742,336B通过

冻结预算300秒/1024MiB、完整App300秒/1536MiB均未超;常规probe/缓存仍在192MiB内。冷/热缓存CPU秒分别为Core13.784/1.924、CLI26.753/1.038、兼容sidecar12.985/0.674。旧Intel限制路径没有在本机完成的有效基线,不能编造旧路径成功耗时;冷/热是本实现缓存成本对比。新签名后三runtime共318个Mach-O均arm64、唯一实际文件约222,165,207B;系统I/O峰值、设备采集吞吐与GUI响应未测,记unknown,不能从构建速度推断指标性能。

独立分离复核未采用“脚本exit0”作为全部证据:实际解析318个Mach-O及包内动态依赖(包外依赖仅允许系统路径),直接读取冻结PYZ的89个Core模块,与当前源码独立编译code object逐项相同;四份数据合同逐字节核同。签名后包内Core真实native probe、CLI11.3.1和兼容sidecar帮助均成功。App和DMG严格签名验证、App实际leaf与所选现有身份核同;DMG只读独立挂载后12931项文件/链接全树核同。完整App的GUI尚未启动;未安装、未触及手机。

失败保留与限制 ​

  • 首闭包检查1.480秒/87,474,176B、exit1,误将PIL包内symlink别名用于loader相对路径计算;R1原件保留。新R2按实际模块路径解析,并有真实frozen webinspector帮助加载PIL的独立只读证据;未注入host路径或修改产品求通过。
  • 首容器脚本0.614秒/33,734,656B、exit1,证书提取可选参数格式错误,尚未创建DMG;原脚本和日志保留,R2仅修正该参数。App严格签名已先通过,不能把命令参数失败解释为证书失效。
  • 第一CLI可重建输出缓存由新builder替换,首份二进制SHA未独立封存;保留的是首构建日志,不能称旧产物完整封存。没有删除Raw、Session、失败手机数据或旧机资料。
  • Mac候选为Apple Development开发签名,不是Developer ID交付包;Gatekeeper实测exit3,公证未做(Owner暂缓)。现有签名权限已实际证明,但仍不能擅自豁免AGENTS的Mac标准安装/Developer ID门。下一需Owner明确是否允许本次仅新机内部测试使用该开发签名同址安装,或准备Developer ID身份。此类别决定不影响已核Lab签名。
  • 站点两次既有资源失败、Cloudflare认证与Webhook配置缺口保持,未重新试堆/部署。此次软件准备不关闭指标交付门。

实际产物、复现与下一步 ​

私有产物位于~/Perfowl-NewHost-Recovery/20261018-arm-product-freeze-01/Perfowl-1.0.0-190-arm64-internal.dmg及相邻.sha256,116,261,561B,SHA-256:1f0c204b8d86a66dabea636e25f186fdf7dd31b48a0e609c24786261bf8c5aed。实际App、安装前全树、来源pins、各轮监督/构建/签名日志、独立检查器R1/R2和挂载核同均留私有目录;真实签名身份不入Git。

复现使用已核的本机环境(明确设置PERFOWL_CORE_PYTHON和PERFOWL_PYINSTALLER_PYTHON为现有ARM环境),按顺序执行:build-native-libusb.py --source 已核官方源包 --output MacApp/.sidecar-build/libusb-arm64、build-sidecar-core.sh、build-pymobiledevice3.sh、build-sidecar.sh、build-app.sh。App须明确新私有PERFOWL_DIST_DIR、build190、jobs1和私有选择的签名身份,并由既有finite guard监督;未经同意不要写标准安装路径。独立15反控:python3 -B -m unittest discover -s MacApp/scripts/tests -p test_freeze_inputs.py -v。

下一阶段仍为当前中断1Hz准备:完成Mac标准安装签名类别决定/GUI资格;直接保全需要归位的手机旧原件,真实容量规划含新参考资格/开销/诊断与五轮;核配方,另落新独占attempt与真实容量收据,再完整五新生命/Session和分离复核。整体27/66、旧4/5、新正式0轮;不重测历史指标、不进入磁盘。交付状态partial,提交/双推/通知按独立实际收据报告。本批增量快照。

Owner Decision / Installation Plan · 2026-10-18 · 仅新机内部开发签名安装 ​

Owner已明确允许本次仅本机内部测试使用已核Apple Development候选安装至唯一/Applications/Perfowl.app;公证继续暂缓,Developer ID正式包/Gatekeeper与GPL分发门不因此关闭。此决定覆盖此前等待签名类别确认,现有可用证书无需重新迁移。

执行前读取真实标准路径和活动进程:路径若已存在或存在产品/本批采样生命即停,不盲覆盖未知工作。当前观察标准路径不存在。核既定DMG SHA及候选tree收据,再只读挂载,从容器App用ditto保留symlink复制到/Applications独占暂存;流式1MiB逐文件SHA和symlink/目录/mode核同,严格签名及build190/arm64核对后同卷rename到唯一标准路径,记录持久journal。不启动采样、不复制旧Session;失败保留暂存、无自动删除或重试,不全局修改Gatekeeper。正常卸载挂载卷。

安装与核树O(实际树字节+文件数)、串行1,整体120秒/192MiB,单命令30秒(ditto60秒),预计≤30秒;临时新增≤1GiB,空间≥10GiB且≥新增两倍。核SHA按块读取,避免旧工具整文件读取超192MiB。安装后另以单次正常GUI打开与只读检查验证首响应/真实主窗口/无采样状态,30秒有界;GUI自身资源观察单列,不借监督子进程RSS冒充App资源。若Gatekeeper阻止,保存实际表现后分析,不反复启动。GUI可见不等于真实规模性能或指标验收;27/66、新正式0轮不变。手机保全与独占归位计划仍分别推进。

Installation / GUI Diagnostic · 2026-10-18 ​

安装通过:8.620秒/87,916,544B,12,931文件/链接和15,131权限模式项核同,严格签名及实际leaf核同;标准路径为唯一安装,镜像正常卸载。未全局修改Gatekeeper或安装其他版本。

GUI单次正常open返回成功,首检查在process出现后立即运行,约0.125秒时尚不满足主窗口/唯一capture控件;检查器失败保留(外层0.174秒/20,283,392B),launch一次、采样0,不据此判产品启动失败。随后原生UI工具的getApp观察30秒超时,也不据观察超时重开App。下一只读检查同一已存在生命及当前AX窗口,先核真实控件树;不再次open、不发AX动作或开始采样。最多20秒/192MiB,完整GUI性能与来源门仍开放。

Validation Update · 2026-10-18 · 安装后GUI只读资格 ​

后续仅检查已存在单一实例,未再次open:301节点/唯一主窗口/唯一capture控件,AXTrusted=true、无截断,0.399秒/7,847,936B。控件真实AXDescription为“播放”且disabled,当前源码以play/stop/hourglass分别对应空闲/采样/收尾;首启动包装器里尚未执行到的“开始采样”字符串假设也不适用,分离审核使用真实源码与实际树,不改产品文案求通过。新绑定生命在本次只读检查前后核同,GUI RSS两次观察114,622,464/134,430,720B,不能叫生命周期峰值或真实负载基准。

安装及只读GUI环境资格成立(E3),首帧启动延迟未测、实际规模图表/采集性能仍未证。原过早检查失败与原生UI工具超时均保留。单次GUI正常launch、AXPress0、capture Start0;后续手机四参考仅自有Lab资格,无产品Session。完整安装/GUI日志在私有20261018-mac-install-01/;此为内部开发签名的Owner例外,不升级正式分发资格。

Perfowl · Performance Observer