Files
Jyotisha/skills/jyotish-birth-time-rectification/references/candidate-comparison.md
T
Jesse_ChenandClaude Opus 5 6df40c322c
Independent Staging Quality Gate / validate (push) Canceled after 3m23s
Independent Staging Quality Gate / publish (push) Canceled after 0s
fix(rectification): 记录与校正区间冲突时记录优先、分歧并列(BUG-691)
医院记录那一分钟落在校正区间外时,交付卡以前只说一句「相差 N 分钟」:
没说默认按哪个时间排盘,采用按钮也仍写中性的「更像这个」,用户看不出
点下去会把之后的排盘换成另一分钟。

产品负责人 2026-09-14 拍板「记录优先,分歧如实呈现」:

- 冲突文案补满三层——默认仍按出生记录时间排盘、经历指向另一段时间相差
  N 分钟、两条路都可以走。
- 冲突态采用按钮改「改用校正结果」,按钮下按列写明
  「选它之后,排盘会从出生记录时间 hh:mm 换成 hh:mm」。
- 新增 FORBIDDEN_RECORD_VERDICT_PHRASE 锁住 D4:不得宣布记录不准,
  也不得宣布校正结果无效。

只改文案层与采用入口措辞。打分、判据、采用 RPC、置信度与确认门控、
数据库一律未动;不新增入口、不加确认弹窗;记录落在范围内或来源是
「大概时间 / 时间段」时卡片与今天完全一致。Skill 未 bump,只补
references §6.1。

验收:tsc 0 错;lint 0 error;npm test 3335 项 fail 31,失败清单与基线
37e6c519 逐条一致(全部是无 Docker / 无外网的既有环境缺口);next build
通过且 / 仍 ○ Static;首屏 chunks gzip +269 B(+0.019%)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
2026-09-16 02:02:03 +00:00

8.2 KiB
Raw Blame History

Candidate Comparison(V9)

候选比较是服务器计算产物,Agent 只负责解释与引导,不负责产生候选、分数或范围。

1. 三层语义

层 含义 表达
candidate 引擎对当前证据的归一化比较结果 “当前候选”“相对支持度”
accepted 用户明确选择的当前排盘时间 “校正采用时间”
confirmed 通过服务器确认门且用户明确同意 “已确认校正时间”
  • candidate_accepted 不是“唯一出生分钟已确认”,默认仍可继续补充证据。
  • accepted 后用户仍可在同一批有效候选中改选(幂等 RPC 支持)。
  • confirmed 只能由服务器确认门 + 用户明确同意触发,同时写 completed_at。

2. 何时提供候选

  • 只有本轮完成 rectification-offer-candidates 且返回 selection_allowed=true 时,界面才展示候选卡。
  • selection_allowed 只表示可以采用代表性时间,不是本轮必须出示卡片。提出门看 latest_result.propose_allowed,并且没有挡住出牌的 method_followup_plan.next_followup(占问和精度阶段追问不挡;职业挡出牌)。唯一领先和宽度≤5只挡确认门。
  • next_user_action.id=adopt_representative,或用户停止且 on_user_stop 为 adopt 时,本轮才 offer/accept。服务器会拒绝访谈未停的 offer。这是采用代表性时间,不是 confirmed。
  • 继续收集证据时不得边追问边提供采用。
  • 候选卡内容来自持久化 Candidate Snapshot(agentic_rectification_results),不是 Agent 文本解析。
  • 候选卡按一行至多三列并排:每列一个候选分钟,写相对可能性、性格处事、经历对照、往后 12 个月事件窗;「更像这个」即采用。不预标「排盘用」。Agent 正文在出牌轮不得复述八法表格或 Technique Audit。

3. 表达边界

  • 相对支持度是候选间归一化比较,不是概率、统计置信度或确定性。卡片上的「相对可能性」是答题后的后验百分比,同样不是引擎置信度。80%/60% 只描述事件吻合率。
  • 出牌轮正文不写事件–Dasha–Gochara 表、D9/D10 类型对照和技法审计;那些只出现在折叠的验证报告里。不暴露隐藏分钟证据或把分数说成唯一分钟概率。分盘上升只抄 skill_verification_report.sign_by_candidate,不得自行按换升时刻推算。
  • 候选范围必须说明“待核对边界”,不得表述为已确认出生分钟。
  • 外部验证状态按服务器字面读取:not_evaluated 表示未调用(入口门未就绪),不是“调用了但失败”。

4. 证据变化与重算

  • 证据有效变化时由服务器重算候选;Agent 不必等用户说“没有更多了”才 compare。
  • 相同 evidence 指纹 + 引擎版本复用缓存;不要对同一指纹再 compare。
  • 分钟窗口扫描只在服务端,结果进入候选卡 / 不可分平台语言。不得把若干事件说成已确定到 ±5 分钟。
  • 普通澄清轮若不改变账本指纹,不重复播报。
  • 出生资料基线变化 → needs_rebaseline,旧候选失效;不得静默继续用旧结果。
  • needs_rebaseline 下不引用旧候选、不提供采用。

5. 不可分平台与确认门(必须说出来)

服务器 latest_result 含 confirmation_gate、engine_indistinguishable_width_minutes、confirmation_allowed、selection_allowed 与 margin_percent(若有)。confirmation_gate 是确认门权威,不是让 Agent 另算一分钟。折叠验证报告的宽度、双轨、分盘星座只抄 skill_verification_report(width_minutes / dasha_agreement / sign_by_candidate),不得用引擎原跨度或已淘汰分钟。Agent 正文不得再写这些表。

  • 宽度大于 maxConfirmationWidthMinutes(5),或 top 候选 tied_minute_count > 1,或 confirmation_allowed=false 时:正文必须说这是一段不可分区间,必须把代表分钟说成代表性候选,不得说已定位到唯一分钟,也不得学本地扫分钟后的 1 分钟尖峰。
  • vedastro_minute_sensitive 为 not_evaluated 表示官方分钟敏感校验尚未跑通,不是 fail;缺它不能写 confirmed。
  • 若官方分钟层已 passed 但 public_aa_holdout 为 not_ready:可以说已区分相邻分钟,仍不得确认唯一分钟或发布准确率。
  • public_aa_holdout 为 not_ready 时不得声称已校准到精确分钟,也不得把确认门放到更细宽度或发布准确率。
  • 用户仍可 accepted 代表性候选;accepted ≠ confirmed。session_outcome=adopt_representative 时自然说明代表性候选可用于当前排盘、但不是已确认的唯一出生分钟,不要使用固定收口句式。unique_minute_path=closed_at_representative 时不得把确认当下一步。
  • confirmation_allowed=true 才允许进入唯一分钟确认门;平台结果禁止把 confirmation_allowed 说成已确认。
  • 候选卡仍可展示代表性时间;Agent 不得把该时间写成“已校正到 HH:MM”。

6. 出生时间来源标签

服务器 Dossier / GET 快照的 birth_time_source(缺省按 approximate)决定任何指代「用户报上来的那个时间」的措辞。打分与搜索窗中心仍用 reported_birth_time,本规则只约束表达。

来源 可称 不得称
hospital_record 「你的出生记录时间」 「已确认的出生分钟」
approximate(含存量 family_exact) 「你填的大概时间」「家人记得的时间」 「你的出生时间」
period_only 「你给的时间段」 「你的出生时间」;不得逼用户补一个钟点

校正产物自己的标签不变:交付区间是目前范围(rectified_window),代表分钟是代表性候选(representative_time),采用之后是校正采用时间(accepted)。不得把代表分钟说成已确认的出生分钟。

与填报时间比较时:hospital_record 可写「出生记录时间 HH:MM」并如实给出与目前范围的差值,不给「以记录为准 / 以证据为准」的倾向;其余来源只写「与你填的大概时间相差 N 分钟」。

6.1 记录与目前范围冲突(hospital_record 落在范围外)

产品负责人 2026-09-14 拍板:记录优先,分歧如实呈现。 依据两条:封存 20 例上六题后头名簇命中率是 0.80 / 0.55 / 0.35(±10 / ±30 / ±60 分钟窗,见 docs/research/cluster_width_2026_09_14.md),宽窗里有一半以上概率排错头名,证据强度撑不起推翻书面记录;但医院记录确实会错(事后补记、四舍五入到 5 分钟整、家属转述),所以也不能反过来宣布校正结果无效。

  • D1 默认仍按出生记录时间排盘。 这是既有行为——采用是用户主动动作,不采用就继续用填报时间。本节只要求把它说出来,不改行为。
  • D2 冲突时校正区间是「证据倾向」,措辞写满三层: ①默认还是按你的出生记录时间排盘;②这些经历指向的是另一段时间,相差 N 分钟;③你可以改用校正结果,也可以继续用记录。
  • D3 采用入口改措辞: 不写「采用」,写「改用校正结果」,并在动手的地方再说一次「之后的排盘会从出生记录时间 HH:MM 换成 HH:MM」。仍是同一个采用按钮,不新增入口、不加确认弹窗。
  • D4 不得宣布任何一方无效。 禁止「你的出生记录错了 / 记录不准 / 以证据为准」,也禁止「校正结果无效 / 不作数」。只陈述差值与各自依据。

记录落在目前范围内时不适用本节:仍写「出生记录时间 HH:MM,落在目前范围内」,采用入口措辞不变。采用在冲突态下仍然只是校正采用时间,不是已确认的唯一出生分钟。

7. 保存边界

  • accepted 写入 active_birth_time,保留 reported_birth_time 原填报,不写兼容 birth_time。
  • 采用后界面按采用分钟重算本命宫位表,并折叠展示本轮技法审计。这不是唯一分钟确认,也不自动进入咨询 Agent。
  • confirmed 同样保留原填报;不自动写入,需要用户明确同意。
  • 失败、空流、Skill 未加载或未完成必要工具链时不保存、不扣费。