71 lines
4.5 KiB
Markdown
71 lines
4.5 KiB
Markdown
# 生时校正收敛重构进度(2026-08-30)
|
||
|
||
## 基线与范围
|
||
|
||
- 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` @ `db6716e76c7a44adb568701dc811de52d8d29a96`
|
||
- staging 同步范围:`7db2dd2d..db6716e7 staging -> staging`
|
||
- 当前状态:已提交,未 push 或 deploy。
|
||
|
||
## 任务 0:上游资料与真实会话
|
||
|
||
当前无法完成,原因已记录在 `BLOCKED.md`:外部 `~/.workbuddy/skills/jyotish-birth-time-rectification/` 不存在,仓库没有受控的真实本地校正会话完整记录,也没有可验证的上游资料来源。因此以下三项不能被事实化回答:总轮数、最终交付区间宽度、`confidence` / `can_apply`。
|
||
|
||
基于 v2 任务书与当前仓库/上游代码比较,可以确认本轮落点不是更换评分器,而是恢复两个缺失的生产契约:
|
||
|
||
1. 服务端持久化预算必须被生产判定消费,超预算仍交付候选区间并结束;
|
||
2. 第 0 轮起就要有可读的候选结果/校正报告,停下来时要说明下一步与局限。
|
||
|
||
尚不能确认或声称上游机制等于“问完固定题数后给出候选区间并停止”。
|
||
|
||
## 任务 1:预算与终止机制
|
||
|
||
已实现:
|
||
|
||
- 接入服务端持久化的 `inferenceRounds`、`effectiveAnswerCount`、`plateauRounds`。
|
||
- 复用既有预算常量:`DEFAULT_MAX_DISCRIMINATION_ROUNDS = 8`、`RECTIFICATION_POLICY.maxPlateauRounds`、`EFFECTIVE_ANSWER_SAFETY_CAP = 10`。
|
||
- `!separation.sufficient` 分支在继续 `discriminate` 前进行预算检查;超预算统一走既有 `completeWithRange(..., "exhausted")`。
|
||
- 未修改 `convergence-evaluator.ts`、confirmation gate blocker 或 sealed holdout 阈值。
|
||
- 新增 `frontend/tests/rectification-convergence-budget.test.ts`,覆盖可终止、连续拒答终止、超预算交付区间、区间宽度单调性。
|
||
|
||
## 任务 2:提问权与问题槽
|
||
|
||
已完成并审核:
|
||
|
||
- live path 不再 import/call `spoken-answer.ts`;该旧解析/拼接模块已删除。
|
||
- 模型只输出确认/承接正文;`current_question` / `choice_card` 由服务端结构化返回。
|
||
- UI 使用统一问题槽展示选择题和自由输入提示;缺失问题时显示可监控状态。
|
||
- 旧历史回放保留原始 assistant 正文,不再重新解析或拼接问题。
|
||
|
||
## 任务 3:候选结果交代契约
|
||
|
||
已实现:
|
||
|
||
- 恢复 `build_candidate_result_summary()`。
|
||
- `score_candidates()` / `diagnostics()` 返回 `candidate_summary`、`next_step_codes`、`stability.label` 与 `rectification_report`。
|
||
- 报告包含当前候选区间、代表分钟及“代表性候选,不是唯一解”标记、置信度、逐条事件证据状态、technique layers、被排除候选、confirmation gate blocker 文案与局限声明。
|
||
- `events=[]` 时第 0 轮区间回退到用户声明的出生窗口;跨午夜窗口已验证可用;不生成唯一分钟结论。
|
||
- 新增回归覆盖零证据、跨午夜窗口、事件方法、排除候选、报告一致性与 `stability.label`。
|
||
|
||
## 已通过验证
|
||
|
||
- `python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45`:pass。
|
||
- `python3.12 -m pytest -q tests/test_active_rectification_events.py tests/test_rectification_v5_services.py`:通过(当前修改对应测试)。
|
||
- 前端聚焦测试:79/79 通过:
|
||
`rectification-decision-authority.test.ts`、`rectification-decide-next-action.test.ts`、`rectification-inference-machine.test.ts`、`rectification-range-offer-deadend.test.ts`、`rectification-collect-stall.test.ts`、`rectification-convergence-budget.test.ts`。
|
||
- `git diff --check`:通过。
|
||
- 任务 2 聚焦测试:98/98 通过;相关补充测试(含问题槽 CSS 合同):38/38 通过。
|
||
- `./node_modules/.bin/tsc --noEmit`:通过。
|
||
- `npm run lint`:0 errors;25 个既有 warnings。
|
||
- `npm run build`:通过;仅有既有 Turbopack filesystem tracing warnings。
|
||
- `npm run test:db`:34/34 通过,fail=0。
|
||
- 前端全量测试:2338/2338 通过,fail=0;使用 `PYTHON=/opt/anaconda3/bin/python3.12`,避免默认解释器缺少 PyYAML 的环境性失败。
|
||
|
||
## 交付状态
|
||
|
||
- 任务 1、任务 2、任务 3 已分别精确提交。
|
||
- 任务 4(标定数据入口)与任务 5(清理/同步机制)按任务书明确留待后续,不在本轮实现。
|
||
- 未 push、未 deploy;等待用户明确要求。
|