# PROGRESS · staging 门禁容量合同 `false:` / `f:` 失配(2026-09-16) 工作树:`.worktrees/session-capacity-bool-assert-20260916` 分支:`codex/session-capacity-bool-assert-20260916` 基线:`origin/staging` @ `8cb1877e`(最近门禁路径 SHA `1e3570b4`,Gitea run `2683` failure) 修复提交:推送 `HEAD:staging` 后回填 40 位 SHA。 本机 Windows。无 Docker。未改生产 SQL、未改 `.gitea/workflows/**`、未 bump Skill、未动 `page.tsx`。 ## 做了什么 - `database-consultation-session-capacity.test.ts` 五处期望值:`false:` → `f:`(`session_missing` / `invalid_question_message` / 三处 `session_full`)。`true:null` 与权限位 `true:f:f` 未动。 - `postgres-fixture.ts` 的 false→f 规范化保留,补一行说明:`boolean::text` 是 `false`,`psql -A` 是 `f`。 - `consultation-session-capacity.test.ts` 新增无 Docker 源码合同(BUG-739):夹具必须保留该 replace;真实库合同必须写 `f:`、禁止 `"false:session_*"`。 - Bug 历史 **BUG-739**,关联 BUG-732。 ## 既有断言变更(AGENTS.md §7.3) | 文件 | 原值 | 新值 | 原因 | | --- | --- | --- | --- | | `database-consultation-session-capacity.test.ts` 会话不存在 | `"false:session_missing"` | `"f:session_missing"` | `fixture.psql()` 把 `false` 规范成 `f`;CI 实测 actual 即此 | | 同上,超长提问 | `"false:invalid_question_message"` | `"f:invalid_question_message"` | 同上,第一条炸后未跑到 | | 同上,额度/物理/条数满员 ×3 | `"false:session_full"` | `"f:session_full"` | 同上 | ## 测试 | 命令 | 结果 | | --- | --- | | `./node_modules/.bin/tsc --noEmit` | 0 错 | | `eslint --max-warnings 0` 本单三个测试文件 | 0 error / 0 warning | | `npx tsx --test tests/consultation-session-capacity.test.ts` | **7 passed / 0 failed**(含新增 BUG-739 源码合同) | | `npx tsx --test tests/database-consultation-session-capacity.test.ts` | **1 skipped**(`docker unavailable on this host`),不得写成通过 | | `npm run test:db` | **blocked**:本机无 Docker | 门禁重跑证据写在推送之后。