edit | blame | history | raw

2026-07-07 MEXP15 QA-EDC-04 执行记录

用户目标

PMO 恢复派工 QA-EDC-04,要求 QA 基于 MD-EDC-02 已产出的 1.2.4 / Build202607071930 signed / notarized / stapled DMG,按已准备的验证矩阵执行普通用户路径验证,写入 QA validation report,回写统一台账,并回报 PMO。

边界:不改源码、构建脚本、候选包或发布材料;不记录 notary profile、Apple ID、password、API key、私钥、.p12 或 Keychain secret;如没有 fresh machine / clean macOS user,不得把本机普通 smoke 冒充跨机器验证。

已完成事项

  • 读取并遵守 AGENTS.mdINDEX.md02-P/plan-progress.markdownP-20260707-signed-notarized-dmgQA-EDC-04 验证矩阵、MD-EDC-02 自查 Markdown / JSON、Review Request crg-583d507f679
  • 复核 crg-583d507f679=PASS_SOURCE_DIFF_ONLY 的边界:只覆盖 source diff,不覆盖 artifact、QA、PMO Gate、用户验收或正式发布。
  • 对当前可安全执行的 artifact 层验证完成 QA 复核:DMG / manifest SHA、hdiutil verifyxcrun stapler validate、DMG spctl、source tag、manifest metadata、DMG read-only mount、mounted App metadata、mounted App codesign 和 App spctl 均通过。
  • 未执行 copy to /Applications、首次 GUI 启动、.mindraw / mindraw:// system handler、Codex sidebar、Edit / double-click、保存刷新、重启、rollback / uninstall;原因是当前机器不是 fresh / clean 环境,且 /Applications/Mindraw.app 已存在 1.2.3 / Build202607042351
  • 写入 QA 报告和机器可读摘要:
  • /Users/ar/Projects/Mindraw/02-P/MEXP15-SignedNotarizedDMG/qa/qa-edc-04-signed-notarized-dmg-validation-report-20260707.md
  • /Users/ar/Projects/Mindraw/02-P/MEXP15-SignedNotarizedDMG/qa/qa-edc-04-signed-notarized-dmg-validation-report-20260707.json
  • 回写 /Users/ar/Projects/Mindraw/02-P/plan-progress.markdown 的 MEXP15 状态、任务卡、证据入口和 Progress Log。
  • 更新 /Users/ar/Projects/Mindraw/INDEX.md,新增 QA-EDC-04 report / JSON 入口。

关键决策

  • QA 结论为 PARTIAL QA-EDC-04 WAITING_FOR_FRESH_MACHINE_OR_USER_OPERATION
  • artifact 层可判定为 PASS,但普通用户完整路径不得判定 PASS。
  • 当前主力机已有 Mindraw 安装,不执行会覆盖或删除 /Applications/Mindraw.app 的验证动作。

核心事实 / 变更快照

  • 变更对象:MEXP15 QA-EDC-04 状态与证据链。
  • 事实来源:
  • 02-P/MEXP15-SignedNotarizedDMG/qa/qa-edc-04-signed-notarized-dmg-validation-report-20260707.md
  • 02-P/MEXP15-SignedNotarizedDMG/qa/qa-edc-04-signed-notarized-dmg-validation-report-20260707.json
  • 02-P/plan-progress.markdown
  • 变更前:QA-EDC-04 计划已准备,等待 MD-EDC-02 artifact 后执行;台账状态为 Active / MD-EDC-02 artifact ready / pending QA-EDC-04 and PM-EDC-REGATE-04
  • 变更后:QA-EDC-04 当前可安全验证范围已执行,台账状态改为 Active / QA-EDC-04 partial artifact validation pass / waiting fresh machine or user operation / pending PM-EDC-REGATE-04
  • 候选基线:1.2.4 / Build202607071930,DMG SHA256 5a053f02910463507879b42bb63445810eae3bfb2a9730c65f753e32e5d74df3,manifest SHA256 1c9af6795bb239f3d92d84bd864e7df524845683219de37d6c021f8cdeb20931,source commit / tag 均指向 583d507f679866f670b4fec82f1e631d4a9dbf54 / v1.2.4-build20260707.1930-mexp15-signed-notarized
  • 范围边界:crg-583d507f679 是 source-diff-only PASS;本 QA partial 不代表 PMO Gate、用户验收或正式发布。
  • 验证证据:JSON parse 通过;报告和台账中记录的 terminal signal 为 PARTIAL QA-EDC-04 WAITING_FOR_FRESH_MACHINE_OR_USER_OPERATION

文件变更

  • 新增:02-P/MEXP15-SignedNotarizedDMG/qa/qa-edc-04-signed-notarized-dmg-validation-report-20260707.md
  • 新增:02-P/MEXP15-SignedNotarizedDMG/qa/qa-edc-04-signed-notarized-dmg-validation-report-20260707.json
  • 修改:02-P/plan-progress.markdown
  • 修改:INDEX.md
  • 新增:.codex-sessionhistory/2026-07-07-MEXP15QA执行.md
  • 修改:.codex-sessionhistory/COMMANDS.md

可复用命令 / Runbook

用途:复跑 MEXP15 signed / notarized DMG artifact 层 QA 验证。该 Runbook 不覆盖 fresh machine GUI、Codex sidebar 或 rollback;这些仍需要 prepared environment 和截图。

前置条件:

  • DMG 和 manifest 路径存在。
  • 不在主力环境上覆盖 /Applications/Mindraw.app
  • 不输出或记录 notary profile、Apple ID、password、API key、私钥、.p12 或 Keychain secret。
DMG="/private/tmp/mindraw-md-edc-02-signed-notarized-20260707/03-O/C2.builds/releases/Build202607071930/Mindraw_1.2.4_aarch64-Build202607071930.dmg"
MANIFEST="/private/tmp/mindraw-md-edc-02-signed-notarized-20260707/03-O/C2.builds/releases/Build202607071930/release-manifest.json"
WT="/private/tmp/mindraw-md-edc-02-signed-notarized-20260707"

sw_vers
uname -m
whoami
shasum -a 256 "$DMG" "$MANIFEST"
hdiutil verify "$DMG"
xcrun stapler validate "$DMG"
spctl --assess --type open --context context:primary-signature --verbose=4 "$DMG"
git -C "$WT" rev-parse HEAD
git -C "$WT" rev-parse v1.2.4-build20260707.1930-mexp15-signed-notarized^{}
git -C "$WT" status --short --branch

只读挂载和 App metadata / 签名检查:

set -euo pipefail
DMG="/private/tmp/mindraw-md-edc-02-signed-notarized-20260707/03-O/C2.builds/releases/Build202607071930/Mindraw_1.2.4_aarch64-Build202607071930.dmg"
MOUNT="$(mktemp -d /tmp/mindraw-qa-edc-04-mount.XXXXXX)"
cleanup() {
  hdiutil detach "$MOUNT" >/dev/null 2>&1 || true
  rmdir "$MOUNT" >/dev/null 2>&1 || true
}
trap cleanup EXIT

hdiutil attach -nobrowse -readonly -mountpoint "$MOUNT" "$DMG"
ls -la "$MOUNT"
APP="$MOUNT/Mindraw.app"
test -d "$APP"
test -L "$MOUNT/Applications" -o -d "$MOUNT/Applications"
INFO="$APP/Contents/Info.plist"
/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' "$INFO"
/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' "$INFO"
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' "$INFO"
/usr/libexec/PlistBuddy -c 'Print :CFBundleURLTypes' "$INFO"
/usr/libexec/PlistBuddy -c 'Print :CFBundleDocumentTypes' "$INFO"
codesign --verify --deep --strict --verbose=4 "$APP"
spctl --assess --type execute --verbose=4 "$APP"

主力机安全检查:

if [ -d /Applications/Mindraw.app ]; then
  /usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' /Applications/Mindraw.app/Contents/Info.plist
  /usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' /Applications/Mindraw.app/Contents/Info.plist
  /usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' /Applications/Mindraw.app/Contents/Info.plist
else
  echo 'NO_INSTALLED_MINDRAW_APP'
fi

验证步骤:

  • SHA 输出必须匹配 5a053f02910463507879b42bb63445810eae3bfb2a9730c65f753e32e5d74df31c9af6795bb239f3d92d84bd864e7df524845683219de37d6c021f8cdeb20931
  • stapler 必须显示 validate action worked。
  • DMG 和 mounted App 的 spctl 必须 accepted,source 为 Notarized Developer ID
  • mounted App metadata 必须是 bundle id com.mindraw.desktop、version 1.2.4、build Build202607071930,并包含 mindraw URL scheme 和 .mindraw package document type。

清理 / 恢复:

  • 只读挂载脚本通过 trap cleanup EXIT 自动 detach。
  • 如手动挂载未清理,执行 hdiutil detach <mountpoint>

搜索关键词:QA-EDC-04Build202607071930WAITING_FOR_FRESH_MACHINE_OR_USER_OPERATIONstapler validatespctl accepted5a053f02910463507879b42bb63445810eae3bfb2a9730c65f753e32e5d74df3

未决问题

  • 仍需 fresh machine、clean macOS user 或 prepared rollback environment 执行普通用户安装、首次启动、.mindraw / mindraw:// system handler、Codex sidebar、Edit / double-click、保存刷新、重启、rollback / uninstall。
  • 仍需 PMO 判断是否基于当前 partial artifact PASS 进入受限 PM-EDC-REGATE-04,或继续派 QA 等待 Owner / fresh machine 补充证据。

后续建议

  • PMO / Owner 提供 fresh machine 或 clean macOS user 后,续派 QA 复用本报告中的 Owner evidence list 补 GUI / sidebar / rollback 证据。
  • 若只能由用户手动执行,应要求回传命令输出和截图,尤其是 first launch、Codex sidebar READY / fail-closed、save refresh before/after 和 rollback metadata。