# 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.md`、`INDEX.md`、`CODEGRAPH.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.md` 和 `02-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`、`.json`、`02-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` 执行。 ```bash 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 '' --output-format json ``` credential 可访问后,使用安全本地方式提供 profile,不把真实值写入命令记录;构建命令形式: ```bash BUILD_ID=202607071930 \ MINDRAW_BUILD_AGENT=coder@mindraw \ MINDRAW_RELEASE_CLASS=mexp15-signed-notarized-dmg \ MINDRAW_SIGNING_IDENTITY='' \ MINDRAW_NOTARY_PROFILE='' \ CARGO_TARGET_DIR=/tmp/mindraw-md-edc-02-package-target-202607071930 \ npm run package:mindraw ``` 后续验证命令: ```bash 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-02`、`crg-583d507f679`、`Build202607071930`、`mexp15-signed-notarized-dmg`、`NOTARY_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 和台账。