edit | blame | history | raw

MD-EDC-02 signed / notarized DMG 阻塞记录

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

用户目标

基于 MEXP14 受控外部分发候选,生成普通用户可安装的 macOS Apple Silicon signed + notarized + stapled DMG 候选,默认版本 1.2.4 / Build20260707HHMM,不得泄漏证书、notary profile、Apple ID、app-specific password、API key、私钥或 .p12

已完成事项

  • 按入口规则读取 AGENTS.mdINDEX.mdCODEGRAPH.md、统一台账 MEXP14 / MEXP15 / H8 记录、MEXP15 Round Spec / role briefs、H8 signing / metadata 证据和发布 / 代码 / 交付 / QA / session-memory 规则。
  • 从 MEXP14 clean source commit b694a42d46fd02dcd6873e1f3f2406d3166fb28a 新建 worktree /private/tmp/mindraw-md-edc-02-signed-notarized-20260707,分支 codex/md-edc-02-signed-notarized
  • 固定本轮 source commit 583d507f679866f670b4fec82f1e631d4a9dbf54,Review Gate ID crg-583d507f679
  • 回写阻塞证据、机器可读摘要、review request、INDEX.md02-P/plan-progress.markdown

核心事实 / 变更快照

  • 变更对象:MEXP15 signed / notarized DMG source preparation。
  • 变更前:MEXP14 App candidate 为 1.2.3 / Build202607061556,clean source commit b694a42d46fd02dcd6873e1f3f2406d3166fb28a,未 Developer ID notarized。
  • 变更后:MEXP15 source commit 583d507f679866f670b4fec82f1e631d4a9dbf54 将 App version 递增为 1.2.4,新增 mexp15-signed-notarized-dmg manifest class,并将 notary profile 在 build-info / manifest / manifest build command 中脱敏为 redacted 状态。
  • 未产出:没有 .dmg、manifest、SHA256、notary submission、staple、spctl 证据或 release tag。
  • 阻塞事实:Developer ID Application identity 可见,但当前可发现的 notary credential profile 在 Keychain 中不可用;notarytool history 对脱敏 profile 返回 Keychain password item missing。
  • 证据来源:02-P/MEXP15-SignedNotarizedDMG/qa/md-edc-02-signed-notarized-dmg-check-20260707.md.json02-P/MEXP15-SignedNotarizedDMG/review/md-edc-02-review-request-crg-583d507f679.md

文件变更

  • Source worktree commit 583d507f679866f670b4fec82f1e631d4a9dbf54
  • package.json
  • src-tauri/tauri.conf.json
  • src-tauri/Cargo.toml
  • scripts/package-mindraw.sh
  • CHANGELOG.md
  • CODEGRAPH.md
  • 主项目回写:
  • 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
  • INDEX.md

可复用命令 / Runbook

用途:credential 修复后,从固定 source commit 继续 MEXP15 signed / notarized DMG 构建和验证。

前置条件:

  • 不在聊天、仓库或产物中写入真实 profile 名称、Apple ID、password、API key、私钥或 .p12
  • 本机 Keychain 已存在可用 notary credential profile。
  • 从 worktree /private/tmp/mindraw-md-edc-02-signed-notarized-20260707 执行。
cd /private/tmp/mindraw-md-edc-02-signed-notarized-20260707
git rev-parse HEAD
git status --short --branch
bash -n scripts/package-mindraw.sh
npm run doctor:mindraw:test
npm run test:run -- src/lib/mindrawProjectCanvasPreview.test.ts src/lib/mindrawAppApiTransport.test.ts src/lib/mindrawAppReadApi.test.ts
npm run build
CARGO_TARGET_DIR=/tmp/mindraw-md-edc-02-cargo-target-202607071930 cargo check --manifest-path src-tauri/Cargo.toml
CARGO_TARGET_DIR=/tmp/mindraw-md-edc-02-cargo-target-202607071930 cargo test --manifest-path src-tauri/Cargo.toml preview
CARGO_TARGET_DIR=/tmp/mindraw-md-edc-02-cargo-target-202607071930 cargo test --manifest-path src-tauri/Cargo.toml app_api_transport
security find-identity -v -p codesigning
xcrun notarytool history --keychain-profile '<redacted-profile>' --output-format json

credential 可访问后,使用安全本地方式提供 profile,不把真实值写入命令记录;构建命令形式:

BUILD_ID=202607071930 \
MINDRAW_BUILD_AGENT=coder@mindraw \
MINDRAW_RELEASE_CLASS=mexp15-signed-notarized-dmg \
MINDRAW_SIGNING_IDENTITY='<Developer ID Application identity>' \
MINDRAW_NOTARY_PROFILE='<redacted-profile>' \
CARGO_TARGET_DIR=/tmp/mindraw-md-edc-02-package-target-202607071930 \
npm run package:mindraw

后续验证命令:

hdiutil verify 03-O/C2.builds/releases/Build202607071930/Mindraw_1.2.4_aarch64-Build202607071930.dmg
xcrun stapler validate 03-O/C2.builds/releases/Build202607071930/Mindraw_1.2.4_aarch64-Build202607071930.dmg
spctl --assess --type open --context context:primary-signature --verbose=4 03-O/C2.builds/releases/Build202607071930/Mindraw_1.2.4_aarch64-Build202607071930.dmg

搜索关键词:MD-EDC-02crg-583d507f679Build202607071930mexp15-signed-notarized-dmgNOTARY_CREDENTIAL_PROFILE_UNAVAILABLE

未决问题

  • PMO / Owner 需要在本机 Keychain 或安全本地环境中恢复可用 notary credential profile。
  • Credential 恢复后,coder 需要重新执行 package、notary、staple、spctl、artifact SHA / manifest / mounted metadata 验证,并按同一 Review Gate 链路补证据。
  • REVIEW-EDC-03 仍需对 crg-583d507f679 回写结论;当前 review request 只能复核 source diff 和 blocker,不能复核尚未生成的 artifact。

后续建议

  • 修复 credential 后优先沿用 source commit 583d507f679866f670b4fec82f1e631d4a9dbf54,避免重新引入主工作区既有 dirty 状态。
  • 如果 PMO 要求新的 build minute,应在证据中明确替换 Build202607071930,并重新同步 manifest、tag 和台账。