docs(tasks): implementation brief for varga-resolution (chart-type) rectification delivery (BUG-1115..1117 reserved)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
c2c5140d47
commit
f898df5505
@@ -258,6 +258,7 @@
|
||||
| `TASK-rectification-holdout-expansion-20260929.md` | `PROGRESS-rectification-holdout-expansion-20260929.md` | **开放评价集扩到 ≥60 例(v5)**:所有打分判定都在 20 例上做,1 例 = 5pp,KP / 精度闸 / V1n 的 no_benefit 都只差 1–3 例。只用 Rodden AA 公开名人,事件人工核对出处,分层(年代 / 纬度 / 南半球 / 跨午夜 / UTC+8),v4 不动;基线成绩单 v4 子集须与已发布数字逐格一致。研究单的判定以 v5 为准 | 已验收(Claude 09-29:77 例、v4 子集数字逐格一致、抽样 6 例来源一致、冻结文件零改动;UTC+8 5/6 为数据可得性缺口,接受;已合入 staging)→ 研究单判定可开工 | 分支 `codex/rectification-holdout-expansion-20260929`(BUG-1090) |
|
||||
| `TASK-rectification-scoring-research-20260929.md` | `PROGRESS-rectification-scoring-research-20260929.md` | **打分方法研究(离线)**:R-A 似然比校准权重(leave-one-case-out,KP / Pranapada / D60 作为特征由数据定权重、允许负权重)、R-B 缺席证据(口述时间线覆盖时段内的空白年扣分,必测漏说稳健性)、R-C 精度追问可行性(对已说事件追问月份,算在定向追问 2 条额度内)。判定必须在 v5 上做;有收益才立实现单并按 ERR-110 重冻结 | 已验收关单(Claude 09-30:v5 77 例三项全部不过硬红线 1,稳定特征 0 个;BUG-1091 closed_by_design;打分路线关闭,后续走产品口径「盘型选择」研究) | 分支 `codex/rectification-scoring-research-20260929`(BUG-1091 closed_by_design) |
|
||||
| `TASK-rectification-varga-resolution-research-20260930.md` | `PROGRESS-rectification-varga-resolution-research-20260930.md` | **「盘型口径」研究(离线)**:打分层关闭后,把校正目标从分钟改为分盘上升段。v5 实测:±10 六题后 D1 单一 75/77,D9/D10 ≤2 种 68/63,多数=真值 88%/84%;±30 起分盘分不开。M0 入库段扫描与区间脚本、M1 段级汇总与阈值-准确率(留一法)、M2 按段选题、M3 按问题域取盘 + 「不用校正」比例、M4 实现单要点。不改引擎 / 常数 / 冻结文件;红线:真值段不被排除 ≥ 现在真值在区间比例 | 已验收(Claude 09-30:M0–M3 + 稳健性完整执行,复跑逐字节一致,红线逐格核对;盘型口径成立——±10 D9/D10 头段=真值 88%/86%、占比≥0.6 留一法 92%/90%,±30 约 1/4–1/3 用户可信,±60 分盘 blocked;提前停不过门;「不用校正」只对 D1 成立。另一会话 08:49 部分归档 bedb4d7b 已被取代并移除)→ 实现单待写 | 分支 `codex/rectification-varga-resolution-research-20260930`(BUG-1105) |
|
||||
| `TASK-rectification-varga-resolution-20260930.md` | — | **「盘型口径」实现单**:交付改为「每张目标盘的上升 + 可信度档位」(≤±10:≥0.6 较可信 / 0.5–0.6 倾向 / <0.5 分不开;≤±30 只有较可信或分不开;>±30 只给 D1);按问题域取盘(婚恋 D1+D9 / 事业 D1+D10 / 综合三张);段扫描端点 + 「盘型一致不用校正」出口;按段选题仅 ≤±30;不得用占比提前停;采用落库头段交集中点。不改引擎 / 常数 / 冻结文件。红线:回放 ±10/±30 真值段保留 76/76、头段命中不低于研究「按段」列;段级汇总与研究 JSON golden 逐格一致 | 待领取 | — |
|
||||
| `TASK-rectification-typed-event-scoring-research-20260929.md` | `PROGRESS-rectification-typed-event-research-20260929.md` | **打字经历按选择题规则计分(离线研究,不上线)**:计分通道不对称 + 已入账年份挡题;R0 学业质量题措辞 / 年精度显示成 1 月(冻结文件,需重新冻结) | 已验收(Claude 2026-09-29 合并验收:全量前端 4302/24 与基线同 24 条环境失败、tsc 0、lint 0 error、`/` Static、gzip +0.16%、快速门 pytest 1001 passed、两份回放复跑一致),待部署核对 | BUG-1088、1089 |
|
||||
| `TASK-report-reader-polish-20260929.md` | `PROGRESS-report-reader-polish-20260929.md` | **报告页打磨**:生成入口挪进页面主体(删标题栏按钮)、详情页到底部按钮(懒渲染一次到底)、导出按钮带文字、目录一级/二级分层、去掉「字段」与 RL/NL 缩写表头、状态列同义重复去重、报告表格淡底色、分块导出显示真实文件大小 | Claude 直接执行并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +7 B、快速门 Python 1000 passed),已部署 staging `d7772011`,真机欠 | BUG-1092~1094 |
|
||||
| `TASK-report-english-edition-20260929.md` | `PROGRESS-report-english-edition-20260929.md` | **报告中英两版**:同一次引擎计算渲染 zh/en 两遍(不用模型翻译),瑜伽库 477 条补英文、模板与前端表头英文化;中文逐字节不变、英文零汉字、两版数字序列一致;阅读页 `?lang=en` 切换,导出当前语言 + 「问 AI 建议导出英文版」提示;旧报告不补英文 | Claude 直接执行(含两个 fork 子代理)并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.06%、Python 定向全绿),已部署 staging `d7772011`,真机欠 | — |
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# TASK · 生时校正「盘型口径」实现:以分盘上升段为目标交付(2026-09-30)
|
||||
|
||||
## 基线
|
||||
|
||||
- `origin/staging` @ `c2c5140d`(写作时 head;开工时以最新 `origin/staging` 为准)。
|
||||
- 分支 `codex/rectification-varga-resolution-20260930`,工作树 `.worktrees/rectification-varga-resolution-20260930`。
|
||||
- **前置**:研究单 `TASK-rectification-varga-resolution-research-20260930.md`(BUG-1105,已验收合入)。数字与实现要点见 `docs/research/rectification_varga_resolution_2026_09_30.md` §1、§7;研究脚本 `scripts/research/varga_resolution_probe.py` 是本单的验收回放器。
|
||||
- **串行**:本单改 `frontend/src/lib/rectification-agentic/{core,v9}/*`、`user-copy.ts`、`components/rectification-range-delivery.tsx`、`rectification-timeline.tsx`。同日报告 / 首页各单不重叠;若另有校正单开工,本单先合。
|
||||
- **冻结**:不动 `scripts/research/sealed_holdout_rerun.py::PRODUCTION_FILES` 的 10 个文件(含 `event_probes.py`、`decision_policy.py`、`candidate_contrast.py`、`refinement_packet.py`、`api_service.py`)、`active_rectification_event_engine.py`、任何打分常数(ERR-110)。新后端逻辑放**新文件**并从 `jyotish_api_server.py` 薄注册(§6 增长冻结)。
|
||||
|
||||
## 先读
|
||||
|
||||
- `docs/research/rectification_varga_resolution_2026_09_30.md`(全文,尤其 §1 出口表、§4 提前停不过门、§7 改 / 不改清单)
|
||||
- `docs/research/rectification_scoring_research_2026_09_29.md` §1(打分层为何关闭)
|
||||
- `docs/tasks/TASK-rectification-futile-collect-stop-20260929.md` D1–D4(门开只问点选卡、交付正文口径——本单沿用)
|
||||
- `frontend/docs/VOICE.md`、`frontend/DESIGN.md` 校正相关段
|
||||
|
||||
## 事故实证
|
||||
|
||||
产品 2026-09-29 真机:31 分钟窗答完题范围不动,「最可能的分钟」在 v5 上头名只有 64%;用户追问「那用户信息没用了?业务怎么成这样」。研究单在 77 例上量出:
|
||||
|
||||
| 窗口 | D1 头段 = 真值 | D9 / D10 头段 = 真值 | 占比 ≥ 0.6 留一法准确率 | 结论 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| ≤ ±10 | 76/77 | 88% / 86% | 92% / 90% | 分盘可分档给可信度 |
|
||||
| ±30 | 75/77 | 57% / 64% | 92–94%(约 1/4–1/3 用户达标) | 多数用户只能给 D1 |
|
||||
| ±60 | 69/77 | ≤ 47% | 真值段保留 74 < 基线 75 | 分盘 **blocked** |
|
||||
|
||||
同一题库按「段级信息增益」重排:≤ ±30 头段命中 +3~+7、宽度 −2、真值段保留不降;±60 更差。**提前停(占比达 0.7 / 0.8 即停)丢真值段,不过红线。** 「不用校正」只对只需 D1 的问题成立(±10 64/77),D9 / D10 为 0/77。
|
||||
|
||||
## 根因(产品层)
|
||||
|
||||
1. 目标函数是分钟:选题按分开候选分钟排序、交付按分钟区间与「最可能分钟」、并列按分钟数(`core/rectification-decision.ts`、`credible-range.ts::unionStillValidRange`、`user-copy.ts::deliveryTurnNarration`)。用户要的是「用哪张盘解读」。
|
||||
2. 不按问题域取盘:`ConversationFocus.domain`(`v9/tool-service.ts:155`)只用于采集,不决定目标分盘。
|
||||
3. 没有「分盘不可判」的诚实出口:±30 以上仍给分钟区间。
|
||||
4. 候选行已带 D1 / D9 / D10 层(`candidate_contrast.py:181` `signature`,`SIGNATURE_LAYERS = (d1, d9, d10, d24, d4, d12, md)`;`refinement_packet.py:198`),前端 `tool-service.ts` 行映射未解析,段级信息一直没被用。
|
||||
|
||||
## 决策记录(产品 2026-09-30)
|
||||
|
||||
- **D1 目标改为分盘上升段。** 交付物是「每张目标盘的上升星座 + 可信度档位」,分钟区间降为次要信息(仍展示,不再作主结论)。
|
||||
- **D2 按问题域取盘。** 婚恋 → D1 + D9;事业 → D1 + D10;综合 / 报告 / 未指明 → D1 + D9 + D10。D12 等其他分盘不作目标、不展示推荐。
|
||||
- **D3 可信度档位(研究单校准,raw 口径,头段占比 s)**:
|
||||
- 窗口 ≤ ±10(≤ 21 分钟):s ≥ 0.6「较可信」;0.5 ≤ s < 0.6「倾向,备选也要看」;s < 0.5「按现有信息分不开」。
|
||||
- 窗口 ≤ ±30:s ≥ 0.6「较可信」,否则「分不开」(不出「倾向」档)。
|
||||
- 窗口 > ±30:D9 / D10 一律不给推荐,文案「只能确定 D1 上升 X;分盘解读需要更准的出生时间」。
|
||||
- D1:头段 = 全窗唯一 → 「确定」;否则同上分档。
|
||||
- **D4 不得用占比提前停。** 出题与停止条件不变:训练门开后只问点选卡,`refreshExhausted` 即出卡(沿用 BUG-1084 D1)。占比只决定档位。
|
||||
- **D5 按段选题只在窗口 ≤ ±30 启用**;> ±30 沿用线上顺序。
|
||||
- **D6 「不用校正」出口**:只有当目标盘集合里每张盘在全窗都只有 1 种上升时才触发(实际只会发生在只需 D1 的问题上);触发时直接出「盘型一致,不用校正」卡,不进采集。
|
||||
- **D7 采用(adopt)落库分钟**:目标盘头段的交集中点;交集为空则按优先级 D1 > 领域盘 取头段中点;该分钟必须落在交付区间内,否则取区间内最近的分钟。采用 / 确认门、来源标签(BUG-690)不变。
|
||||
- **不改**:引擎、11 张计分分盘、`MIN_SEPARATION_LEAD`、45 天闸门、七条采集线、卡片 ±2 与三次淘汰、训练门、留一件对照、`event_probes.py` 出题。
|
||||
- **推翻**:`TASK-rectification-candidate-compare-columns`(交付卡一行三列定稿)与 `TASK-rectification-delivery-ui-simplify`(时间卡逐行直选)中以分钟为主的交付卡形态,本单起交付卡以盘型为主;分钟区间保留为折叠 / 次行。执行方在相关 BUG 防复发条下追加「2026-09-30 产品修订:见本任务书 D1」,不删原文。
|
||||
|
||||
## 硬红线
|
||||
|
||||
1. **回放红线**:实现后用 `scripts/research/varga_resolution_probe.py --stages m0,m1,m2` 对接生产段级汇总(T2 合同测试保证同口径),±10 / ±30 真值段保留 ≥ 76 / 76,头段 = 真值不低于研究文档 §4「按段」列(±10 D9 71 / D10 66;±30 D9 48 / D10 56);> ±30 交付卡不得出现 D9 / D10 推荐。任何一格变差即停,写 PROGRESS。
|
||||
2. **段级汇总与研究脚本逐格一致**:前端 `core/segment-summary.ts` 对 ≥ 10 个 v5 案例的 golden 输入(真实引擎候选行 + 六题后分数)输出的头段 / 占比 / 段数与 `docs/research/varga_resolution_research_2026_09_30.json` `m1.by_radius.*.raw.per_case` 逐格相等。fixture 必须来自真实引擎响应(§7.4)。
|
||||
3. 不放宽任何置信度边界;档位阈值只能取 D3 的值。
|
||||
4. 前端:`tsc --noEmit` 0 错、`npm run lint` 0 error、`npm test`(Node 22,`/exec-daemon/node`)失败清单与基线逐条一致、新增失败 0;`next build` 后 `/` 仍 Static、首屏 gzip ±2%;`page.tsx` 不增长;改既有断言写「原值 / 新值 / 原因」。
|
||||
5. Python:新端点模块有定向测试;`run_quality_gate.py --profile quick` 与基线逐条一致;`test_api_server_growth_contract.py` 绿;完整性门禁绿(冻结文件哈希不变)。
|
||||
6. Skill / Agent 提示文本改动按 CHANGELOG 规则 bump,bump 后验证旧校正会话仍能打开(BUG-621)。
|
||||
7. 隐私:fixture 只用 v5 公开名人或虚构盘;文档不写真机会话内容。
|
||||
|
||||
## 任务分解
|
||||
|
||||
- **T1 段扫描端点(BUG-1115,后端)**
|
||||
- 新文件 `scripts/rectification_varga_segments_api.py`:输入出生日期 / 地点 / 时区 / 窗口 / 目标盘集合,逐分钟算 D1 / D9 / D10 上升(复用 `domain_calculation_service.compute_chart` + `varga.calc_all_vargas`,口径同研究 lib),输出各盘段表(段起止分钟、星座、长度)与「全窗唯一」标志;结果按窗口键缓存到 `api_scratch`。`jyotish_api_server.py` 只加一处薄注册。
|
||||
- 验收:`tests/test_varga_segments_api.py`(跨午夜、±10/±30/±60、与 `varga_resolution_lib` 段切分逐分钟一致);api_server 行数不超 growth contract。
|
||||
- **T2 段级汇总(BUG-1116,前端)**
|
||||
- `tool-service.ts` 行映射解析 `signature` 的 d1 / d9 / d10(候选级,2 分钟步长);新增 `core/segment-summary.ts`:在 `buildInferenceState` 的分钟分数之上按段求和(raw:有效簇分数 ≥ 0、簇内均摊,与研究 lib 同算法),输出每张目标盘的段列表、头段、占比、剩余段数、真值段保留所需字段;`rectification-decision.ts` 的交付判断读取它给档位(D3),**不改**出卡时机(D4)。
|
||||
- 验收:硬红线 2 的 golden 合同测试;单测覆盖 D3 三档 × 三档窗口 × D1「确定」;并列(两段占比相等)按先出现段并标 tie。
|
||||
- **T3 按域取盘 + 「不用校正」出口(BUG-1116)**
|
||||
- `ConversationFocus.domain` → 目标盘集合(D2);录入 / 开案后调 T1,D6 成立时直接出「盘型一致」卡(新卡,走 `finalizeSuccessfulTurnExit` 单一写入方,不得再造第二条出口),并把该判定写进案例 `checks`。
|
||||
- 验收:表驱动测试七个领域 → 目标盘集合;D6 触发 / 不触发各一例;触发后不发采集题。
|
||||
- **T4 交付卡与采用卡(BUG-1117,前端 + 文案)**
|
||||
- `rectification-range-delivery.tsx`:主区按目标盘逐行「D9 上升:金牛(较可信 / 倾向 / 分不开),备选:白羊」;D1 行「确定」时不出备选;> ±30 只出 D1 行 + 一句诚实说明;分钟区间移到次行。`rectification-timeline.tsx` 的范围小字同步。
|
||||
- `user-copy.ts`:`deliveryTurnNarration` / `rangeDeliveryIndistinct` 改为盘型口径;删除「最可能的分钟」主句;Agent 提示(`frontend/src/mastra/agentic-rectification.ts`)第二句改为「用了 M 道选择题,D9 上升较可信是 X」类句式;`VOICE.md`、`DESIGN.md` 同提交。
|
||||
- 采用:按 D7 计算落库分钟;采用卡文案「改用 X 盘解读」;确认门不变。
|
||||
- 验收:文案合同测试断言交付气泡不含「最可能」「吻合率」「补一件」;三档窗口 × 三种取盘策略的快照测试;采用分钟落在交付区间内的断言。
|
||||
- **T5 按段选题(BUG-1116,前端,仅 ≤ ±30)**
|
||||
- 新模块对 `event_probes` 返回的题池按段级信息增益重排(算法同研究 lib:中性候选按 ½ / ½),只改顺序不改题;> ±30 不启用。
|
||||
- 验收:以 v5 golden 题池比对研究 JSON `m2` 的前六题顺序(≥ 10 例逐格一致);线上顺序回退开关(环境变量或 case 标志)。
|
||||
- **T6 记录与回放**
|
||||
- 回放:把生产段级汇总接到 `varga_resolution_probe.py`(`--posterior production` 之类开关,研究脚本可改),跑硬红线 1 六格,JSON 进 `docs/research/varga_resolution_impl_replay_2026_09_30.json`。
|
||||
- `CHANGELOG.md`(用户可感知:交付改为「用哪张盘」+ 可信度;窗口过宽时诚实说明);`docs/BUG_HISTORY.md` 三条;`docs/testing/rectification-varga-resolution-20260930.md` 真机清单(至少:±10 窗口婚恋问题 → D1 + D9 两行;±60 窗口 → 只有 D1 行;只需 D1 且全窗一种 → 「不用校正」卡;采用后报告页盘型与卡片一致;旧校正会话可打开);`docs/tasks/PROGRESS-rectification-varga-resolution-20260930.md`;`docs/tasks/README.md` 状态板。
|
||||
|
||||
## 让步顺序
|
||||
|
||||
T2 > T4 > T1 > T3 > T5 > T6 之外的截图。**T2 + T4 + 回放红线缺一不可合入**;T5 可延后(延后时 PROGRESS 写明,研究文档 §4 的收益不计入本单验收);T1 / T3 延后时「不用校正」出口不上线、目标盘按综合三张。
|
||||
|
||||
## 开工前置命令
|
||||
|
||||
```bash
|
||||
git fetch origin --prune
|
||||
export PATH=/exec-daemon:$PATH && node -v # 22.x
|
||||
git worktree add -b codex/rectification-varga-resolution-20260930 .worktrees/rectification-varga-resolution-20260930 origin/staging
|
||||
cd .worktrees/rectification-varga-resolution-20260930/frontend && npm ci && ./node_modules/.bin/tsc --noEmit && npm run lint && npm test 2>&1 | tee /tmp/varga-impl-baseline.log
|
||||
cd .. && export PYTHONHASHSEED=0 && python3 scripts/run_quality_gate.py --profile quick 2>&1 | tee /tmp/varga-impl-quick-baseline.log
|
||||
python3 scripts/research/varga_resolution_probe.py --help
|
||||
```
|
||||
|
||||
## BUG 编号
|
||||
|
||||
开工时核对 `docs/BUG_HISTORY.md` 最大号(写作时 `BUG-1105`;`1106`–`1114` 已被其他任务书预留)。本单:**BUG-1115**(段扫描端点 / 「不用校正」出口缺失)、**BUG-1116**(段级汇总、按域取盘、按段选题——目标函数是分钟)、**BUG-1117**(交付卡与采用卡以分钟为主、±30 以上无诚实出口)。号冲突顺延并在 PROGRESS 说明。关联 BUG-1084、BUG-1090、BUG-1091、BUG-1105。
|
||||
Reference in New Issue
Block a user