# 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 分钟」 | 决策 1,04:51–04: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/reset(ERR-008)。本单在独立 worktree 基于 `origin/staging` 做。 4. 预检 `python3 scripts/pre_work_check.py` 在本机 python 3.14 / 缺 pytest 时失败;远端可见性仍 verified。不把预检失败写成云端未同步。