9492bae15f
Verified both round-1 briefs against the code rather than the progress notes. Billing 0/1/2/3/6 and rectification 0/1/2/3/6 are in and clean, and neither the confirmation gate nor the sealed holdout was loosened. Two gaps remain. Prompt caching only emits its marker for Anthropic, so on a DeepSeek-class provider it buys observability and no cost reduction, and the membership fair-use numbers are untouched — correctly so, since no real unit cost has been measured yet. The round-2 brief gates those on a staging measurement pass and pulls the per-answer narrowing table forward, since it is the deliverable and depends on nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
121 lines
7.8 KiB
Markdown
121 lines
7.8 KiB
Markdown
# 生时校正收敛重构进度(2026-08-31)
|
||
|
||
## 基线与范围
|
||
|
||
- Git 根目录:`/Users/jesse/Downloads/Copse/astrology/yinduzhanxing`
|
||
- 隔离 worktree:`/Users/jesse/Downloads/Copse/astrology/.worktrees/rectification-convergence-impl-20260830`
|
||
- 分支:`codex/rectification-convergence-impl-20260830`
|
||
- 最新基线:`origin/staging` @ `f8aea88bc30fccedcd66367283a2623d774fed6a`
|
||
- 2026-08-31 已重新执行 `git fetch origin --prune`,本地 `HEAD` 与 `origin/staging` 均为上述 SHA,ahead/behind 为 `0/0`。
|
||
- 本次提交范围仅为任务 6;任务 7–10 不混入,不部署,不提升 `main`。
|
||
|
||
## 任务 0:上游资料与真实会话结论
|
||
|
||
任务 0 已由最新版任务文档及归档材料补齐:
|
||
|
||
- 上游访谈手册与阈值资料已归档在 `references/upstream/`。
|
||
- 两份真实会话记录已归档:
|
||
- `references/upstream/1993-session-repeated-questions.txt`
|
||
- `references/upstream/1993-session-correction-rerun.txt`
|
||
- 上游产品契约是固定节奏后交付候选区间与标签,不把默认目标设为唯一分钟。
|
||
- 固定终止话术为:
|
||
`当前最优结果是候选时间段,而不是已经确认的唯一出生分钟。临时代表时间仅用于下一轮验证与比较。`
|
||
|
||
### 1993 案例的答案回流事实
|
||
|
||
- 用户回答确实把 14:30–15:00 收窄到 14:48–14:50;这部分可以声称为回答支持的区间收窄。
|
||
- 14:49 来自仓库既有答案/校准资料回流,不是用户回答自动推导出的唯一分钟。
|
||
- 上游污染标记包括 `pl9_1993_user_case`、`target_minute = 14:49`、`observed_pl9_1993_case_only` 以及 `scripts/narayana_dasha.py:601-613` 的案例专用 tie-break。
|
||
- 本仓本次未引入、未同步上述污染逻辑;没有修改评分权重、sealed holdout 或 confirmation gate blocker。
|
||
|
||
## 已完成任务 1–3
|
||
|
||
- 任务 1:服务端持久化的轮次、有效回答数、平台期预算已接入生产判定;超预算交付区间并结束。
|
||
- 任务 2:问题权收归服务端结构化槽位,模型只负责确认/承接正文。
|
||
- 任务 3:第 0 轮起可生成候选摘要、报告、下一步与局限说明。
|
||
- 对应已在 staging 的提交:
|
||
- `86ba17ee fix(rectification): enforce persisted convergence budgets`
|
||
- `6cbf1f22 fix(rectification): separate question slots from model prose`
|
||
- `e8bd3a52 feat(rectification): expose candidate result reports`
|
||
|
||
## 任务 6:接过上游终止语义
|
||
|
||
已实现:
|
||
|
||
1. 证据型停止与既有轮次预算并列,任一命中即正常交付区间:
|
||
- 带日期、已确认、可评分的主事件少于 3 条;
|
||
- 上述事件覆盖 domain 少于 2 个;
|
||
- 第一名真实同分;
|
||
- `answer_class=unsure` 或 `classified_from=declined` 达全部探针回答的一半。
|
||
2. `34/34/32` 判定为并列第一;`34/33/33` 仅是分离不足,不是并列第一。
|
||
3. 3 事件 / 2 域的独立交付地板与 4 事件 / 3 域的唯一分钟确认门使用独立常量,未互相覆盖。
|
||
4. 证据停止与预算停止统一返回正常终态:
|
||
- `nextAction = complete_with_range`
|
||
- `sessionOutcome = completed_with_range`
|
||
- `resultStatus = completed_with_range`
|
||
5. 正常终态用户文案明确“区间交付已完成”,并逐字复用固定终止话术;真实 HTTP、provider、工具执行失败仍保留错误语义。
|
||
6. 新增 label ladder:
|
||
- `blocked`
|
||
- `user_history_verification_required`
|
||
- `manual_pattern_consensus`
|
||
- `single_adapter_support`
|
||
- `multi_adapter_consensus`
|
||
7. V9 最新结果投影新增:
|
||
- `rectification_label`
|
||
- `termination_copy`
|
||
- `evidence_stop_reason`
|
||
- `executed_methods`
|
||
8. `decideFromDossier()` 与 `decideAfterInferenceChange()` 共用同一证据计数与用户不确定度语义;draft、无日期、background-only 证据不计入交付地板。
|
||
9. 用户点选停止时保留“已记录你的选择”,固定终止话术只出现一次。
|
||
10. 自由文本拒答且没有明确选项时写入 `classified_from=declined`;带 A/B/C/D 的明确选择仍按选项语义计分,避免把 `C=没有发生` 错记为 `unsure`。
|
||
|
||
### 测试调整说明
|
||
|
||
- `rectification-decision-authority.test.ts`、`rectification-eight-method.test.ts`、`rectification-occupation-coverage-exit.test.ts` 没有改既有断言,只补充或调整与目标断言无关的 incidental fixture,使其满足任务 6 新增的 3/2 交付地板,并让真正并列与窄幅领先各测各的语义。
|
||
- `rectification-hidden-e2e.test.ts` 与 `rectification-confirmation-gate.test.ts` 的两组旧文案断言原先明确锁定“尚未完成 / 不是最终校正结果”。任务 6 正是要修复该缺陷,因此按硬红线 9 的例外更新了断言,并在断言上方记录旧值与原因。
|
||
|
||
### 明确未做
|
||
|
||
- 没有实现真正的首轮 3–5 道批量 A/B/C/D 题卡;该交付已经由最新版任务文档单独拆为任务 10。
|
||
- 任务 6 只恢复证据停止、正常终态、标签与终止文案,不把连续单卡冒充为批量题卡。
|
||
- 没有实现任务 7 的逐条区间归因表、任务 8 的“为什么”入口、任务 9 的中途改窗口重跑、任务 10 的批量出题。
|
||
|
||
## 验证
|
||
|
||
- 开工预检:`python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45`:pass。
|
||
- 最终任务 6 聚焦回归(含 `rectification-v10-conversation-focus`):`158/158` 通过。
|
||
- `./node_modules/.bin/tsc --noEmit`:通过。
|
||
- `npm run lint`:通过,`0 errors / 25 warnings`;均为本次修改前已存在的 warning。
|
||
- `npm run build`:通过;保留 5 条既有 Turbopack 动态文件追踪 warning。
|
||
- `PYTHON=/opt/anaconda3/bin/python3.12 npm run test:db`:串行真实 Docker/PostgreSQL `34/34` 通过。
|
||
- `git diff --check`:通过。
|
||
- 诊断性并行全量测试运行:`2357/2366` 通过。9 个失败中,8 个是并行 Docker/PostgreSQL 项(fixture slot 超时、连接中断或并发迁移失败);另 1 个是任务 6 引入的明确 `C` 选项被误记为 `unsure`,已在共享 resolve-focus 适配点修复,并由最终 `158/158` 回归覆盖。数据库项随后以官方串行脚本 `test:db` 验证为 `34/34`。
|
||
|
||
## 交付状态
|
||
|
||
- 任务 6 已完成实现与本地强制门禁,等待精确提交。
|
||
- 提交前及 push 前均重新同步并核对 `origin/staging`;若远端前进,只安全合并,不 reset/stash/clean。
|
||
- 任务 6 将单独快进推送到 `staging`;不手动部署,不提升 `main`。
|
||
|
||
---
|
||
|
||
## 外部核对(2026-08-31,按代码逐条验证,不依据本文件自述)
|
||
|
||
| 任务 | 状态 | 验证依据 |
|
||
| --- | --- | --- |
|
||
| 0 上游手册与阈值 | 已完成 | `references/upstream/` 五份归档 |
|
||
| 1 轮次预算 | 已完成 | `core/rectification-decision.ts:250` `budgetExhausted()`,:263 走 `"exhausted"` |
|
||
| 2 问题槽 + 删清洗正则 | 已完成 | `v9/spoken-answer.ts` 已整文件删除,101 条正则不再存在 |
|
||
| 3 停止话术契约 | 已完成 | `scripts/rectification/api_service.py:6,200,214,240` 已恢复并接出 `next_step_codes` |
|
||
| 6 证据型停止语义 | 已完成 | `core/rectification-decision.ts:114` `evidenceStopReason()`,:148 参与判定 |
|
||
| 4 标定数据入口 | 未开始 | — |
|
||
| 5 清理与同步机制 | 未开始 | P2,按任务书本就应等任务 1–3 稳定两周 |
|
||
| **7 逐条回答归因表** | **未开始** | **P0,且不依赖任何外部数据,应优先于 8/9/10** |
|
||
| 8 质疑通道 | 未开始 | — |
|
||
| 9 改窗口重跑 | 未开始 | — |
|
||
| 10 首轮批量出题 | 未开始 | `src/mastra/agentic-rectification.ts` 中「一次一问」仍在 |
|
||
|
||
任务 1、2、3、6 的实现与任务书要求一致,未发现踩红线:`convergence-evaluator.ts` 未被改动,`confirmation-gate.ts` 的 blocker 未放宽,sealed holdout 阈值未动,本仓仍未被 1993 案例答案污染(全仓 `pl9_1993` / `target_minute` 无相关命中)。
|
||
|
||
未完成项转入 `TASK-round2-cost-and-delivery-20260831.md`。
|