# M4C-GH-02 安装发现修复 ## 用户目标 接手 `M4C-GH-02-INSTALL-DISCOVERY-FIX`,修复公开候选安装入口的确定性失败:`install-local.sh` 能添加 marketplace,但 `codex plugin add mindraw@mindraw4agent` 找不到 plugin `mindraw`。要求隔离 HOME/CODEX_HOME 复现、最小修复、重建候选 / manifest / SHA,生成新 Review Request / Gate,并回写统一台账和 PMO_INBOX。 ## 已完成事项 - 在隔离环境 `/tmp/m4c-gh-02-repro-20260712-a` 复现 GH-01 候选失败,日志保存到 `P2.mindrawforcodex/02-P/M4C-GitHubOpenSource/evidence-m4c-gh-02-20260712/`。 - 新建隔离公开候选: - `/Users/ar/Projects/Mindraw/P2.mindrawforcodex/03-O/C2.builds/M4C-GitHubOpenSource/mindraw4agent-0.1.3-public-source-candidate-GH20260712135055-M4C-GH-02/` - 修复 public candidate marketplace layout: - public repo root 仍作为 Codex local marketplace root。 - `.agents/plugins/marketplace.json` 中 `mindraw` plugin source 改为 `./plugins/mindraw`。 - plugin runtime 移入 `source/plugins/mindraw/`。 - root `package.json` / root `scripts/doctor.mjs` 改为委托 nested plugin root。 - 在隔离环境 `/tmp/m4c-gh-02-fixed-20260712-a` 验证: - `install-local.sh` exit `0`。 - `codex plugin list` 和 restart-equivalent 新进程均显示 `mindraw@mindraw4agent installed, enabled`。 - `uninstall-local.sh` exit `0`,后续 plugin list 显示 `No marketplace plugins found`。 - 生成新 candidate manifest、tarball、SHA、Coder 报告和 Review Request。 - 回写根 `INDEX.md`、P2 `INDEX.md`、P2 `03-O/C1.source/CODEGRAPH.md`、统一台账 `02-P/plan-progress.markdown` 和本机 `02-P/PMO_INBOX.md`。 ## 核心事实 / 变更快照 - 变更对象:M4C GitHub public source candidate install discovery layout。 - 变更前:GH-01 candidate root 直接承载 plugin runtime;Codex CLI 能添加 marketplace,但 `codex plugin add mindraw@mindraw4agent` 找不到 `mindraw`。 - 变更后:GH-02 candidate root 承载 marketplace,plugin runtime 位于 `source/plugins/mindraw/`,marketplace source path 为 `./plugins/mindraw`。 - Review Gate:`crg-981b219e8011`,状态为 requested,尚未复审通过。 - Candidate tarball SHA256:`f90bbfa972b9b1e00fa1dde96804b3353ba01994ad043a8690ad21666f35348b`。 - Source tree hash manifest SHA256:`5f5cb27aefecfe52733b55767ba5fdf5e88e831f3cf75c60c647f233a6729ace`。 - SkillSpector: - skill root `SAFE` / score `0` - plugin root `CAUTION` / score `29` - repo root `CAUTION` / score `32` - Loopback smoke:当前 worker sandbox 仍禁止 `127.0.0.1` listen,最小 control 和五项 smoke 都以 `EPERM` 失败;未声明 smoke PASS。 - 范围边界:未修改 Mindraw App、DMG、installed cache、`/Users/ar/plugins/mindraw`、canonical plugin source、GitHub remote 或 target-link sidebar scope。 ## 文件变更 - 新增候选与证据: - `P2.mindrawforcodex/03-O/C2.builds/M4C-GitHubOpenSource/mindraw4agent-0.1.3-public-source-candidate-GH20260712135055-M4C-GH-02/` - 新增过程文档: - `P2.mindrawforcodex/02-P/M4C-GitHubOpenSource/m4c-gh-02-install-discovery-fix-check-20260712.md` - `P2.mindrawforcodex/02-P/M4C-GitHubOpenSource/m4c-gh-02-install-discovery-fix-check-20260712.json` - `P2.mindrawforcodex/02-P/M4C-GitHubOpenSource/m4c-gh-02-review-request-crg-981b219e8011.md` - 更新索引和台账: - `INDEX.md` - `P2.mindrawforcodex/INDEX.md` - `P2.mindrawforcodex/03-O/C1.source/CODEGRAPH.md` - `02-P/plan-progress.markdown` - `02-P/PMO_INBOX.md` ## 可复用命令 / Runbook 用途:在干净 HOME/CODEX_HOME 中复核 `mindraw4agent` public source candidate 的 local marketplace 安装发现链路。 前置条件:从 candidate `source/` 目录执行;替换路径为当前候选根。 ```bash cd /Users/ar/Projects/Mindraw/P2.mindrawforcodex/03-O/C2.builds/M4C-GitHubOpenSource/mindraw4agent-0.1.3-public-source-candidate-GH20260712135055-M4C-GH-02/source mkdir -p /tmp/m4c-gh-02-fixed-20260712-a/home /tmp/m4c-gh-02-fixed-20260712-a/codex-home HOME=/tmp/m4c-gh-02-fixed-20260712-a/home CODEX_HOME=/tmp/m4c-gh-02-fixed-20260712-a/codex-home ./scripts/install-local.sh HOME=/tmp/m4c-gh-02-fixed-20260712-a/home CODEX_HOME=/tmp/m4c-gh-02-fixed-20260712-a/codex-home codex plugin list env -i PATH="$PATH" HOME=/tmp/m4c-gh-02-fixed-20260712-a/home CODEX_HOME=/tmp/m4c-gh-02-fixed-20260712-a/codex-home SHELL=/bin/zsh codex plugin list HOME=/tmp/m4c-gh-02-fixed-20260712-a/home CODEX_HOME=/tmp/m4c-gh-02-fixed-20260712-a/codex-home ./scripts/uninstall-local.sh HOME=/tmp/m4c-gh-02-fixed-20260712-a/home CODEX_HOME=/tmp/m4c-gh-02-fixed-20260712-a/codex-home codex plugin list ``` 静态验证: ```bash npm run check PYTHONPATH=/Users/ar/.cache/uv/archive-v0/PteCx2P-8sAvyZhLnTSXW python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/mindraw node scripts/doctor.mjs --json node plugins/mindraw/scripts/doctor.mjs --json skillspector scan plugins/mindraw/skills/mindraw-open-canvas --no-llm --format json --output ../evidence/skillspector-skill.json skillspector scan plugins/mindraw --no-llm --format json --output ../evidence/skillspector-plugin.json skillspector scan . --no-llm --format json --output ../evidence/skillspector-repo-root.json shasum -a 256 -c ../SHA256SUMS ``` 端口类 smoke 在允许 loopback listen 的环境中执行: ```bash npm run smoke npm run smoke:http npm run smoke:lifecycle npm run smoke:mcp npm run smoke:sidebar ``` 清理 / 恢复:隔离环境只在 `/tmp/m4c-gh-02-fixed-20260712-a` 下写入;验证结束后可删除该临时目录,不影响正式 Codex HOME。 搜索关键词:`M4C-GH-02-INSTALL-DISCOVERY-FIX`、`mindraw@mindraw4agent`、`plugins/mindraw`、`crg-981b219e8011`、`GH20260712135055`。 ## 未决问题 - `crg-981b219e8011` 需要代码审核员复核后才能进入 public QA 或 GitHub publication / prerelease 决策。 - 当前 worker 环境 loopback bind `EPERM`,如 PMO/Reviewer 要求 post-layout smoke,需要派允许本地端口监听的 alternate smoke。 ## 后续建议 1. PMO 派发 `REVIEW-M4C-GH-02` 消费 Review Gate `crg-981b219e8011`。 2. Review 后在允许 loopback 的环境复跑 smoke / HTTP / lifecycle / MCP / sidebar。 3. 复审和必要 smoke 通过后再派公开候选 QA;在此之前不得创建/推送 GitHub 或公开发布。