Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
6.1 KiB
6.1 KiB
TASK · 无年月的性格题降级为平局裁决:带年月题问完且候选仍分不开时才问,分值减半,永不参与淘汰,报告标「参考」;并加一条离线测量(2026-09-09)
- 基线:
origin/staging@4eea9c10 - 分支:
codex/rectification-yearless-probe-downgrade-20260909,基于origin/staging;与 BUG-626~628 无文件重叠(本单不碰holdoutFollowupFor/ 别名归并) - 执行方:coding agent;验收:Claude
- 涉及文件:
frontend/src/lib/rectification-agentic/core/types.ts(SCORE_DELTA、STRONG_CONFLICT_ELIMINATION_COUNT不改,新增PROBE_WEIGHT)、core/apply-probe-outcome.ts(L70varga_style识别、directionFor)、core/build-state.ts(淘汰计数)、v9/method-followup.ts(L1142 的 ×0.8、无年份题在计划里的位置)、v9/decision-from-dossier.ts(nakshatraProbeIfFollowupCanAsk、discriminatorProbeIfFollowupCanAsk)、v9/skill-verification-report.ts(技法审计表)、v9/divergence-panel.ts(三列卡不动)、scripts/rectification/varga_style_calibration_report.py(新,离线测量)、skills/jyotish-birth-time-rectification/SKILL.md§5(一句口径) - BUG 编号起点:BUG-629(
docs/BUG_HISTORY.md当前最大 BUG-628) - 优先级:P1(产品 2026-09-09 拍板:无年月性格题的分辨力从未验证,不能与带年月题同权,也不能单独淘汰分钟)
1. 现状
| 题型 | 来源 | 现在的地位 |
|---|---|---|
| 婚恋风格(D9 上升星座 → 相处方式三选一) | varga_style,需有带年月感情事件锚点(BUG-559),排序分 ×0.8 |
与带年月题同样 ±2,冲突计入淘汰(3 次淘汰) |
| 做事风格(D10) | 同上,需事业事件锚点 | 同上 |
| 月宿边界两组性格 | nakshatra_boundary |
同上(只偏置窗口,但分值机制相同) |
| 其他分盘的无年份对照(D24/D12/D11/D7/D2/D4/D5) | yearless_ungrounded_contrast |
已丢弃,不问 |
分盘星座是确定计算;"星座 ↔ 性格"与"用户自评 ↔ 类型"两层从未在任何数据上验证。20 例公开集只测带年月事件的打分。真实用户案例里头两道题就是性格题,参与了把真实分钟排除的过程。
2. 决策记录(产品同意 2026-09-09)
- 只做平局裁决。 计划层:
varga_style与nakshatra_boundary题只在「可问的带年月区分题(dasha_boundary / dasha_activation / known_event_quality)为空」且「active 候选 ≥ 2 且未分开」时才成为next_followup;否则记dropped_probes(reason="yearless_deferred")。锚点要求(BUG-559)保留。 - 分值减半,不淘汰。 新增
PROBE_WEIGHT: { dated: 1, yearless: 0.5 };applyProbeOutcome对varga_style/nakshatra_boundary的 delta 乘 0.5(±1),且不递增strong_conflict_count(STRONG_CONFLICT_ELIMINATION_COUNT = 3不变,只有带年月题的 conflict 计数)。rounds.kind对这类题记tie_break。 - 报告与旁白标「参考」。 技法审计表里
D9 / D10 类型对照、月宿边界的 status 写reference,note"性格自评,只作排序参考,不参与淘汰";点选后旁白维持"已记录,范围…"。Skill §5 加一句:"性格类点选题只在带年月题问完仍分不开时出现,分值减半、不淘汰。"(bump 10.0.21,一句)。 - 三列对比卡的性格描述不动:那是"若是这一分钟你会怎样"的展示,不是证据;边界句已在。
- 离线测量。 新脚本
scripts/rectification/varga_style_calibration_report.py:输入一份由管理员从数据库导出的匿名 JSON(字段:case_id哈希、birth_time_source、记录分钟、每道varga_style/nakshatra答案的answer_class与该题各选项对应星座),只对birth_time_source = hospital_record且uncertainty ≤ 2 分钟的 Case,计算"用户所选选项的星座 == 记录分钟的分盘星座"的命中率,按 D9 / D10 / 月宿分组,输出 n 与命中率,不输出任何单人行。导出 SQL 写在docs/operations/varga-style-calibration-export.md,由产品负责人在有数据库权限的环境跑。命中率 ≈ 1/3(三选一)即随机,届时按产品决定删题。 - 不动
SCORE_DELTA数值、四选项合同(BUG-390)、采用/确认门、MIN_SEPARATION_LEAD、_relative_support。
3. 任务分解
- 3.1 决策 1:计划层排序与守卫;用例——存在可问的 2023.05 事业题时 D9 题不出;带年月题问完、剩 2 候选 → D9 题出;剩 1 候选 → 不出且
yearless_deferred记录。 - 3.2 决策 2:核心层权重;用例——D9 答 B:命中候选 +1、冲突候选 −1、
strong_conflict_count不变;三道性格题全冲突也不淘汰;带年月题行为与今天逐字节相同(rectification-probe-replay-loss-20260908.test.ts不改断言)。三栏:原值"±2、计淘汰"→ 新值"±1、不计"→ 决策 2。 - 3.3 决策 3:报告行 + Skill 10.0.21(快照、registry、
skill-registry.test.ts)。 - 3.4 决策 5:脚本 + 单元测试(合成 JSON:命中率 0.33 与 0.9 两组)+ 导出 SQL 文档。
- 3.5 记录:BUG-629(关联 BUG-559 锚点、BUG-560 校准、BUG-623 真实用户案例);
CHANGELOG.md;PROGRESS-…;docs/testing/rectification-scenarios-20260907.md加"性格题只在带年月题问完后出现;报告里标参考"。
4. 让步顺序
3.2 最先(一处改动即止损);3.1 必做;3.3 必做;3.4 可后置为 P2 但导出 SQL 文档不可省;3.5 不可省。
5. 开工前置命令
git fetch origin --prune
git worktree add -b codex/rectification-yearless-probe-downgrade-20260909 .worktrees/rectification-yearless-probe-downgrade-20260909 origin/staging
cd .worktrees/rectification-yearless-probe-downgrade-20260909
ln -s /workspace/Jyotisha/frontend/node_modules frontend/node_modules
ln -s /workspace/Jyotisha/.venv .venv
cd frontend && ./node_modules/.bin/tsc --noEmit; npm run lint 2>&1 | tail -1
ls tests/rectification-*.test.ts tests/skill-registry.test.ts | grep -v database | xargs npx tsx --test 2>&1 | grep -E "^# (tests|pass|fail)"