---
date: 2026-05-10
type: ERR
scope: agent-pool / pre-push-hook
slot: 2 (feature/pool-pin-codeworkspace)
status: 沉淀，未修复
---

# 新 slot 第一次 git push 撞 pre-push hook 缺 testing/ts-node

## 现象

```
$ git push -u origin feature/pool-pin-codeworkspace
pre-push: 未找到 testing/node_modules/.bin/ts-node，请先运行: cd testing && npm install
error: failed to push some refs to ...
```

## 根因

`pool-init` 调用 `setup-worktree.sh` 创建 slot 时，只装了 `backend/` 和 `frontend/`
的 deps，**没装 `testing/`**。但 pre-push hook 跑的是 `testing/scripts/contract-check.ts`
等 ts-node 脚本（commit `2316db3a fix(hooks): pre-commit/pre-push 改用本地 ts-node`
之后明确依赖 `testing/node_modules/.bin/ts-node`）。

结果：每个新 slot 首次 push 都会撞这个错。本 session（slot-2）撞到。slot-1 / slot-3
之前没撞过是因为它们一直 free 没 push 过任务分支。

## 临时修复（每个新 slot 各跑一次）

```bash
cd <slot-dir>/testing && npm install
```

约 3 秒装完 324 包。装完 push 顺利通过。

## 永久修复（待做）

`scripts/dev/setup-worktree.sh` 应该在装 `backend/` `frontend/` deps 之后**也跑**
`cd testing && npm install`。或 `pool-init` 多加一步显式装。这样 slot 一开就完整、
首次 push 不卡。

可能的实现：在 setup-worktree.sh 装依赖那一段加一个 `(cd testing && npm install)`，
也按现有的失败容错处理（`|| true` 之类）。

## 触发条件

- 新建/重建 slot 后第一次 push（commit 不撞，pre-commit hook 不依赖 testing 的 ts-node）
- 同样适用于 `setup-worktree.sh` 创建的命名 worktree（如果以后有人在那里 push）

## 预防

- pool-init 加自动装 testing deps（最优）
- 或在 setup-worktree.sh README 里明示首次 push 前要 `cd testing && npm install`
- 或写入项目验收门禁（setup-project SKILL 第 7 步）

## 关联

- `2316db3a fix(hooks): pre-commit/pre-push 改用本地 ts-node，杜绝 npx 偷拉 TS 7 炸 TS5107`
  —— 改用本地 ts-node 是这个 hook 依赖 testing 的 deps 的根因
- 当前 PR `feature/pool-pin-codeworkspace`（撞这个错的 session 同时也是改 agent-pool 的 session）
