fix(rectification): make delivery report use inference-window facts (BUG-593)
Independent Staging Quality Gate / validate (push) Successful in 15m5s
Independent Staging Quality Gate / publish (push) Has been cancelled

The verification template was still quoting the engine's pre-inference span and eliminated dasha tops, and D9/D10 signs were left for the model to guess from transition clocks.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-08 15:33:48 +08:00
parent f17af254c5
commit 06e4410431
35 changed files with 1049 additions and 65 deletions
@@ -0,0 +1,44 @@
# PROGRESS · 交付轮验证报告跟卡片用同一套事实(2026-09-08)
工作树:`.worktrees/rectification-delivery-report-facts-20260908`
分支:`codex/rectification-delivery-report-facts-20260908`
任务书:`docs/tasks/TASK-rectification-delivery-report-facts-20260908.md`
基线:`origin/staging` @ `f17af254`(任务书;代码头 `7ca6ade2`
本单状态:**待验收**。本提交交付到 staging。
未改:确认门、`confirmation_allowed` 算法、`MIN_SEPARATION_LEAD``_relative_support``minute_step=1`、四选项合同、`SCORE_DELTA`。Skill 从 10.0.15 升到 **10.0.16**
## 做了什么
- **决策 1** 有 `inference_state` 时,验证报告 `width_minutes``credible_range` 含两端分钟数;`dasha_agreement` 只在 active 分钟上过滤引擎双轨 top,引擎原值只留 `dasha_agreement_pre_inference`(Agent 投影剥掉)。顶层宽度改名 `engine_indistinguishable_width_minutes`
- **决策 2** 报告增加 `sign_by_candidate`,与分歧面板共用 `signFromTransitions``skill_verification_report` 改为 `{ markdown, width_minutes, dasha_agreement, sign_by_candidate }`。Skill 10.0.16 要求分盘上升只抄该表。
- **决策 3** 边界句「不是已确认的唯一出生分钟」保留;确认门仍看引擎候选跨度。
## 三栏(被触碰断言)
| 用例 | 原值 | 新值 | 理由 |
| --- | --- | --- | --- |
| 事故形状报告宽度 | `29 分钟`(引擎 `tied_minute_count` | `width_minutes === 3`,正文「3 分钟」 | 决策 104:5104:53 含两端 |
| 报告双轨 top | 05:06 / 04:59`conflict` | 只含 04:51/04:53,或两端都淘汰则 `agree`+空 top | 决策 1,过滤不是矩阵重算 |
| 04:53 D10 | 模型按 05:00 换升写成狮子座 | `sign_by_candidate["04:53"].d10 === "巨蟹座"` | 决策 2 |
| 投影宽度字段名 | `indistinguishable_width_minutes` | `engine_indistinguishable_width_minutes` | 决策 1;确认门内部字段不改 |
| `confirmation_allowed` | `false`(宽 29 | 仍 `false` | 决策 3 |
## 测试
- `frontend` `./node_modules/.bin/tsc --noEmit`exit 0
- `npm run lint`0 error / 103 warning(仓库既有 warning 未清)
- 任务书指定 TS 切片(`tests/rectification-*.test.ts` + `agent-voice-copy-contract.test.ts` + `skill-registry.test.ts`,排除 database):**1027 passed / 0 failed**
- 新文件 `frontend/tests/rectification-delivery-report-facts.test.ts` 覆盖事故三处事实
- Docker `database-rectification-*.test.ts`:本机未跑,记 blocked
- 浏览器真人走查:无登录态,见 `docs/testing/rectification-scenarios-20260907.md` §9
Skill 10.0.16 SHA256`b25dca7fe3630aceaf152ec99d37a2d946e4d71f1f191fc9071e11bc297e763f`。live 树与 `versions/10.0.16` 字节一致。
## 偏离
1. 双轨重算是 **active 集合过滤**,不是 Python 矩阵重打分。两个引擎 top 都不在 active 里时 `status="agree"`、top 为 `null`,正文不点名已淘汰分钟。
2. `skill_verification_report` 从 markdown 字符串改成对象;旧用例读 `.markdown`
3. 本机主仓停在 `codex/minute-rectification-p0` 且有脏文件,未 checkout/resetERR-008)。本单在独立 worktree 基于 `origin/staging` 做。
4. 预检 `python3 scripts/pre_work_check.py` 在本机 python 3.14 / 缺 pytest 时失败;远端可见性仍 verified。不把预检失败写成云端未同步。
+1 -1
View File
@@ -77,7 +77,7 @@
| `TASK-rectification-probe-replay-loss-20260908.md` | `PROGRESS-rectification-probe-replay-loss-20260908.md` | **P0** 收敛不了的直接原因:答完 5 道题范围收到 8 分钟,之后每补一件经历触发的重算换了候选集,`buildInferenceState` 找不到已答题定义(引擎与对照包按 asked keys 排除、状态 probes 不携带、分盘 key 内嵌分钟列表)→ `rounds:[]`、posterior=prior,交付回到 29 分钟;证据轮旁白不报范围变化;交付卡闪现待证实 | 已验收通过(真实 Case 范围收到 2 分钟;BUG-589 闪现 investigating | `df182c16`BUG-587589 |
| `TASK-rectification-covered-domain-recollect-20260908.md` | `PROGRESS-rectification-covered-domain-recollect-20260908.md` | 范围已收到 2 分钟、决策已是采用,却再问答过的财务题:职业覆盖后的 yearless→采集分支(L2224)不看领域是否已覆盖;`shouldSkipFollowupPersist` 把它当剩余采集挡住出卡;`persistCollectFocus` 撞 id 无条件 `:next` 再插;holdout `occupied` 不认 health/health_pressure 同义 | 已验收通过 | `7ca6ade2`BUG-590591 |
| `TASK-rectification-same-year-probe-dedupe-20260908.md` | `PROGRESS-rectification-same-year-probe-dedupe-20260908.md` | 答完「2023 年 5 月前后」又问「2023 年前后」(BUG-559 复发):点选不重跑引擎,同一份 probes 里同域同年两题并存;TS 侧 `existenceProbeAsked` 只降权不排除,`inspectDiscriminatorProbes` 连领域+年份规则都没有。决策:同域同年硬排除、相邻年维持降权 | 待执行 | `codex/rectification-same-year-probe-dedupe-20260908`BUG-592 |
| `TASK-rectification-delivery-report-facts-20260908.md` | `PROGRESS-rectification-delivery-report-facts-20260908.md` | 交付轮验证报告写「宽度 29 分钟」「主限偏向 05:06 / 分盘大运偏向 04:59」「04:53 D10 升狮子座」,与卡片(04:51–04:53)矛盾:`skill_verification_report` 用引擎推断前的 width / dasha_agreement,分盘星座让模型自算 | 待执行 | `codex/rectification-delivery-report-facts-20260908`BUG-593Skill 10.0.16 |
| `TASK-rectification-delivery-report-facts-20260908.md` | `PROGRESS-rectification-delivery-report-facts-20260908.md` | 交付轮验证报告写「宽度 29 分钟」「主限偏向 05:06 / 分盘大运偏向 04:59」「04:53 D10 升狮子座」,与卡片(04:51–04:53)矛盾:`skill_verification_report` 用引擎推断前的 width / dasha_agreement,分盘星座让模型自算 | 待验收 | `codex/rectification-delivery-report-facts-20260908`BUG-593Skill 10.0.16 |
| `TASK-api-not-configured-mislabel-20260904.md` | `PROGRESS-api-not-configured-mislabel-20260904.md` | 16 处路由把数据库瞬断(部署切换窗口)兜底翻译成 503「服务尚未配置」;改为仅配置错误用该文案,其余 `service_unavailable`,收敛为共享 helper | 已验收 | `5483649b`(BUG-542);2 条子进程测试留 CI Node 22 复核 |
| `TASK-rectification-ux-20260902.md` | `PROGRESS-rectification-ux-20260903.md` | 会话面空白假死与交互摩擦 | 已验收 | `d159f08e`(09-03 在新基线重做后合入,BUG-505509 |