test: close local release gate regressions
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled

This commit is contained in:
Jesse_Chen
2026-08-15 09:32:28 +08:00
parent e58bc36909
commit 0e5575a8a9
7 changed files with 289 additions and 83 deletions
+15
View File
@@ -3227,3 +3227,18 @@
- 防复发:golden fixture 只能保存 synthetic intent code/context tags,不得保存真实用户正文或出生资料;事实、权限、证据、状态与精确时间边界只能由确定性门禁判定,模型评审必须保持 pending 直到真实执行;catalog membership 不能替代本轮 evidence availability`requiresEvidence` 不能关闭事实/时间证据规则,accepted 不得升级为 confirmedAgent observability 不得加入自由格式 metadata、正文、prompt、messages、出生资料、身份信息、secret/API key、provider payload、stack 或内部路径,结算失败不得降级为 cancelled,公开 NDJSON 不得扩展为内部 telemetry。
- 相关记录:BUG-181、BUG-186、BUG-187、BUG-188、BUG-189
- 修复版本:本次功能分支提交(精确 SHA 以提交与远程分支核对结果为准;未合并 main/staging,未部署)
## BUG-191 | PR-8 全量发布门禁被过期测试合同与本地解释器假设阻断
- 状态:resolved(本地候选,待 staging 精确 SHA 发布验收)
- 首次发现:2026-08-15
- 最近更新:2026-08-15
- 影响面:PR-8 全量前端测试、TypeScript 编译、本地 PostgreSQL 业务迁移测试、staging workflow YAML 合同与质量门禁。
- 用户现象:PR-1 至 PR-8 功能提交本身已完成,但全量前端门禁仍有 5 个失败:starter questions 继续锁死旧四主题并扫描派生 wrapper 的重复文案;数据库业务测试继续调用已撤权的 legacy 校时候选接受 RPC;生产迁移 fixture 缺少新增列元数据;staging workflow 测试使用 ES2018 `/s` flag 且假设 PATH 中存在可导入 PyYAML 的 `python`。因此不能安全提交、推送或发布 staging。
- 触发条件:在 PR-7 十域 registry、PR-4 V2 candidate decision contract、生产迁移列模型与独立 staging workflow 合同合并后运行全量 `tsx --test tests/*.test.ts``tsc --noEmit` 或 Python quality gate。
- 根因:测试仍复制旧业务常量和旧 RPC 调用方式,没有跟随新的单一真源与服务端 UUID 合同;测试 fixture 未补齐列模型新增字段;Node 启动的 YAML 检查未继承质量门禁实际使用的 Python 解释器,并包含依赖特定 worktree 深度的临时 fallback。
- 修复:starter tests 改为验证全部 10 个 canonical domain、`label`/`prompt`/evidence/claim 投影及按 domain 归属的 D10、D9、Ashtakavarga、negative holdout gatebilling 测试分别锁定 reserve/complete/release 的免费 turn 短路与付费调用;数据库测试保留 legacy RPC 撤权断言,并恢复 `persist_agentic_rectification_candidate_v2``accept_agentic_rectification_candidate_for_case_v2` 的真实纵向链路,覆盖服务端 candidate UUID、首次接受、幂等重放、切换候选、profile 落库、reported time 保留及基线变化后的 expired 拒绝;生产迁移 fixture 补齐 identity/data type 元数据;YAML 检查改用 `PYTHON``VIRTUAL_ENV`、仓库 `.venv` 与 PATH fallbackquality gate 通过 `os.environ.setdefault("PYTHON", sys.executable)` 向前端测试传递解释器,并移除 worktree 层级假设。
- 验证:聚焦非数据库测试 70 passed、0 failed;本地 PostgreSQL 全迁移与业务链路 1 passed、0 failed;全量前端 1532 passed、0 failed`tsc --noEmit` 通过;ESLint 0 errors、4 个既有 warningsNext 16 webpack production build 与静态生成通过;`git diff --check` 通过。四档质量门禁中的 quick、browser、accuracy 已完整通过;release 档的公开发布隐私扫描通过(3212 files、0 findings),三引擎 parity validator 命令成功执行且 golden cases 3/3 passed。三引擎业务比对仍如实记录为 92 行中 32 match、60 mismatch、无缺失引擎或高严谨 section,未启用 `--require-external-parity`,不得解释为外部公式完全一致。release 档唯一未完成项是 Playwright/Chromium 报告渲染隔离 POC;因本机浏览器进程持续闪退并按用户明确要求停止,未将该项宣称为 passed,后续不再通过 Playwright 调用 Chrome。staging 仍需以正式 Gitea 独立质量门禁、精确 SHA 部署与非 Playwright HTTP/API smoke 完成验收。
- 防复发:测试必须读取 canonical registry,不得重新硬编码派生业务真源;正式 V2 RPC 替代 legacy RPC 时必须保留完整成功、幂等、切换、失效和持久化业务覆盖,不能以“旧入口被拒绝”替代纵向链路;跨语言测试必须显式传递当前解释器,不得依赖 PATH 别名或 worktree 深度;类型 fixture 必须跟随共享列模型演进。
- 相关记录:BUG-178、BUG-181、BUG-189、BUG-190
- 修复版本:本次功能分支提交(精确 SHA 以提交、远程分支和 staging 发布核对结果为准)