## 部署概述 | 项目 | 内容 | |------|------| | **目标** | 核对 plan-review 1.4.1 落到安装缓存后,新增的 `scripts/lib/`、`scripts/lib/engines/`、`scripts/assets/` 三级子目录确实被带过去 | | **范围** | 本机 `~/.claude/plugins/cache/cc-plugins/plan-review/1.4.1/` | | **预计影响** | 纯核对,无变更 | ## 为什么需要这一步 #112 的拆分(#145 + #146)把单文件脚本变成了带两级子目录的结构: ``` scripts/plan-review.sh scripts/lib/{common,plan-source,verdict,manifest}.sh scripts/lib/engines/{agy,claude,codex,rest}.sh scripts/assets/review-system-prompt.md ``` **如果安装机制没把这些子目录带过去,bootstrap 会 fail-open 静默跳过审阅**——216 个单测一个都抓不到,因为它们跑的是仓库工作区,路径永远存在。 这是这次重构唯一一个「单测结构性覆盖不到」的风险面。 ## 已有证据(推断,非实测) - `git archive HEAD` 解出的树含全部 9 个新文件(已验,说明它们确实进了 git,不是被 `.gitignore` 漏掉) - 从 `git archive` 解出的部署副本跑三引擎真实 e2e 全通(已验,说明 `BASH_SOURCE` 路径解析在部署布局下正确) - 缓存里 1.3.1 版本含 `tests/test_helper/common-setup.bash`(旁证:安装是**递归**拷贝子目录的,不是文件白名单) 三条加起来推断风险很低。但 `claude plugin update` 实际抓取那一步**没有实测**——核对时缓存最新只到 1.3.1,1.4.x 尚未同步。 ## 核对步骤 ### 阶段 1: 等 1.4.1 进缓存 1. [ ] 触发 marketplace 同步(正常使用中会自动发生,或显式 `claude plugin update`) 2. [ ] 确认缓存目录出现: ```bash ls ~/.claude/plugins/cache/cc-plugins/plan-review/ ``` ### 阶段 2: 核对文件树 1. [ ] 期望 9 个新文件全部存在: ```bash P=~/.claude/plugins/cache/cc-plugins/plan-review/1.4.1 find $P/scripts -type f | sed "s|$P/||" | sort # 期望含: # scripts/assets/review-system-prompt.md # scripts/lib/common.sh # scripts/lib/manifest.sh # scripts/lib/plan-source.sh # scripts/lib/verdict.sh # scripts/lib/engines/agy.sh # scripts/lib/engines/claude.sh # scripts/lib/engines/codex.sh # scripts/lib/engines/rest.sh ``` 2. [ ] 计数核对:`find $P/scripts/lib $P/scripts/assets -type f | wc -l` 应为 `9` ### 阶段 3: 从缓存路径实跑 1. [ ] 直接用缓存里的脚本跑一次真实审阅(隔离状态目录,勿污染生产): ```bash REVIEW_COUNTER_DIR=/tmp/verify-state REVIEW_LOG_DIR=/tmp/verify-logs \ bash $P/scripts/plan-review.sh < <payload> ``` 2. [ ] 断言日志里出现 `verdict=`,而**不是** `[WARNING] lib file missing or empty` **判定**:若出现 `lib file missing or empty`,说明安装机制确实漏了子目录——那是需要立刻处理的分发缺陷(改打包方式,或退回单文件)。 ## 风险评估 | 风险 | 可能性 | 影响 | 缓解措施 | |------|--------|------|----------| | 安装漏子目录 → 审阅静默失效 | 低(1.3.1 已证递归拷贝) | 高(质量门禁静默关闭且无告警) | 本 issue 的阶段 3 实跑;fail-open 至少留了 `[WARNING]` 日志痕迹 | ## 部署后任务 - [ ] 核对通过则关闭本 issue,并在 plan-review 私有 internals 文档记一句「安装递归拷贝子目录,已实测」 - [ ] 核对失败则开 BUG issue,按分发缺陷处理
部署概述
scripts/lib/、scripts/lib/engines/、scripts/assets/三级子目录确实被带过去~/.claude/plugins/cache/cc-plugins/plan-review/1.4.1/为什么需要这一步
#112 的拆分(#145 + #146)把单文件脚本变成了带两级子目录的结构:
如果安装机制没把这些子目录带过去,bootstrap 会 fail-open 静默跳过审阅——216 个单测一个都抓不到,因为它们跑的是仓库工作区,路径永远存在。
这是这次重构唯一一个「单测结构性覆盖不到」的风险面。
已有证据(推断,非实测)
git archive HEAD解出的树含全部 9 个新文件(已验,说明它们确实进了 git,不是被.gitignore漏掉)git archive解出的部署副本跑三引擎真实 e2e 全通(已验,说明BASH_SOURCE路径解析在部署布局下正确)tests/test_helper/common-setup.bash(旁证:安装是递归拷贝子目录的,不是文件白名单)三条加起来推断风险很低。但
claude plugin update实际抓取那一步没有实测——核对时缓存最新只到 1.3.1,1.4.x 尚未同步。核对步骤
阶段 1: 等 1.4.1 进缓存
claude plugin update)ls ~/.claude/plugins/cache/cc-plugins/plan-review/阶段 2: 核对文件树
find $P/scripts/lib $P/scripts/assets -type f | wc -l应为9阶段 3: 从缓存路径实跑
verdict=,而不是[WARNING] lib file missing or empty判定:若出现
lib file missing or empty,说明安装机制确实漏了子目录——那是需要立刻处理的分发缺陷(改打包方式,或退回单文件)。风险评估
[WARNING]日志痕迹部署后任务