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

7.8 KiB
Raw Blame History

生时校正收敛重构进度(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,本地 HEADorigin/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_casetarget_minute = 14:49observed_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=unsureclassified_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.tsrectification-eight-method.test.tsrectification-occupation-coverage-exit.test.ts 没有改既有断言,只补充或调整与目标断言无关的 incidental fixture,使其满足任务 6 新增的 3/2 交付地板,并让真正并列与窄幅领先各测各的语义。
  • rectification-hidden-e2e.test.tsrectification-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 45pass。
  • 最终任务 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