implP6E2implemented2026-11-02

测试包只从 main 打包

背景与决策

2026-11-02 同步仓库时发现:内部包 235、236 都是在 Codex 独立 worktree 的功能分支(codex/metric-comparison-round2-20261028)上构建并同址安装的,分支没有合回 main,main 因此落后已安装包 15 个提交。根因有三条:

  1. 每个 AI 任务在独立 worktree/分支开发,交付后没有合并回 main;
  2. AGENTS.md 只要求推送“当前分支”,没有要求从 main 打包;
  3. 包内 Info.plist 不记录源码提交,从 App 本身无法判断来源。

当天已把该分支无冲突合入 main(5f8f3c15),并核对 236 构建前固定的 176 个源文件 SHA 与 main 全部一致,因此已安装的 236 即为 main 产品代码,不重打 237。

Project Owner 2026-11-02 当次明确要求同时落地两项:规则与构建保护。本批由 Owner 直接指示执行,没有另立 Lead 方案文档;记录在此以满足 C6。

实际修改

文件 修改
AGENTS.md 工作流程新增“测试包只从 main 打包”:签名/交付/标准安装包必须来自已推送到全部远程的 main 提交;分支工作先合并再打包;交付汇报写明提交号;放行开关仅限本地实验。
MacApp/scripts/build-app.sh 在 swift build 之前新增源码来源检查,并在 Info.plist 写入 PerfowlSourceCommit、PerfowlSourceBranch、PerfowlSourceClean、PerfowlSourceGate,构建结束打印 SOURCE_COMMIT/SOURCE_GATE。

门禁规则

相对口头建议的偏差

验证(E2)

场景 期望 结果
干净 main、两远程已推送、签名 通过 passed exit 0
只推送到一个远程、签名 拒绝 exit 1,指出未一致的远程
同上但不签名 构建继续 not-checked exit 0
MacApp/ 有未跟踪文件、签名 拒绝 exit 1
仅 MacApp/ 之外有改动、签名 通过 exit 0
功能分支、签名 拒绝 exit 1
功能分支、签名、显式放行 继续 bypassed exit 0
功能分支、身份为 - 继续 not-checked exit 0
非 git 目录、签名 拒绝 exit 1

站点构建(partial)

遗留