# 审计 — 2026-06-07 ce-code-review 跟进 + BL-07 探测

## 范围

本批次 `git diff HEAD~1` 含 **BL-06**（已提交）与 **ce-code-review 跟进**（工作区）。BL-06 细读见 `2026-06-07-bl06-agent-per-server-key.md`。

| 文件 | 变更要点 |
|------|----------|
| `server/api/servers.py` | BL-06：安装链路无 global key 回退 |
| `server/application/services/script_service.py` | BL-06：回调仅 per-server key |
| `tests/test_agent_per_server_key.py` | BL-06：认证单元测试 |
| `tests/load_test.py` | BL-06：文档注释 |
| `tests/quick_load.py` | BL-06：文档注释 |
| `web/agent/agent.py` | 心跳 401 退出循环（对齐 BL-06 中心端） |
| `server/api/install.py` | 路由级 lock Depends；归档先于写 lock；归档失败 fail-closed |
| `.cursor/rules/nexus-security.mdc` | Agent 认证矩阵：仅 per-server key |
| `scripts/security_probe_external.sh` | curl `shift` 修复；`resolve_ws_python`；WS 403 → PASS |
| `docs/changelog/2026-06-07-deploy-ssh-secrets.md` | 本机 SSH secrets 文档 |
| `docs/changelog/2026-06-07-probe-curl-parse-fix.md` | 探测脚本 curl/WS 修复 |
| `docs/reports/2026-06-07-bl07-deploy-verification.md` | 生产部署验证报告 |
| `tests/test_install_locked_404.py` | create-admin / test-credentials 锁定 404；router Depends 断言 |
| `tests/test_security_unit.py` | `_reject_if_locked` 期望 404 |
| `deploy/install-nx-cli.sh` | CRLF → LF（门控 pre-flight） |
| `deploy/update.sh` | CRLF → LF |
| `deploy/gate_log.jsonl` | 门控运行记录（自动生成） |
| `deploy/deploy-production.sh` | source `nexus-1panel.secrets.sh` 加载 SSH |
| `deploy/nexus-1panel.secrets.sh.example` | SSH 变量占位 |
| `docs/project/linux-dev-paths.md` | 本机 SSH/部署 SSOT |

## Step 3 规则扫描

| H | 规则 | 结论 |
|---|------|------|
| H1 | 边端 agent 401 不重试 | FIXED `agent.py` 401 → return |
| H2 | 锁定 install 统一 404 | FIXED `install.py` router `Depends(_raise_not_found_if_locked)` |
| H3 | 归档失败仍 lock 成功 | FIXED 归档先于 lock；OSError → RuntimeError → 500 |
| H4 | 安全 SSOT 与 BL-06 漂移 | FIXED `nexus-security.mdc` |
| H5 | 外网 WS 403 误判反代 | FIXED 探测脚本 PASS + 报告澄清 |
| H6 | 探测 curl `shift 3` 误报 FAIL | FIXED `probe()` shift 2/3 + 独立 code 文件 |
| H7 | WS 探测 SKIP（无 websockets） | FIXED `resolve_ws_python()` 自动 venv |

## Closure

| H | 判定 | 依据 |
|---|------|------|
| H1 | FIXED | `web/agent/agent.py` `elif resp.status_code == 401: return` |
| H2 | FIXED | `install.py` `APIRouter(..., dependencies=[Depends(...)])` |
| H3 | FIXED | `_finalize_install_lock` 先 `_archive_install_wizard_html` |
| H4 | FIXED | `nexus-security.mdc` 认证矩阵 |
| H5 | FIXED | `security_probe_external.sh` WS 403 PASS |
| H6 | FIXED | `probe()` `shift 2` + `code_file` |
| H7 | FIXED | `resolve_ws_python()` |

## 验证

| 项 | 结果 |
|----|------|
| `bash scripts/local_verify.sh` | 全绿（smoke 47 + test_api 26/26 + ruff） |
| `pytest tests/test_install_locked_404.py` | 11 passed |
| `deploy/pre_deploy_check.sh` | 待本审计入库后重跑 |

## DoD

- [x] 无静默吞错（归档失败 error + 500）
- [x] changelog `2026-06-07-code-review-followups.md`
- [x] 本地 L2b `local_verify` 证据
- [x] 涉及文件列入本审计范围表
