fix(rectification): simplify delivery card and guard double turns (BUG-595, BUG-596)
Independent Staging Quality Gate / validate (push) Successful in 25m9s
Independent Staging Quality Gate / publish (push) Successful in 37m19s

Make the range card row-select, drop the composer 先这样 control and adopt status bar, keep delivery copy to three sentences with a folded verification report, and skip a second no-message agent run after a terminal delivery turn.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-08 19:56:48 +08:00
parent 6368ebba0f
commit 7e3b6cdc7a
60 changed files with 1561 additions and 1105 deletions
@@ -0,0 +1,51 @@
# PROGRESS · 生时校正交付面精简(2026-09-08)
工作树:`.worktrees/rectification-delivery-ui-simplify-20260908`
分支:`codex/rectification-delivery-ui-simplify-20260908`
任务书:`docs/tasks/TASK-rectification-delivery-ui-simplify-20260908.md`
基线:`origin/staging` @ `6368ebba`
本单状态:**待验收**。代码在执行分支,尚未 push。
未改:采用 RPC、确认门、各道门槛、`page.tsx`。Skill 从 10.0.16 升到 **10.0.17**
## 做了什么
- **决策 1** 区间卡改成按候选分钟逐行点选。代表分钟第一、标「排盘用」,右侧只写与代表分钟不同的 D9/D10。删分歧两列、「都不像」「说不好」「按这个范围用」「再补一件经历」。
- **决策 2** 输入框上方不再有「先这样」。停止只留选择题卡和生成中「停止回答」。删 `rectification-composer-meta`
- **决策 3** 删采用状态条。没有核对题时旁白改为「已采用 HH:MM,新建对话即按这个时间排盘。」
- **决策 4** 交付正文三句。八法报告在默认收起的「查看验证报告」。Skill 10.0.17。
- **决策 5** 四条路打 `rectification_delivery_turn` 日志;同一 Case 同一 `resultId` 60 秒内第二次无用户消息 agent 运行返回 `already_delivered`。有 `askedTurnId` 时不再 `persistExhaustionGateTurn`
## 三栏(被触碰断言)
| 用例 | 原值 | 新值 | 理由 |
| --- | --- | --- | --- |
| 交付卡按钮 | 「按这个范围用 / 再补一件经历」+ 分歧列 | `button` 数 = 候选行数,点行 `onAccept` | BUG-595 决策 1 |
| composer-wrap | `CHOICE_STOP_LABEL` + composer-meta | 无先这样、无 composer-meta | BUG-595 决策 2 |
| 采用后状态条 | `rectification-adopt-status` + 改选 | 行内已采用;无状态条 | BUG-595 决策 3 |
| 无核对题旁白 | `postAdoptVerifyDone` 原句 | `已采用 HH:MM,新建对话即按这个时间排盘。` | BUG-595 决策 3 |
| 交付正文 | 八法报告进气泡 | 三句;报告在折叠块 | BUG-595 决策 4 |
| Skill | 10.0.16 | 10.0.17 | 任务书 |
| 连续无消息 agent | 第二条仍计费写 turn | `already_delivered` | BUG-596 |
| 跳过最后一道核对题 | remaining=0 误走短句 | 有过 reverse_verify 焦点则保留原 `postAdoptVerifyDone` | BUG-595 决策 3 |
## 测试
- `frontend` `./node_modules/.bin/tsc --noEmit`exit 0
- `npm run lint`0 errors / 106 warnings(仓库基线 warning,无新 error
- 任务书指定 TS 切片:1039 tests / 1039 pass / 0 fail
- 新文件 `frontend/tests/rectification-delivery-ui-simplify-20260908.test.ts`
- `next build`Turbopack 默认):worktree `frontend/node_modules` 是指向主仓的 symlinkTurbopack 报 `points out of the filesystem root`。用 `next build --webpack` 代替:`/` 仍是 `○` Static。Next 16.3 webpack 输出不再打印 First Load gzip。
- Docker `database-rectification-*.test.ts`:本机未跑,记 blocked
- 浏览器真人走查:无登录态,见 `docs/testing/rectification-scenarios-20260907.md` §5
Skill 10.0.17 SHA256`f77b06de392feaa7c23e64beb05a90bcc0734db73747eb7915cba338b8eff1e6`。live 树与 `versions/10.0.17` 字节一致。
## 偏离
1. BUG-596 触发链仍 investigating;守卫按任务书落地,日志已加。
2. 本机主仓停在 `codex/minute-rectification-p0` 且有脏文件,未 checkout/reset。本单在独立 worktree 基于 `origin/staging` 做。
3. 预检系统 Python 缺 swisseph/pytest;项目 `.venv` 预检 `pass_with_remote_blocked`。不把预检失败写成云端未同步。
4. `.venv` 是指向主仓的 symlink,不提交。
5. 默认 `next build`Turbopack)在 worktree symlink `node_modules` 上失败;验收数字来自 `next build --webpack`
+1 -1
View File
@@ -79,7 +79,7 @@
| `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` 连领域+年份规则都没有。决策:同域同年硬排除、相邻年维持降权 | 已验收通过(真实环境未再出同年题) | `8ae17a26`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,分盘星座让模型自算 | 已验收通过(Skill 10.0.16 | `06e44104`BUG-593 |
| `TASK-rectification-new-minute-inherit-20260908.md` | `PROGRESS-rectification-new-minute-inherit-20260908.md` | 5 题答完范围 13 分钟,补迁居事件后回弹到 28 分钟:重算换入的新分钟在携带题的 supports/conflicts 里没名字,一律中性、零冲突存活(BUG-587 决策 2 定错,本单推翻:按分盘星座 / 连续分钟段推结论);batch 内重算不触发 BUG-588 范围句 | 已验收通过(真实环境范围不再回弹) | `be711043`BUG-594 |
| `TASK-rectification-delivery-ui-simplify-20260908.md` | `PROGRESS-rectification-delivery-ui-simplify-20260908.md` | 产品决定:时间卡按候选分钟逐行直接点选采用(删分歧两列 + 都不像/说不好/按这个范围用/再补一件经历)、删输入框上方「先这样」按钮、删采用后状态条、交付正文收成三句 + 八法报告折叠块(Skill 10.0.17)、交付轮两条助手消息守卫(investigating | 待执行 | `codex/rectification-delivery-ui-simplify-20260908`BUG-595596 |
| `TASK-rectification-delivery-ui-simplify-20260908.md` | `PROGRESS-rectification-delivery-ui-simplify-20260908.md` | 产品决定:时间卡按候选分钟逐行直接点选采用(删分歧两列 + 都不像/说不好/按这个范围用/再补一件经历)、删输入框上方「先这样」按钮、删采用后状态条、交付正文收成三句 + 八法报告折叠块(Skill 10.0.17)、交付轮两条助手消息守卫(investigating | 待验收 | `codex/rectification-delivery-ui-simplify-20260908`BUG-595596 |
| `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 |