来源:PR #2 dogfood 跑了第一次远程评审 workflow,验证机械全部工作,但 verdict=fail —— 揭示 两个非本 PR 引入的预存问题。
Gap 1: fixtures/repro-specs/hook-moment-block.ts 是 Windows-only + 手工预置
现象:Ubuntu CI 上跑 tsx scripts/verify/repro-cli.ts fixtures/repro-specs/hook-moment-block.ts --no-gif 输出 verdict=fail。
根因:spec(第 22 行)显式设 baseline.ref = "HEAD",设计成「同代码、不同 env(USERPROFILE/HOME)」数据驱动差异 —— 前置依赖是 $TA_DEMO_STAGE/home-empty 与 $TA_DEMO_STAGE/home-loaded 两份知识库目录已备好(见 docs/acceptance/2026-05-14-hook-moment-block/recording/README.md)。Ubuntu runner 上既没那俩目录,也没 TA_DEMO_STAGE 环境变量,spec 默认值还是个 Windows 路径(C:/Users/tianhaoxuan/ta-demo-stage)。
修复选项(择一):
- a. spec 自报
ci: skip:在 ReproSpec 加可选 ci?: { skip?: boolean; reason?: string },pr-review.yml 的 list-specs job 读 spec 字段过滤掉 ci.skip === true 的;给 hook-moment-block 标 ci: { skip: true, reason: "需 demo-stage 目录预置" }
- b. CI 自己 stage 目录:在
pr-review.yml 的 repro job 跑 repro 前先跑一个 setup step 把两份知识库目录造出来(估计 30+ 行 yaml,且要把 home-loaded 的具体内容硬编码进去 —— 很脆)
- c. 把 spec 改成纯 code-diff 形态:让 baseline.ref 真指 main 之前的 commit(回到 hook 还没实现的代码),不再依赖 env 切知识库;现有 hook-moment-block 改成
docs/ 下的纯文档样板,不进 fixtures/repro-specs/ 自动发现
推荐 a —— 实现 5 行代码,语义清楚,对未来 spec 是合理的扩展点。
Gap 2: Matrix baseline 上的预存 pnpm test 失败(本地 Windows 21 个)
现象:本地 Windows 跑 pnpm test 报 21 failed / 2063 passed / 21 skipped。失败集中在:
packages/cli/src/__tests__/install-rollback.test.ts(多个 case 期待 result.status === 'ok',实际 'error')
packages/cli/src/__tests__/session-start-input-shape.test.ts(期待 exit code 0,实际 1)
packages/cli/src/__tests__/symphony.test.ts(SymphonyError: after_create hook failed)
根因:这 3 个文件均不由 PR #2 改动(git diff --stat main..PR2 -- packages/cli/ 为空)。属 Matrix baseline 自身的 known-bad-on-Windows 测试。Ubuntu CI 上具体多少个 fail 还没拉日志统计(zip 里 tests/4_pnpm test.txt 181 KB,值得做一次 grep 看是不是同一批)。
修复选项:
- a. 一个个修:逐个失败查根因 → 改实现 → 跑绿(可能要花一周)
- b. 临时 xfail:在这 3 个 test 文件上挂
.skip 或 describe.skipIf(process.platform==='win32'),留 TODO 注释带 issue 链接
- c. 不动这 21 个:接受 review/verdict 长期 fail tests-and-merge-clean 这条,改
pr-review.yml 让 tests job 允许已知失败白名单
推荐 b(对未来工作影响最小),并把这 3 个文件挑出来再开 3 个独立的 fix issue —— 不一锅烩。
优先级
- Gap 1 阻碍任何 repro spec 在 CI 上能 pass(目前唯一 spec 就 hook-moment-block);若不修,review/verdict 永远 fail 的 repro-pass 标准
- Gap 2 阻碍review/verdict 拿到 pass(tests-and-merge-clean 永远 fail);但人手 squash merge 不受影响(
docs/POSTPR.md 的 Visual proof of work 路径专门为此设)
短期建议:先做 Gap 1.a(5 行代码),让 repro 路径绿;Gap 2 留作中期治理。
关联
🤖 由 Claude Code 在 PR #2 dogfood 验证后自动开
来源:PR #2 dogfood 跑了第一次远程评审 workflow,验证机械全部工作,但 verdict=fail —— 揭示 两个非本 PR 引入的预存问题。
Gap 1:
fixtures/repro-specs/hook-moment-block.ts是 Windows-only + 手工预置现象:Ubuntu CI 上跑
tsx scripts/verify/repro-cli.ts fixtures/repro-specs/hook-moment-block.ts --no-gif输出verdict=fail。根因:spec(第 22 行)显式设
baseline.ref = "HEAD",设计成「同代码、不同 env(USERPROFILE/HOME)」数据驱动差异 —— 前置依赖是$TA_DEMO_STAGE/home-empty与$TA_DEMO_STAGE/home-loaded两份知识库目录已备好(见docs/acceptance/2026-05-14-hook-moment-block/recording/README.md)。Ubuntu runner 上既没那俩目录,也没TA_DEMO_STAGE环境变量,spec 默认值还是个 Windows 路径(C:/Users/tianhaoxuan/ta-demo-stage)。修复选项(择一):
ci: skip:在ReproSpec加可选ci?: { skip?: boolean; reason?: string },pr-review.yml的list-specsjob 读 spec 字段过滤掉ci.skip === true的;给 hook-moment-block 标ci: { skip: true, reason: "需 demo-stage 目录预置" }pr-review.yml的reprojob 跑 repro 前先跑一个 setup step 把两份知识库目录造出来(估计 30+ 行 yaml,且要把home-loaded的具体内容硬编码进去 —— 很脆)docs/下的纯文档样板,不进fixtures/repro-specs/自动发现推荐 a —— 实现 5 行代码,语义清楚,对未来 spec 是合理的扩展点。
Gap 2: Matrix baseline 上的预存 pnpm test 失败(本地 Windows 21 个)
现象:本地 Windows 跑
pnpm test报 21 failed / 2063 passed / 21 skipped。失败集中在:packages/cli/src/__tests__/install-rollback.test.ts(多个 case 期待result.status === 'ok',实际'error')packages/cli/src/__tests__/session-start-input-shape.test.ts(期待 exit code 0,实际 1)packages/cli/src/__tests__/symphony.test.ts(SymphonyError: after_create hook failed)根因:这 3 个文件均不由 PR #2 改动(
git diff --stat main..PR2 -- packages/cli/为空)。属 Matrix baseline 自身的 known-bad-on-Windows 测试。Ubuntu CI 上具体多少个 fail 还没拉日志统计(zip 里tests/4_pnpm test.txt181 KB,值得做一次 grep 看是不是同一批)。修复选项:
.skip或describe.skipIf(process.platform==='win32'),留 TODO 注释带 issue 链接pr-review.yml让 tests job 允许已知失败白名单推荐 b(对未来工作影响最小),并把这 3 个文件挑出来再开 3 个独立的 fix issue —— 不一锅烩。
优先级
docs/POSTPR.md的 Visual proof of work 路径专门为此设)短期建议:先做 Gap 1.a(5 行代码),让 repro 路径绿;Gap 2 留作中期治理。
关联
docs/plans/2026-05-15-remote-review.md、docs/plans/2026-05-14-verification-tooling.md🤖 由 Claude Code 在 PR #2 dogfood 验证后自动开