Files
Jyotisha/PROGRESS-rectification-convergence-20260830.md
T
Jesse_Chen 9492bae15f
Independent Staging Quality Gate / validate (push) Successful in 10m5s
Independent Staging Quality Gate / publish (push) Successful in 9m32s
docs: record round-1 audit and open round-2 brief
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
2026-08-31 05:00:55 +00:00

121 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 生时校正收敛重构进度(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` 均为上述 SHAahead/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:3015: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。
## 已完成任务 13
- 任务 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`