fix(web): unblock staging web image typecheck for inference probes
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled

Docker next build rejected 909de8b8 because engine probe outcomes, reverse-verify source checks, and a nullable window scan failed TypeScript.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-24 09:40:48 +08:00
co-authored by Cursor
parent 909de8b884
commit 3b785b821d
5 changed files with 67 additions and 20 deletions
+32
View File
@@ -5515,3 +5515,35 @@
- 复发自:BUG-362(C/D 写入后验修了,但用原地 patch 绕过缓存,receipt 不可审计)
- 修复版本:待发布
## BUG-364 | staging quality gate 在 Mac Docker runner 上 npm ci 因 bind mount 被拒
- 状态:investigating
- 首次发现:2026-08-24
- 最近更新:2026-08-24
- 影响面:Gitea `backend-quality-gate.yml``validate`「Install dependencies」步骤、`publish`(因 `needs: validate` 被 skip)、staging 发布
- 用户现象:向 `staging` 推送后质量门失败;测试步骤未执行。`publish` skipped。
- 触发条件:job 被调度到 `jesse-mac-xiaoxin`Docker Desktop 里的 `ubuntu:24.04` act_runnerlabel `xiaoxin:host`,使用宿主机 `docker.sock`)。Linux 宿主 runner `xiaoxin` 未接走该 job。已在 run `2051``29750d38`)和 `2052``909de8b8`)复现。
- 根因:pip 安装成功。随后 `docker run --volume "$workdir:$workdir"``npm ci` 时,workdir 是 runner 容器内的 `/root/.cache/act/<id>/hostexecutor`。该路径不在 Docker Desktop 的 Mac 文件共享里,daemon 返回 `mounts denied`,步骤以 exit 125 失败。不是 ledger 测试或 Python 依赖错误。最近一次完整成功是 run `2038`,跑在 Linux `xiaoxin` 上。
- 修复:未修复。候选路径是让 Linux `xiaoxin` 重新在线并接 `runs-on: xiaoxin` 的 job,或不要用套了宿主机 docker.sock 的 Mac 容器跑这个 workflow。不要靠在 Docker Desktop 里共享 Linux 容器内部路径。
- 验证:Gitea job `5135` 日志含 `Successfully installed` 全套 pip 包,随后 `docker: Error response from daemon: mounts denied``frontend npm ci failed with status 125`。job `5133`run `2051`)同一错误。尚未在 Linux `xiaoxin` 上重跑 `909de8b8`
- 防复发:`runs-on: xiaoxin` 不得由无法给 job workdir 做 bind mount 的嵌套 Docker runner 抢占。质量门失败不得在未读 Install dependencies 日志时当成业务测试失败。
- 相关记录:BUG-136、BUG-149、BUG-266、BUG-363、BUG-365
- 复发自:无
- 修复版本:未修复
## BUG-365 | staging web 镜像 next build 被推断类型检查挡住
- 状态:resolved(本地修复,待提交与发布)
- 首次发现:2026-08-24
- 最近更新:2026-08-24
- 影响面:`deploy/railway-web.Dockerfile``RUN npm run build``probeFromEngine``method-followup` 反推探针、`rectification-v9-tools` window scan
- 用户现象:Linux `xiaoxin` 离线时在本机构建 `linux/amd64` web 镜像,`next build` 在 TypeScript 阶段失败,无法把 `909de8b8` 换上 staging。
- 触发条件:当前 `staging` 头含推断 ledger,且走 Docker `next build`。staging push 的 validate 跳过 `npm run build`,因此测试可绿、镜像红。
- 根因:`EngineProbeFields``expected_outcomes.answer_class` 收成 `AnswerClass`,与引擎探针的 `string` 相交后不能 `map(probeFromEngine)`。反推探针用字面量比较 `dasha_boundary`,在 `source` 收窄成 `age_band` 后被判无交集。`windowScanFromDecisionReceipt` 可为 `null`,调用方仍读 `.transitions`
- 修复:`probeFromEngine` 接受引擎探针并校验 `AnswerClass`。反推探针改走 `Set<string>`。window scan 用可选链,缺省空数组。
- 验证:本机 `npx tsc --noEmit` 仅余测试夹具多余字段,已改为 `Object.assign`Docker `next build` 待用新 SHA 重跑。
- 防复发:staging push 的类型回归仍只在 publish Docker 暴露;本机/xiaoxin 镜像构建失败不得改 SHA 蒙混上线。
- 相关记录:BUG-355、BUG-363、BUG-364
- 复发自:BUG-355validate 跳过 `next build`publish 才暴露类型错误)
- 修复版本:待发布