# [ERR-20260430-001] tsconfig `ignoreDeprecations` 在不同 ts-node 版本里要求互斥的值

## 现象

`testing/scripts/tsconfig.json` 加 `"ignoreDeprecations": "6.0"` 静默 pre-commit hook 的 `npx ts-node` TS5107 → 同时让 CI 的 `testing/node_modules/.bin/ts-node` (v10.9.2 + TS 5.9.3) 报 **TS5103: Invalid value for '--ignoreDeprecations'**。两个 ts-node 互斥：

| 调用方 | 版本 | 接受值 |
|---|---|---|
| pre-commit hook 用 `npx ts-node`（实测：行为不稳定） | bleeding-edge（带 TS 6.x 时） | 偶尔要求 `"6.0"`（TS5107） |
| CI / 本地 `testing/node_modules/.bin/ts-node` | v10.9.2 + TS 5.9.3 | 不接受 `"6.0"`，TS5103 |

git 历史里这场拉锯已经反复发生过 3 次（commits 3a276781 / 93a49c79 / c18e8a0e），每次"修一边、断另一边"。

## 实测稳态解（2026-04-30）

**完全不写 `ignoreDeprecations` 这一行**：

- 当前所有 ts-node 路径都跑得通（`testing/scripts/tsconfig.json` 和 `testing/tsconfig.json` 都不再写）
- 不写 = 不会被任一版本拒绝
- TS 真升 7.0 移除 `node10` 才需要重新处理（届时直接迁 `nodenext`）

## 复用建议

- **改 `ignoreDeprecations` 之前先在两个 ts-node 入口都试一遍**：
  ```bash
  # CI 路径
  (cd testing && node_modules/.bin/ts-node --transpile-only scripts/contract-check.ts) | head
  # pre-commit 路径
  npx --yes ts-node --transpile-only --project testing/scripts/tsconfig.json testing/scripts/assert-access-check.ts --staged
  ```
- 跑 git log 看历史拉锯：`git log --oneline -p -- testing/tsconfig.json | grep -B1 ignoreDeprecations`
- 报错信息里出现的版本号是「**这个 ts-node 该接受的值**」，不一定是另一个 ts-node 该接受的——两边对不上时，**移除整行**通常比塞特定值更稳
- 如果未来必须写 `ignoreDeprecations`，把 `npx ts-node` 也换成 `testing/node_modules/.bin/ts-node` 再决定值——锁版本就锁需求

## 上下文

- PR #193（bugfix/local-toolchain-tsconfig-and-module-sql）
- 关联 issue #176（pre-commit hook ts-node TS5107 阻塞 service.ts 本地 commit）
- 历史 commits: 3a276781, 93a49c79, c18e8a0e（同一拉锯反复发生 3 次）
