维护者:Ling(Lling0000)。本次不关闭认证、不降低安全扫描门槛,不把代码推送视为生产部署。
- Production Chat Regression 38386892383:17 个平台均在创建 session 时返回 401。旧版
tee掩盖退出状态;此前补上的 pipefail 正确暴露了这个已有故障。workflow 未传生产 Bearer token。 - Trustabl:三个 llms.txt 工具被标记动态 URL 与无超时,报告发送被标记无幂等。原 HTTP 客户端有 15 秒超时,但没有覆盖 DNS/多请求/重定向链的整个工具时限,也没有逐跳公网地址校验。
- public_fetch.py:15 秒共享总 deadline、公网地址解析和 IP 固定、TLS SNI/Host 保留、禁环境代理、逐跳重定向检查、1 MiB 流式响应上限、拒绝压缩回包。三个 llms.txt 工具及同文件抓取路径使用该 helper。
- email_report.py 和 持久化发送记录:按账号/项目/报告/收件人/语言/操作 key 原子领取发送。重复请求回放已发送结果;SMTP 不确定、取消和崩溃留下的 claim 不自动重发。dev 模拟不占真实发送记录;需要明确重发时使用新的
idempotency_key。幂等依据数据库记录,Message-ID 仅标识单封消息。 - 聊天回归脚本:从环境读取 Bearer token;缺凭据时零网络失败并输出 JSON;HTTP 错误、专家错配、无 done、流超时均保留非零失败。
- workflow:使用 repository secret
OPENCMO_WEB_TOKEN;验证固定生产 URL,防止 dispatch 将生产凭据送去其他主机;失败摘要/artifact 仍保留。
本次构建发现 GraphPage 与 KnowledgeMarkdown 的手动 vendor 分包形成循环。移除 graph/markdown 的手动分包,继续使用既有 lazy 路由及图表分包。完整生产构建通过,Rollup AST 检查全部静态依赖无环,首页初始链仍只有约 1.125 MB 的入口,不急载图谱/Markdown/图表。
- 全量后端:
PYTHONPATH=src python -m pytest tests/ -q,739 passed, 4 skipped(Python 3.14,306.38 秒)。 - 本次邮件/回归/网络工具相关:43 passed;额外新增组播地址拒绝回归后网络工具 22 passed;Ruff、actionlint、diff-check 通过。
- 修复提交
3918895的功能 CI:frontend 与 backend Python 3.11/3.12 均 success;Trustabl success。生产聊天回归需先配置生产 token,尚未实际重跑通过。
生产回归需要 GitHub repository secret OPENCMO_WEB_TOKEN,值对应运行实例的同名 token。应通过受控终端将值直接传入 gh secret set 的 stdin,不写入 Git、不打印、不粘贴到 workflow;workflow_call 调用方需显式传 secret 或使用 inherit。
本地网络/工具、邮件幂等与回归脚本测试使用 MockTransport、临时数据库与模拟 SMTP,不发送真实邮件或触达内容。Trustabl v0.1.13 本地复扫退出 0,剩余 36 low + 1 info,无 suppression、无门槛更改。扫描器未完整建模跨 helper 的保护,因此安全依据还包括实际防护代码和回归测试。
- 核对实际运行方式、源目录、端口、镜像/进程版本;保留当前容器/镜像或源码。
- 备份数据库、原文件目录和服务器配置,备份目录限制访问。
- 部署明确提交的前后端产物;保留
.env与数据,不以宽泛rsync --delete覆盖服务器目录。 - 验证数据库新增表兼容、进程存活、健康接口、页面资源及认证;通过后再执行必要的模型聊天回归。
- 若健康/认证失败,恢复旧源码或旧镜像;不得为通过验收临时关闭认证。
截至本地修复验证,生产 SSH 连接超时,尚未完成密钥同步和生产切换。网站可访问只说明当前服务可用,不能证明新版本已部署;后续实测结果应追加到本文件。