自 2026-07-16 起,changelog 条目提供中英文两个版本。/ From 2026-07-16, changelog entries are provided in both Chinese and English.
中文
1.2 线第四版:一条生产验收测试战役(非功能版本)。把 1.1.x~1.2.3 的全部测试资产组织成 L0–L13 分层、带硬性门禁、可归档证据的验收流水线,并给「生产可用」一个可证伪定义。本版本关闭时一并纳入自 v1.2.3 以来的全部工程成果。
新增
- L0–L13 生产验收测试主计划 + 环境矩阵 E0/E1/E2 + L6【P0】十维用户场景矩阵 + SLO 硬阈值;L4 conformance 实测(
tests/conformance/,12 用例)+ L6 官方 openai SDK 全场景脚本(scripts/sdk_user_scenarios.py)。 - v1.2.5 MEMBER 自助门户 + 预付余额计费(ADR-0017);v1.2.7 自托管 Langfuse 观测(ADR-0018)。
- prometheus-client 原生多进程指标架构;Django 6 原生 psycopg 连接池。
修复(本轮 E0 复跑)
- F-21(P0):所有 SSE 流式请求 500——三个缓冲请求体的中间件合成
http.disconnect触发 StarletteStreamingResponse取消;改为回放后委托真实 receive。 - F-22:UserAdmin 批量操作按钮永久隐藏——改用
unfold.forms.ActionForm。 - F-23:
cryptography/pytest-timeout/uvicorn未声明依赖,精确uv sync后崩溃——补声明。 - F-24:pg_cron 夜间 prune 作业自 6 月起每晚失败(复合外键阻止裸 DROP)——DETACH+CASCADE 修复。
- F-25:
request_logs复合唯一约束在模型建表路径缺失致 drainON CONFLICT静默失败——补约束。
移除
- v1.2.6:退役
auth_api+UserSession、删native_backups死 stub。
延后至 E1/E2:真实 provider 严格语义、稳态 300VUs×30min + 长 soak、真实 TLS testssl、破坏性 DR 全闭环、容器/历史扫描。
English
Fourth release on the 1.2 line: a production-acceptance test campaign (not a feature release). Organizes all 1.1.x–1.2.3 test assets into an L0–L13 layered pipeline with hard gates and archivable evidence, and gives "production-ready" a falsifiable definition. Closing this version also folds in all engineering work accumulated since the v1.2.3 tag.
Added
- L0–L13 production-acceptance master test plan + E0/E1/E2 environment matrix + the L6 [P0] ten-dimension user-scenario matrix + hard SLO thresholds; L4 conformance promoted to real tests (
tests/conformance/, 12 cases) + the L6 official openai-SDK full-scenario script (scripts/sdk_user_scenarios.py). - v1.2.5 MEMBER self-service portal + prepaid-credit billing (ADR-0017); v1.2.7 self-hosted Langfuse observability (ADR-0018).
- Native prometheus-client multiprocess metrics architecture; Django 6 native psycopg connection pool.
Fixed (this E0 re-run)
- F-21 (P0): every SSE streaming request returned 500 — three body-buffering middlewares synthesized
http.disconnect, which tripped Starlette'sStreamingResponsecancellation; changed to delegate to the real receive after replay. - F-22: UserAdmin bulk-action Run button permanently hidden — switched to
unfold.forms.ActionForm. - F-23:
cryptography/pytest-timeout/uvicornwere undeclared dependencies that broke after an exactuv sync— now declared. - F-24: the nightly pg_cron prune job had failed every night since June (a composite FK blocked the bare DROP) — fixed with DETACH+CASCADE.
- F-25: the
request_logscomposite unique constraint was missing on the model-built schema, silently failing the drainON CONFLICT— constraint added.
Removed
- v1.2.6: retired
auth_api+UserSession, deleted the deadnative_backupsstub.
Deferred to E1/E2: real-provider strict semantics, steady 300VUs×30min + long soak, real TLS testssl, destructive DR full loop, container/history scans.