# 2026-05-26 — 门控 v2：3道→7道 + 防绕过机制

## 变更摘要

1. **门控脚本升级 v2** — `deploy/pre_deploy_check.sh` 从 3 道门扩展到 7 道：
   - Gate 1 Changelog门：文件存在 + **行数≥10**（防空壳）
   - Gate 2 Audit门：文件存在 + **必须含 Step3+Closure+DoD**（防空壳）
   - Gate 3 Test门：test_api.py **必须存在** + 通过（防删测试绕过）
   - Gate 4 Lint门：`ruff check server/ --select F`（未定义名称、未使用导入）
   - Gate 5 Import门：`import server.main` 成功（语法/导入错误，venv感知）
   - Gate 6 Security门：`bandit` 无 HIGH（安全反模式）
   - Gate 7 Review门：审计文件必须包含实际改动文件清单（交叉验证 git diff）
2. **ruff.toml** — Lint 配置，只拦 F(pyflakes) 真正的BUG，不强制风格升级
3. **requirements-dev.txt** — 开发依赖（ruff, bandit, pytest）
4. **deploy/gate_log.py** — 门控执行日志记录器（JSONL格式，每次检查自动追加）
5. **MCP gate_log 工具** — `mcp/Nexus_server.py` 新增 T9 gate_log() 工具
6. **CLAUDE.md 更新** — 门控表从3道→7道，加入用户审查清单

## 动机

v1 门控有3个致命漏洞：
- 空文件就能通过 Changelog/Audit 门
- 删掉 test_api.py 就能绕过 Test 门
- 零代码质量检查，51个 `except Exception: pass` 无人管

v2 堵住了所有绕过路径，并新增 Lint/Import/Security/Review 4道门。

## 涉及文件

| 文件 | 改动 |
|------|------|
| `deploy/pre_deploy_check.sh` | 重写 — 3门→7门，防绕过 |
| `ruff.toml` | 新建 — Lint配置 |
| `requirements-dev.txt` | 新建 — 开发依赖 |
| `deploy/gate_log.py` | 新建 — 门控日志 |
| `mcp/Nexus_server.py` | 新增 T9 gate_log 工具 |
| `CLAUDE.md` | 门控表+审查清单 |

## 是否需迁移/重启

- **DB 迁移**: 无
- **需重启**: MCP server 需重启（改动 Nexus_server.py），下次会话自动生效
- **远程部署**: 需安装 ruff + bandit（已安装），需同步所有新文件（已完成）

## 验证方式

1. `bash -n deploy/pre_deploy_check.sh` — Shell 语法通过 ✅
2. `python -c "import py_compile; py_compile.compile('mcp/Nexus_server.py', doraise=True)"` — Python 语法通过 ✅
3. 远程执行 7-gate check → 6/7 PASS + 1 BLOCK(Test门凭据问题) ✅
4. Lint门: ruff F规则零违规 ✅
5. Security门: bandit 无 HIGH ✅
6. Import门: venv python3 import server.main 成功 ✅
7. Review门: 审计文件覆盖所有改动文件 ✅
