edit | blame | history | raw

MD-EDC-02 恢复执行后 codesign 阻塞

日期:2026-07-07
项目:Mindraw
任务:MD-EDC-02 / P-20260707-signed-notarized-dmg
角色:Coder@mindraw

用户目标

PMO 续派 MD-EDC-02,要求在 Owner 恢复本机 notary credential profile 后,从固定 worktree /private/tmp/mindraw-md-edc-02-signed-notarized-20260707、固定 source commit 583d507f679866f670b4fec82f1e631d4a9dbf54 继续生成 1.2.4 / Build202607071930 macOS Apple Silicon Developer ID signed / notarized / stapled DMG,并补齐 artifact 自查证据。

已完成事项

  • 按项目入口继续执行,确认固定 worktree 仍在 branch codex/md-edc-02-signed-notarized,HEAD 为 583d507f679866f670b4fec82f1e631d4a9dbf54,工作区无新增 source/config/script 改动。
  • 使用 /tmp/mindraw-notary-profile.env 作为本机 shell 内 profile 来源,仅做静默验证,未输出或写入 profile alias、Apple ID、password、API key、私钥、.p12 或 Keychain secret。
  • 静默验证 xcrun notarytool history --keychain-profile "$PROFILE" 可用;Developer ID Application identity 可见。
  • 使用 fresh CARGO_TARGET_DIR=/tmp/mindraw-md-edc-02-package-target-202607071930 运行 npm run package:mindraw;前端 build、Rust release 编译和 Tauri App bundle 生成已推进到 App signing 阶段。
  • 发现 App codesign --force --deep --sign ... --timestamp --options runtime 长时间无进展,疑似等待 Keychain 私钥授权或 timestamp 签名访问;中断后 package 退出码为 130
  • 更新过程证据:
  • 02-P/MEXP15-SignedNotarizedDMG/qa/md-edc-02-signed-notarized-dmg-check-20260707.md
  • 02-P/MEXP15-SignedNotarizedDMG/qa/md-edc-02-signed-notarized-dmg-check-20260707.json
  • 02-P/MEXP15-SignedNotarizedDMG/review/md-edc-02-review-request-crg-583d507f679.md
  • 02-P/plan-progress.markdown

关键决策

  • 不修改 source/config/script,因此不创建新的 Review Gate;crg-583d507f679 仍只表示 source diff / blocker 记录已通过复核,不覆盖 artifact。
  • 不从当前 dirty 主工作区打包,继续以 /private/tmp/mindraw-md-edc-02-signed-notarized-20260707 为唯一 source worktree。
  • 不把任何 notary credential、profile alias、Developer ID 私钥材料或 Keychain secret 写入聊天、仓库、manifest、build-info 或会话记录。
  • 当前不能回报 artifact-ready,因为没有生成 DMG、manifest、SHA256、notary submission、stapled artifact、spctlcodesign --verifyhdiutil verify 或 release tag。

核心事实 / 变更快照

  • 变更对象:MD-EDC-02 artifact 状态。
  • 事实来源:
  • 固定 source commit:583d507f679866f670b4fec82f1e631d4a9dbf54
  • fixed worktree:/private/tmp/mindraw-md-edc-02-signed-notarized-20260707
  • 自查 Markdown / JSON:02-P/MEXP15-SignedNotarizedDMG/qa/md-edc-02-signed-notarized-dmg-check-20260707.md / .json
  • review request:02-P/MEXP15-SignedNotarizedDMG/review/md-edc-02-review-request-crg-583d507f679.md
  • 主台账:02-P/plan-progress.markdown
  • 变更前:notary credential profile 已由 Owner 恢复,PMO 静默验证可用,任务恢复为 active,等待 coder 生成 artifact。
  • 变更后:notary profile 访问可用,但 package 阻塞在 App codesign --timestamp --options runtime,疑似等待 Keychain 私钥授权或 timestamp 签名访问。
  • 范围边界:没有 source/config/script 新改动;没有 DMG artifact;没有 notarization submission;没有 stapled artifact;没有正式候选可供后续安装复核。
  • 验证证据:notarytool history 静默通过;Developer ID Application identity 可见;npm run package:mindraw 推进到 Tauri App signing 阶段后长时间无进展并被中断,退出码 13003-O/C2.builds/releases/Build202607071930/ 不存在。

可复用命令 / Runbook

用途:在 PMO / Owner 处理 Developer ID 私钥授权后,从同一固定 source commit 恢复 MD-EDC-02 packaging。命令不得使用 set -x,不得打印 profile alias 或任何凭据。

前置条件:

  • 当前目录为 /private/tmp/mindraw-md-edc-02-signed-notarized-20260707
  • git rev-parse HEAD 必须为 583d507f679866f670b4fec82f1e631d4a9dbf54
  • /tmp/mindraw-notary-profile.env 存在,且仅在 shell 内 source。
  • Developer ID Application identity 可由 Keychain 访问;如 Keychain 弹出私钥访问提示,需 Owner 在本机确认。

设置 / 执行命令:

cd /private/tmp/mindraw-md-edc-02-signed-notarized-20260707
git status --short --branch
git rev-parse HEAD

set -euo pipefail
set +x
source /tmp/mindraw-notary-profile.env
PROFILE="${MINDRAW_NOTARY_PROFILE:-${NOTARY_PROFILE:-${NOTARYTOOL_KEYCHAIN_PROFILE:-}}}"
test -n "$PROFILE"
IDENTITY="$(security find-identity -v -p codesigning | awk '/Developer ID Application/ {print $2; found=1; exit} END {if (!found) exit 1}')"

BUILD_ID=202607071930 \
MINDRAW_BUILD_AGENT=coder@mindraw \
MINDRAW_RELEASE_CLASS=mexp15-signed-notarized-dmg \
MINDRAW_SIGNING_IDENTITY="$IDENTITY" \
MINDRAW_NOTARY_PROFILE="$PROFILE" \
CARGO_TARGET_DIR=/tmp/mindraw-md-edc-02-package-target-202607071930 \
npm run package:mindraw

验证步骤:

test -d /Users/ar/Projects/Mindraw/03-O/C2.builds/releases/Build202607071930
find /Users/ar/Projects/Mindraw/03-O/C2.builds/releases/Build202607071930 -maxdepth 1 -type f -print
shasum -a 256 /Users/ar/Projects/Mindraw/03-O/C2.builds/releases/Build202607071930/*.dmg
hdiutil verify /Users/ar/Projects/Mindraw/03-O/C2.builds/releases/Build202607071930/*.dmg

清理 / 恢复:

  • 如果 package 再次阻塞,先不要改 source;检查是否存在 Keychain 私钥授权提示或本机安全策略阻断。
  • 不删除旧 build 或既有用户成功证据。
  • 不把 /tmp/mindraw-notary-profile.env 内容写入任何日志、聊天或仓库文件。

搜索关键词:MD-EDC-02CODESIGN_PRIVATE_KEY_AUTHORIZATION_WAITBuild202607071930crg-583d507f679mexp15-signed-notarized-dmgcodesign --timestamp --options runtime

未决问题

  • PMO / Owner 需要处理当前 shell 下 Developer ID private key 授权,或安全调整 Keychain 私钥访问 / partition list。
  • 处理后仍需重新运行 packaging,并补齐 DMG、manifest、SHA256、notary submission、staple validate、spctl App/DMG assessment、codesign --verify --deep --stricthdiutil verify、mounted App metadata。
  • Artifact 产生后,crg-583d507f679 不能自动代表 artifact 通过;仍需进入后续 artifact 复核和安装路径验证。

后续建议

  • PMO / Owner 在本机完成私钥授权处理后,续派 coder 从同一 fixed source commit 重试。
  • 若重试仍卡在 codesign,优先记录 codesign 具体 stderr / GUI 授权状态,但继续避免输出任何 secret。