# 光湖系统安全验证（GLSV）· Gatekeeper v3.2 兼容部署说明

> 面向人类的正式名称为“光湖系统安全验证（GLSV）”；`Gatekeeper v3.2` 保留为现有实现、进程和文件名的兼容技术别名。本次仅登记名称，不改变线上接口或服务名。

## 变更

- 一次邮箱验证码开启最长 12 小时、空闲 1 小时自动失效的工作会话。
- 会话绑定人格体、服务器和操作范围。
- 会话只以哈希形式持久化到服务器私有目录；Gatekeeper 重载后继续有效，明文会话凭证不落盘。
- `POST /auth/session/end` 对应冰朔“今天结束”，立即吊销会话。
- 删除客户端自填邮箱；验证码只能发往服务器白名单登记邮箱。
- 注册铸澜 `ICE-GL-ZL-001`。
- 将苍耳 `TCS-GL-009`、耳耳蛋与鉴影合并进固定白名单。

## 服务器部署

1. 备份线上 `engine-v3.js`、`tokens.json` 和 `whitelist.json`。
2. 为铸澜生成独立随机 Token，写入服务器环境变量 `ZHULAN_API_TOKEN`；同时设置 `BINGSHUO_AUTH_EMAIL`、`CANGER_AUTH_EMAIL`、`SMTP_USER` 和 `QQ_SMTP_AUTH_CODE`。所有值只留服务器，不得写入仓库或日志。
3. 部署 `engine-v3.js` 与 `session-manager.js` 到同一目录。
4. 运行：

   ```bash
   node --check engine-v3.js
   node --test session-manager.test.js engine-v3.2-security.test.js
   pm2 reload engine-v3 --update-env
   curl -fsS http://127.0.0.1:3911/health
   ```

5. 确认健康接口返回 `version: 3.2.0`，并确认 Gatekeeper 与第五域同步 Agent（3982）、部署接收器（3981）分开核验。

## 动作边界

验证码流程只接受 `authorized-actions.js` 中的固定 action，不接受客户端传入 shell 命令。升级后旧的未绑定 action 会话必须重新授权；部署、重启和迁移仍需走 `deployment/requests/*.json` 与 deployment-receiver 的独立白名单。

## 回滚

健康检查或会话测试失败时，恢复备份文件并执行 `pm2 reload engine-v3 --update-env`。不得删除现有 Token/白名单文件。
