# PROGRESS · 完全不知道出生时间时先比时段(2026-09-06) 工作树:`.worktrees/rectification-convergence-exit-fix-20260906` 分支:`codex/rectification-convergence-exit-fix-20260906`(叠在 BUG-565~567、explain-layer、range-reading 之后) 基线:`origin/staging` @ `b938c76a`;文档头 `43a26a3c` 未改 `SKILL.md`(`stage` 不是 Case status,不 bump 10.0.15)、未改 `contracts/probe-question-v1.json`、未改采用/确认门、未改 `page.tsx`。`jyotish_api_server.py` 只加了 `/api/rectification/v5/block_scan` 薄注册。 本单状态:**待验收**。 | 任务 | 状态 | | --- | --- | | C1 引擎 `minute_step` + `block_scan` | 完成 | | C2 Case `stage` / `block_scan` 列与 RPC;unknown 开全日窗 | 完成 | | C3 采集门槛后出时段卡;选 A/B/C 进分钟;D 再采集;intake / 开场线索 | 完成 | | C4 记录 | 完成 | ## 实现要点 - 引擎请求可选 `minute_step` 1–15,默认 1。`minute_step=1` 输出与改前一致。`block_scan` 以 10 分钟步长扫 24 小时,只聚合五段相对支持,不写探针、不出分钟卡。 - Case 打开:`birth_time_source=unknown` 且无填报钟点 → `candidate_range=00:00–23:59`、`stage=block_scan`。有填报钟点仍走分钟。 - 时段比较门槛用带年月经历 3 件、领域 2 个,不用训练/holdout 门(holdout 预留会把 3 件事收成 2 件训练,永远不出卡)。 - 四选卡 A/B/C 是支持最高的三段;选中后 `advance_agentic_rectification_case_from_block_scan` 把窗口改成该时段并切 `stage=minute`。D / 说不好只写 `declined_at_fingerprint`,不采用、不停止会话。 - `block_scan` 阶段 `can_adopt` / `selection_allowed` 恒 false;latest_result 不投影分钟候选。家人 `birth_time_clue` 只进开场旁白,改不了搜索窗口。 - intake「完全不清楚」改为可以直接开始校正,先从记得的经历比出大致时段;删劝退句。 ## 测试 见 `docs/testing/rectification-unknown-time-20260906.md`。 本工作树隔离验收: - 非 DB `rectification-*.test.ts` + `agent-voice-copy-contract`(排除 database):**931 pass / 0 fail** - `.venv/bin/python -m pytest tests/test_rectification_v5_services.py -q`:**31 pass / 0 fail** - `./node_modules/.bin/tsc --noEmit`:0 - `./node_modules/.bin/eslint --quiet src tests`:0 error - Docker `frontend` `npm run test:db`(单独跑,约 214s):**37 pass / 0 fail**。中间曾因 `||` 拼布尔得到 `true:f:f:true` 失败 1 条;改成 `concat_ws` 后全量重跑通过。 随本分支推 `origin/staging`。