edit | blame | history | raw

MEXP14 QA-EDC-03

日期:2026-07-07
项目:Mindraw
Plan ID:P-20260706-external-distribution-candidate
Task ID:QA-EDC-03
角色:QA

用户目标

PMO 派发 QA-EDC-03,要求从 QA 角色收口 MEXP14 外部分发候选的 App rollback 验证与剩余真实环境风险。边界是不得破坏当前主力机器状态,不改源码、构建、候选产物,不替 PMO 宣布候选升级。

已完成事项

  • 按派工顺序读取 AGENTS.mdINDEX.md、统一台账 MEXP14 计划项、治理收口文档、QA-EDC-02 报告、用户新机器 CLI / GUI 证据和 OPS rollback 模板。
  • 核对 App candidate 1.2.3 / Build202607061556 与 rollback target 1.2.3 / Build202607042351 的本地 DMG SHA256。
  • 非破坏性读取当前 /Applications/Mindraw.app 版本,确认当前主力机器已经是 rollback target Build202607042351,不是可用于验证从 candidate 回滚的 prepared machine。
  • 补读 M4C-EDC-02 rollback / freeze / archival 记录,确认 plugin 侧已记录无上一版外部分发 baseline,并选择 remove-only rollback,但仍待 REVIEW-EDC-02
  • 产出 QA 报告:02-P/MEXP14-ExternalDistributionCandidate/qa/qa-edc-03-rollback-and-residual-risk-20260707.md
  • 回写 02-P/plan-progress.markdown 的 MEXP14 状态、任务卡、证据链接和 Progress Log。
  • 更新 INDEX.md,把 QA-EDC-03 报告加入 MEXP14 QA 证据索引。

关键决策

  • qa_result=BLOCKED_PENDING_PREPARED_MACHINE
  • PM_NOTIFY_READY=yes,含义是 QA-EDC-03 报告和阻塞条件已经可供 PMO 收敛,不代表 QA PASS、PMO Gate、发布或用户验收通过。
  • 当前机器不执行 destructive rollback:不删除 /Applications/Mindraw.app,因为当前机器不是 prepared rollback target,且已经安装 rollback baseline。
  • Plugin remove-only rollback 只认定为 CLI 层 PASS_WITH_LIMITSM4C-EDC-02 已记录无 previous external plugin baseline 并采用 remove-only policy,但该记录仍待 Review Gate crg-941a537b8e13 / PMO 接受,Codex Desktop GUI removal 未覆盖。

文件变更

  • 新增:/Users/ar/Projects/Mindraw/02-P/MEXP14-ExternalDistributionCandidate/qa/qa-edc-03-rollback-and-residual-risk-20260707.md
  • 修改:/Users/ar/Projects/Mindraw/02-P/plan-progress.markdown
  • 修改:/Users/ar/Projects/Mindraw/INDEX.md
  • 新增本会话记录:/Users/ar/Projects/Mindraw/.codex-sessionhistory/2026-07-07-MEXP14-QAEDC03.md
  • 更新命令索引:/Users/ar/Projects/Mindraw/.codex-sessionhistory/COMMANDS.md

核心事实 / 变更快照

  • 变更对象:MEXP14 QA-EDC-03 App rollback 与剩余真实环境风险状态。
  • 事实来源:
  • 02-P/MEXP14-ExternalDistributionCandidate/qa/qa-edc-03-rollback-and-residual-risk-20260707.md
  • 02-P/plan-progress.markdown
  • INDEX.md
  • 变更前:QA-EDC-03 仍待执行;QA-EDC-02 记录 App rollback 未覆盖,plugin remove-only rollback 只有 clean CLI profile 证据。
  • 变更后:QA-EDC-03 报告明确 App rollback 状态为 BLOCKED_PENDING_PREPARED_MACHINE;台账将 MEXP14 状态更新为 Active / QA-EDC-03 reported BLOCKED_PENDING_PREPARED_MACHINE / not formal releaseQA-EDC-03 任务卡被标为已产出报告;plugin rollback 口径更新为 remove-only recorded pending review,不再写成单纯未处理。
  • 版本 / build 基线:
  • App candidate:1.2.3 / Build202607061556
  • Candidate DMG SHA256:3b17b89461374621c80d127e6475e6de502031486201f672f7fc4fde57e744a8
  • Rollback target:1.2.3 / Build202607042351
  • Rollback target DMG SHA256:5c8041288a61f8c09e7bf0ca8a0bcd68b55d17e5aaa1079eb8d7864a952481b5
  • 当前主力机器 /Applications/Mindraw.app1.2.3 / Build202607042351
  • Plugin candidate:mindraw-plugin-0.1.0+codex.20260704090518-EDC20260706154843
  • Plugin marketplace:mindraw-mexp14-edc-20260706154843
  • Plugin tarball SHA256:ee06e91a866049b6a8062367f77fc659aa3c3c9f5638f7b0c2b61ad8e14aa2f1
  • 范围边界:本轮只收口 QA 风险与可执行步骤,不执行真实 App rollback,不做正式发布、不做 PMO Gate、不做用户验收结论。
  • 验证证据:DMG SHA256 与当前 App Info.plist 的只读命令输出已写入 QA-EDC-03 报告。

可复用命令 / Runbook

用途:在 prepared fresh / clean machine 上验证 MEXP14 App candidate 能从 Build202607061556 回滚到 Build202607042351,并捕获命令与截图证据。

前置条件:

  • 只在可替换 /Applications/Mindraw.app 的 prepared fresh Mac、clean macOS user、VM 或 disposable machine 上执行。
  • 已准备 candidate DMG 与 rollback DMG。
  • 当前主力机器不得执行删除 /Applications/Mindraw.app 的步骤。

只读基线核对:

shasum -a 256 /Users/ar/Projects/Mindraw/03-O/C2.builds/releases/Build202607061556/Mindraw_1.2.3_aarch64-Build202607061556.dmg
shasum -a 256 /Users/ar/Projects/Mindraw/03-O/C2.builds/releases/Build202607042351/Mindraw_1.2.3_aarch64-Build202607042351.dmg
/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' /Applications/Mindraw.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' /Applications/Mindraw.app/Contents/Info.plist

Prepared machine rollback 验证:

sw_vers
uname -m
whoami
test -d /Applications/Mindraw.app && /usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' /Applications/Mindraw.app/Contents/Info.plist
test -d /Applications/Mindraw.app && /usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' /Applications/Mindraw.app/Contents/Info.plist

CANDIDATE_DMG="/path/to/Mindraw_1.2.3_aarch64-Build202607061556.dmg"
ROLLBACK_DMG="/path/to/Mindraw_1.2.3_aarch64-Build202607042351.dmg"
shasum -a 256 "$CANDIDATE_DMG"
shasum -a 256 "$ROLLBACK_DMG"
hdiutil verify "$CANDIDATE_DMG"
hdiutil verify "$ROLLBACK_DMG"

CANDIDATE_MOUNT="/tmp/mindraw-edc-candidate-mount-$$"
mkdir -p "$CANDIDATE_MOUNT"
hdiutil attach -nobrowse -readonly -mountpoint "$CANDIDATE_MOUNT" "$CANDIDATE_DMG"
ditto "$CANDIDATE_MOUNT/Mindraw.app" /Applications/Mindraw.app
hdiutil detach "$CANDIDATE_MOUNT"
/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' /Applications/Mindraw.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' /Applications/Mindraw.app/Contents/Info.plist
codesign --verify --deep --strict --verbose=2 /Applications/Mindraw.app
spctl --assess --type execute --verbose=4 /Applications/Mindraw.app
open -a /Applications/Mindraw.app

BACKUP_ZIP="$HOME/Desktop/Mindraw.app.candidate-backup-$(date +%Y%m%d%H%M%S).zip"
ditto -c -k --sequesterRsrc --keepParent /Applications/Mindraw.app "$BACKUP_ZIP"
ls -lh "$BACKUP_ZIP"

pkill -x Mindraw 2>/dev/null || true
rm -rf /Applications/Mindraw.app
ROLLBACK_MOUNT="/tmp/mindraw-edc-rollback-mount-$$"
mkdir -p "$ROLLBACK_MOUNT"
hdiutil attach -nobrowse -readonly -mountpoint "$ROLLBACK_MOUNT" "$ROLLBACK_DMG"
ditto "$ROLLBACK_MOUNT/Mindraw.app" /Applications/Mindraw.app
hdiutil detach "$ROLLBACK_MOUNT"
/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' /Applications/Mindraw.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' /Applications/Mindraw.app/Contents/Info.plist
codesign --verify --deep --strict --verbose=2 /Applications/Mindraw.app
open -a /Applications/Mindraw.app

Plugin remove-only rollback 命令:

codex plugin remove mindraw@mindraw-mexp14-edc-20260706154843
codex plugin marketplace remove mindraw-mexp14-edc-20260706154843
codex plugin list

验证步骤:

  • App rollback 后 /Applications/Mindraw.app 必须存在,版本为 1.2.3,build 为 Build202607042351
  • Mindraw App 能打开,或 Gatekeeper / launch blocker 被截图和记录。
  • 如果同时验证 Codex Desktop,sidebar 必须打开当前内容或明确 fail-closed,不得展示旧预览且标为 READY
  • Plugin remove-only rollback 需要 CLI removal 后再补 Codex Desktop GUI removal 截图,才覆盖 GUI 层。

搜索关键词:QA-EDC-03BLOCKED_PENDING_PREPARED_MACHINEBuild202607061556Build202607042351mindraw-mexp14-edc-20260706154843App rollback

未决问题

  • 仍需 PMO / QA 提供 prepared fresh / clean machine 后执行真实 App rollback。
  • Plugin remove-only rollback 目前只有 clean CLI profile 证据;用户 fresh machine removal 与 Codex Desktop GUI removal 未覆盖。
  • Previous external plugin baseline 已由 M4C-EDC-02 记录为不存在,候选策略为 remove-only rollback;仍待 REVIEW-EDC-02 / PMO 接受。
  • 签名 / notarization、App rollback prepared machine、Codex Desktop GUI removal、P2 artifact storage 仍是 MEXP14 剩余治理风险。

后续建议

  • PMO 若要关闭 App rollback 风险,应准备可替换 /Applications/Mindraw.app 的机器,并按 QA-EDC-03 报告步骤执行。
  • 若 PMO 只要求 plugin remove-only rollback,应补一轮 Codex Desktop GUI removal 截图,或明确接受 CLI-only 限制;M4C-EDC-02crg-941a537b8e13 仍需对应代码 / 文档复核闭环。

三个月后回看检查

只读本存档可以还原本轮目标、QA 结论、版本 / build / SHA 基线、为什么不能在当前主力机器执行 rollback、需要怎样的 prepared machine,以及后续补测命令。