fix(rectification): downgrade yearless personality probes to tie-breakers (BUG-629)
Independent Staging Quality Gate / validate (push) Successful in 11m54s
Independent Staging Quality Gate / publish (push) Successful in 8m14s

Ask dated dasha probes first; D9/D10 and nakshatra wait until that pool is empty, score at half weight, and never eliminate. Skill 10.0.21.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-10 00:26:58 +08:00
co-authored by Cursor
parent eb8a3120e5
commit fef54b6e42
41 changed files with 1452 additions and 70 deletions
@@ -0,0 +1,54 @@
# PROGRESS · 无年月性格题降级(2026-09-09
工作树:`.worktrees/rectification-yearless-probe-downgrade-20260909`
分支:`codex/rectification-yearless-probe-downgrade-20260909`
任务书:`docs/tasks/TASK-rectification-yearless-probe-downgrade-20260909.md`
基线:任务书写 `4eea9c10`;开工时接到 `origin/staging` @ `eb8a3120`(家庭合同 BUG-630 已在其上)。本单不依赖 BUG-626~628,不碰 `holdoutFollowupFor` / 领域别名。
## 开工回执
- 编号 **BUG-629**`docs/BUG_HISTORY.md` 当时最大已发布号是 628;630 是同日另一条家庭合同,本单不占用)。
- 顺序:3.2 权重 → 3.1 计划层 → 3.3 报告/Skill 10.0.21 → 3.4 离线脚本 → 3.5 记录。
## 已完成
- **3.2**`PROBE_WEIGHT = { dated: 1, yearless: 0.5 }``applyProbeOutcome``varga_style``source=nakshatra_boundary` 乘 0.5、不递增 `strong_conflict_count``kind=tie_break``SCORE_DELTA` 数值未改。不确定答仍是 `low_information``asInferenceState``ROUND_KINDS` 补上 `tie_break`,否则答过性格题的 `inference_state` 整份被解析丢掉(审计列 CHECK 仍只认 `informative` / `low_information``tie_break` 只活在 JSON)。
- **3.1**`varga_style` 退出带年月锁定期桶,进入 `personality`。可问的 `dasha_boundary` / `dasha_activation` 仍在时,性格题 `yearless_deferred`。带年月题空且 ≥2 个未分开候选才问。1 个候选或已分开则不问。锚点(BUG-559)保留。`decideFromDossier` 把真实分离状态传进计划层,不再写死 `false`
- **3.3**:技法审计表 `D9 / D10 类型对照``月宿边界``reference`,说明「性格自评,只作排序参考,不参与淘汰」。Skill **10.0.21**live + `versions/10.0.21`sha256 `3ced107366b2c4b0f26bae81440162032501f77a8d762d42c84a20fa394ea807`)。§5 一句:「性格类点选题只在带年月题问完仍分不开时出现,分值减半、不淘汰。」三列卡性格描述未改。未改 `frontend/DESIGN.md`(无视觉改动)。
- **3.4**`scripts/rectification/varga_style_calibration_report.py` 只对医院记录且不确定度 ≤2 分钟聚合命中率。导出 SQL:`docs/operations/varga-style-calibration-export.md`(产品跑;本环境无库)。
- **3.5**BUG-629、CHANGELOG、走查 `docs/testing/rectification-scenarios-20260907.md` 第 0 条与第 8 条。任务板「待验收」。
## 三栏(既有断言)
| 位置 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| 性格题分值 / 淘汰 | ±2、计 `strong_conflict_count` | ±1、不计 | 任务书决策 2 |
| `rectification-varga-style-weight.test.ts` 两组/三组绝对 delta | 2 与 `[2,2,2]` | 1 与 `[1,1,1]` | 决策 2 |
| 同上 B 选项三次弱是 | 计 3 次冲突并淘汰 | 计数 0、不淘汰 | 决策 2 |
| Skill 当前钉 | 10.0.20 | 10.0.21 | 任务书决策 3 |
| `rectification-eight-method.test.ts` 绑定 D9 探针 | next 是 `varga.d9`,压过 `relationship.2021` | next 是 `relationship.2021.dasha_activation`D9 `yearless_deferred` | 决策 1 |
| 同上 D10 增益 3.1 vs `career.2018` | next 是 `varga.d10` | next 是 `career.2018.dasha_activation`D10 `yearless_deferred` | 决策 1 |
| `rectification-probe-replay-loss-20260908.test.ts` | 未改 | 未改 | 任务书:带年月题逐字节不变 |
## 验收命令(实测)
工作树 `codex/rectification-yearless-probe-downgrade-20260909`,相对 `origin/staging` @ `eb8a3120`
| 命令 | 结果 |
| --- | --- |
| `frontend` `./node_modules/.bin/tsc --noEmit` | 0 错 |
| `npm run lint` | **0 error**108 warning(与门禁口径一致,未顺手改) |
| `ls tests/rectification-*.test.ts tests/skill-registry.test.ts \| grep -v database \| xargs npx tsx --test` | **1087 tests / 1087 pass / 0 fail**(开工基线同 glob 为 1086;本单新增 `asInferenceState` 性格轮回放 1 条) |
| `.venv/bin/python -m pytest tests/test_varga_style_calibration_report.py` | 通过 |
| `next build` | 未跑(本机耗时长;无 Docker。首页 Static / gzip 留给验收) |
## 环境缺口
- 无 Docker:未跑 `npm run test:db`、未应用迁移(本单无表结构改动;`round_kind` 列 CHECK 仍是 `informative` / `low_information`)。
- 无登录态、无 Chrome`docs/testing/rectification-scenarios-20260907.md` 第 0 条真人走查未做。
- 无生产/预发库:校准导出 SQL 未跑,命中率数字未测。
## 未做
- 未 commit、未 push、未提升 `main`
- 未改 `SCORE_DELTA`、四选项合同、采用/确认门、`MIN_SEPARATION_LEAD`、三列性格描述。
+1 -1
View File
@@ -92,7 +92,7 @@
| `TASK-rectification-window-cluster-cap-20260909.md` | `PROGRESS-rectification-window-cluster-cap-20260909.md` | **P0** 真实用户:一小时窗口分 17 个签名簇,`select_signature_representatives` 按时间取前 12 个,14:40 之后整簇丢弃(本机复现表);区间按代表分钟跨度而非簇覆盖;中途说出真实时段时助手口头答应却未改 → 改为固定回复"范围开始时按资料定、中途不改"(产品否决口头改范围);intake 自定义范围等产品答复 | 待验收 | `codex/rectification-window-cluster-cap-20260909`BUG-623625Skill 10.0.20);走查 `docs/testing/rectification-window-cluster-cap-20260909.md` |
| `TASK-rectification-skipped-health-deadend-20260909.md` | `PROGRESS-rectification-skipped-health-deadend-20260909.md` | 真实用户:健康题「记不清」后职业答完即断(『没有拿到下一个问题』):holdout 的 `declined` 未归并 health/health_pressure,把跳过的健康线再问一次,撞同 id 焦点 `duplicate_focus` 静默;出口闸门把 `exhausted` 当已交付不修复;『重新加载』只重取快照 | 待执行 | `codex/rectification-skipped-health-deadend-20260909`BUG-626627 |
| `TASK-rectification-domain-alias-audit-20260909.md` | `PROGRESS-rectification-domain-alias-audit-20260909.md` | 领域命名审计:健康线 `health`(账本/焦点)与 `health_pressure`(计划/引擎)在十处比较里六处未归并(holdout declined、reverse-verify、conflict probes、probeYearAlreadyCovered、引擎 oos_blind_prompts / _event_years / volunteered);职业线焦点存为 `other` 只靠 questionId 兜底。其余六领域三层同名无问题。决策:TS/Python 各一个归并函数 + 源码合同禁字面量比较 | 待执行 | `codex/rectification-domain-alias-audit-20260909`BUG-628 |
| `TASK-rectification-yearless-probe-downgrade-20260909.md` | `PROGRESS-rectification-yearless-probe-downgrade-20260909.md` | 产品拍板:无年月性格题(D9/D10 风格、月宿边界)降级为平局裁决——带年月题问完且候选仍分不开才问,分值减半(±1)、不计淘汰,报告标「参考」;三列卡性格描述不动;新增离线命中率测量脚本 + 导出 SQL(有出生证用户,聚合);Skill 10.0.21 | 待执行 | `codex/rectification-yearless-probe-downgrade-20260909`BUG-629 |
| `TASK-rectification-yearless-probe-downgrade-20260909.md` | `PROGRESS-rectification-yearless-probe-downgrade-20260909.md` | 产品拍板:无年月性格题(D9/D10 风格、月宿边界)降级为平局裁决——带年月题问完且候选仍分不开才问,分值减半(±1)、不计淘汰,报告标「参考」;三列卡性格描述不动;新增离线命中率测量脚本 + 导出 SQL(有出生证用户,聚合);Skill 10.0.21 | 待验收 | `codex/rectification-yearless-probe-downgrade-20260909`BUG-629 |
### 聊天主链路与首页