# R8 任务报告

## 交付结果

- 创建并关闭 [SELFMEDIA #62](https://github.com/pikainc/selfmedia/issues/62)。
- [SELFMEDIA PR #63](https://github.com/pikainc/selfmedia/pull/63) 已合并到 master，merge commit 为 9fb96215c15bc38e700922a328181a1680f1a707。
- 新增唯一 CLI 子命令 verify web，并提供 package 脚本 bun run verify:web。
- 现有 CLI 主体迁入 scripts/src/cli-main.ts，scripts/selfmedia-cli.ts 保持为 18 行的无第三方依赖自举入口。
- 依赖复用身份由根目录或 web 目录的 package.json 与 bun.lock 哈希生成；身份一致时复用 node_modules，变化时执行 bun install --frozen-lockfile。
- 同一命令依次执行 Web 测试、Web 生产构建与 git diff --check HEAD，按 JSONL 输出阶段、状态、耗时和紧凑失败摘要。

## 验证证据

- 全新 worktree 的根目录和 web/node_modules 均不存在。
- 第一次仅调用 bun scripts/selfmedia-cli.ts verify web：
  - 根目录依赖 installed，506 ms；
  - Web 依赖 installed，426 ms；
  - Web 测试 passed，241 ms；
  - 生产构建 passed，17024 ms；
  - 差异格式检查 passed，19 ms；
  - 总耗时 18239 ms。
- 第二次仅调用同一命令：
  - 根目录依赖 reused；
  - Web 依赖 reused；
  - Web 测试、生产构建和差异格式检查全部通过；
  - 没有重复安装依赖。
- 暂存变更后使用 bun run verify:web 验证失败契约，命令准确发现 scripts/src/cli-main.ts 末尾多余空行并返回 exit 1；修正后再次运行全部通过。
- 原有 CLI help 和 check 入口仍可运行。
- 仓库全量 typecheck 仍报告既有 web-auth.e2e.test.ts:105 unknown 类型错误；该文件不在本次改动范围，未将既有问题扩大为新门禁。
- 未手工触发 PipelineRun、Argo、rollout 或 release 发布。

## 调用缩减

- 改进前需要依赖存在性探测、根目录安装、Web 安装、Web 测试、生产构建和 diff 检查等多次调用，并可能在首次失败后重复。
- 改进后源码 Web 验证只需一次 bun run verify:web；首次自动准备依赖，后续自动复用。
