Files
Jyotisha/docs/tasks/PROGRESS-rectification-compare-card-polish-20260909.md
T
Jesse_ChenandCursor 5c476ba784
Independent Staging Quality Gate / validate (push) Failing after 9m31s
Independent Staging Quality Gate / publish (push) Has been skipped
fix(rectification): cover all candidate minutes on the compare card and keep delivery narration (BUG-614/615)
Engine by_time ledgers now include the full candidate set so posterior columns can look up fit and windows. Delivery turns keep up to three sentences after idle persist; the card subtracts repeated traits and folds the board chart.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 18:32:03 +08:00

4.9 KiB
Raw Blame History

PROGRESS · 三列对比卡修正与减法(BUG-614/6152026-09-09

工作树:.worktrees/rectification-compare-card-polish-20260909 分支:codex/rectification-compare-card-polish-20260909 任务书:docs/tasks/TASK-rectification-compare-card-polish-20260909.md 基线:任务书写 origin/staging @ 365ad799;本 worktree 按开工时的 origin/staging 3005e36d(任务书本身)切出。合入前 rebase 到当时的 origin/staging(含 17b36f3a 咨询 BUG-612/613、584a56bd 报告图布局 brief、ca921c3f 采集按钮/时间轴/已采用列,BUG-618~620)。已采用列继续 disabled={busy || adopted},不把 BUG-618 冲掉。

本单状态:待验收。合入 staging 时更新落点 SHA。

预检:本机已跑 python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45(含 diagnose_external_engine_adapters.py --json),远端可见性 verified。前端用 worktree 里指向主仓的 frontend/node_modules 符号链接。

未改:采用 RPC、各道门槛、SCORE_DELTA、四选项合同、时间轴、Skill 版本 / references/conversation-strategy.md

做了什么

  • BUG-614 column_times_for_compare(..., limit=9) 覆盖引擎 candidate_times 去重全集。客户端 lookupByTime 缺键 → fit: null / windows: null,灰字「这一分钟还没对照」,不再把空表渲染成 0 · 0 · 0
  • BUG-615 trimSpokenTurnForInterviewpersistNextInterviewIfIdle 之后执行:仍有下一问裁到一句;terminalNote 保留 ≤3 句。不得在 streamAttempt 里先裁。裁完若与流式正文不同,再发一条 answer.delta replace,气泡与落库一致。
  • 卡片减法 两列及以上共有性格句提到卡顶并改写成「两个/三个时间的…都在…」;列内 fit_line / window_line;无 <h3>;禁用「强相关 / 有关联 / 弱关联」。
  • 右栏 VedicChartSvg 北印星盘;宫位表与换升时刻默认 <details>(summary「换升时刻 · N 个」);显示层并入同一折叠。换分钟只高亮变化宫,无动画。

三栏

用例 原值 新值 理由
引擎 5 个候选、卡片后验前三与引擎前三不同 后验列查不到键 → 0 · 0 · 0 / 「没有窗口」 by_time 含全部候选分钟;列 fit/windows 有数 决策 1:按引擎候选集算,不是按卡片前三
by_time 缺某一列的键 空数组当 0、当没有窗 fit === nullDOM「这一分钟还没对照」 没算 ≠ 没有
三列 D10 同在巨蟹 三列各写一遍 卡顶一句「三个时间的事业盘都在巨蟹座:…」 相同句只写一次
交付轮模型写 4 句 BUG-606 裁成 1 句 terminalNote 时留 3 句 决策 2BUG-595 三句口径
普通证据轮 3 句 1 句 仍 1 句 BUG-606 采集轮不变
右栏本命 宫位表常驻 北印星盘 + 宫位表折叠 读屏仍可打开表
右栏换升时刻 逐分钟常驻列表 默认折叠「换升时刻 · N 个」 时间轴已表达同一件事

测试

  • frontend ./node_modules/.bin/tsc --noEmitexit 0
  • npm run lint0 error / 107 warning(仓库既有 warning,无新增 error
  • 任务书切片 tsx --test tests/rectification-*.test.ts tests/agent-voice-copy-contract.test.ts(排除 database):1063 passed / 0 failed
  • 本单针对性:rectification-v9-agent.test.ts 交付 4→3 句、证据 3→1 句;rectification-range-delivery-20260907.test.ts 后验前三有 fit、缺键「还没对照」;rectification-board-model.test.ts 北印星盘 + 换升默认折叠
  • .venv/bin/python -m pytest tests/test_rectification_v5_services.py::RectificationV5ServicesTest::test_compare_ledgers_cover_all_engine_candidate_timestest_compare_returns_ledger_and_windows_by_candidate_time2 passed。同文件 test_block_scan_seven_events_finishes_within_fifteen_seconds 本机 41s 超 15s 预算,与本单无关(既有壁钟断言,见 BUG-570 P2)
  • 浏览器真人走查:无登录态,未见真实交付卡/右栏像素

偏离

  1. 任务书基线 365ad799worktree 从已推任务书的 3005e36d 切出。未把后续 staging 提交 rebase 进来。
  2. 代表分钟缺 by_time 键时,经历 ledger 仍可回退到该分钟自己的 eventDashaLedger(不是填 0);窗口没有回退。缺键列只要 windows == null 仍显示「还没对照」。
  3. 单列不把性格句提到卡顶(任务书写的是三列共有)。
  4. 浏览器真人走查:本会话无登录态,未见真实交付卡/右栏像素。合同测试覆盖 DOM 字符串,不把它们写成已经看见真实会话。
  5. 裁句后补一条 answer.delta replace。任务书只要求 idle 之后裁句;不补这条的话流式气泡会停在未裁正文。

环境缺口

无登录态、无生产/staging 走查。不把合同测试写成已经看见真实像素。