Files
Jyotisha/docs/tasks/TASK-session-capacity-bool-assert-20260916.md
T
jesse-ux 7061d0d1f3
Independent Staging Quality Gate / validate (push) Successful in 11m47s
Independent Staging Quality Gate / publish (push) Successful in 13m18s
fix(test): 容量合同按 fixture.psql 的 f: 字母表断言(BUG-739)
Independent Staging Quality Gate run 2683 唯一失败:
database-consultation-session-capacity 期望 false:session_missing,
实际是 f:session_missing。夹具把 boolean::text 的 false 规范成 psql -A 的 f。
五处期望值对齐既有合同;无 Docker 源码合同锁住 false→f。
2026-09-16 15:22:55 +08:00

64 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TASK · staging 门禁因容量合同 `false:` / `f:` 失配一直红(2026-09-16
基线:`origin/staging` @ `8cb1877e`。最近一次含门禁路径的 staging 提交是 `1e3570b4`(其后 `8cb1877e` 为纯文档)。Gitea Independent Staging Quality Gate run `2683` / job `6103` **failure**
## 事故实证
validate 步「Validate backend, package, frontend, and database contracts」失败。Python 快速门已通过。唯一 `not ok`
```
not ok 1109 - append_consultation_question ignores thinking fields and enforces the physical JSON cap
location: frontend/tests/database-consultation-session-capacity.test.ts:120
Expected values to be strictly equal:
+ 'f:session_missing'
- 'false:session_missing'
```
同文件后面 `"false:invalid_question_message"`、三处 `"false:session_full"` 会被同一条夹具改写打红,只是第一条先炸。
`dcfc2f15`BUG-732)起到 `1e3570b4`,staging 上每一次跑完的质量门都是 failure;中间被更新推送 cancel 的不算绿。
## 根因
`frontend/tests/helpers/postgres-fixture.ts``psql()` 对输出做:
```ts
.replace(/(^|:)false(?=:|$)/gm, "$1f")
```
`boolean::text``false``psql -A``f`。这条改写让既有合同(`true:f:f``f:grant_failed`)跨表示稳定。BUG-732 的真实库合同用了 `success::text`,却按未规范化的 `false:` 写期望值。执行方当时无 Docker,该文件 skip,带红合入。
## 决策记录
- 不删夹具的 false→f 规范化(billing / topology / report 等合同依赖它)。
- 不改 `append_consultation_question` 运行时 SQL。
- 产品授权:直接修测试并推 staging 重跑门禁。
## 硬红线
1. 不改 `.gitea/workflows/**`、不提升 `main`、不动 DNS。
2. 不改迁移、不改 RPC 签名/error_code。
3. 不顺手升级依赖、不顺手修无关 warning。
4. Bug 历史不写入姓名、出生资料、密钥。
## 任务分解
1. 五处期望值改为 `f:session_missing` / `f:invalid_question_message` / `f:session_full`。验收:源码不再出现 `"false:session_missing"` 等。
2. 夹具改写保留,加一行说明。验收:`database-billing-admin` 等既有 `f:` 断言的源码合同仍在。
3. 无 Docker 源码合同:夹具必须保留 false→f;真实库合同必须用 `f:`。验收:`consultation-session-capacity.test.ts` 新增一条,定向套件绿。
4. `docs/BUG_HISTORY.md` 连续号 **BUG-739**。关联 BUG-732。
5.`origin HEAD:staging`,门禁对**本提交 SHA** 必须绿(或明确写出环境缺口)。
## 让步顺序
改期望值即可。禁止为了让测试过而拿掉夹具规范化。禁止改生产 SQL。
## 开工前置
```
git fetch origin --prune
git status -sb # 第一行必须是独立 worktree 分支
```
BUG 编号起点:开工时最大号 **BUG-738**,本单用 **BUG-739**