docs(consult): accept the full-source card and open the career-type residual brief
Independent Staging Quality Gate / validate (push) Failing after 16m54s
Independent Staging Quality Gate / publish (push) Skipped

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-10-09 14:08:57 +08:00
co-authored by Claude Opus 5.5
parent fc3a2e680d
commit cd625e8a35
5 changed files with 123 additions and 26 deletions
+53 -21
View File
@@ -17330,7 +17330,7 @@
## BUG-1293 | 对话数据卡自己拼了一套数,没有综合判断表
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-07 / 2026-10-09
- 来源:产品反馈对话「只看本命盘或 D10」;任务书 `TASK-consult-card-full-source-20261007`。
- 影响面:普通对话证据卡的领域段。旧的基础投影仍在,避免首轮回答的字段名变化。新的权威数字是领域段上的综合判断表。
@@ -17342,11 +17342,11 @@
- 防复发:上述测试;事实 JSON 若含 `tajika_named_yogas` 直接拒绝(对话年运仍读 `tajika_yogas`,BUG-1282)。
- 相关记录:BUG-1160、BUG-1161、BUG-1221、BUG-1282。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1294 | 对话卡外补取每轮只能 1 次
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-07 / 2026-10-09
- 来源:产品 2026-10-08 确认把卡外补取上限从 1 改为 3。
- 影响面:`read-consultation-evidence`。第 4 次仍拒绝。KP 补取仍带参考说明,不作结论。
@@ -17358,11 +17358,11 @@
- 防复发:该测试锁上限 3 与第四次拒绝。
- 相关记录:BUG-1293、BUG-1256。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1295 | 对话进一步阅读指向 oracle 与治理文件
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-07 / 2026-10-09
- 来源:任务书 T5。产品确认 `further_reading` 改为按领域的技法资料目录。
- 影响面:普通对话工具结果里的 `methodology.further_reading`。不接书籍语料,不做每轮联网。
@@ -17374,11 +17374,11 @@
- 防复发:该测试。
- 相关记录:BUG-1293。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1296 | 对话资料包缓存键没有参照日期
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:修复单 F1。Claude 验收:缓存键不含日期,后一次命中把当前大运、行运和年盘冻在第一次计算的那天。
- 影响面:普通对话使用的完整资料包缓存。同一张盘隔天再问,可能仍用第一天的当前大运。
@@ -17390,11 +17390,11 @@
- 防复发:上述测试。重复跑之前先删掉这两把自己的缓存文件,避免上次留下的文件被当成命中。
- 相关记录:BUG-1251。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1297 | 送给模型的判断表带上内部路径,整卡超过两万字符
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:修复单 F2。Claude 验收:乔布斯事业卡由真实事实端到端组出后为 37,507 字符,判断表 27,159,参与清单 5,447。每格带有 status、path、check、value,内部路径进了模型。
- 影响面:普通对话送给模型的证据卡。服务端副本仍保留路径,供核对。
@@ -17406,11 +17406,11 @@
- 防复发:该测试。手写事实的组装测试只锁组装规则,并在注释里写明它不代替金样。
- 相关记录:BUG-1160、BUG-1161、BUG-1221。临时上限仍是卡 20,000、卡加清单 26,000。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1298 | 十二个领域的行星相位整列记成 blocked
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:修复单 F3。Claude 验收:参与层因为路由器没有把行星相位列成一层,十二个领域都是 blocked。
- 影响面:普通对话判断表的「照」。不新造罗睺、计都向外的相位。
@@ -17422,11 +17422,11 @@
- 防复发:`tests/test_consult_card_full_source.py` 的公开盘测试。
- 相关记录:BUG-1155。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1299 | 对话卡合同测试用手工事实,不是引擎金样
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:修复单 F4。合同测试的形状必须来自真实引擎。
- 影响面:`frontend/tests/consult-card-full-source-20261007.test.ts`。手写组装测试保留,只锁组装规则。
@@ -17438,11 +17438,11 @@
- 防复发:测试直接读这份金样。重新生成用上面的命令,不手改数字。
- 相关记录:BUG-1297。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1300 | 新建或修改星盘后没有预热对话资料包
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:修复单 F5。前序任务书要求星盘建好或出生资料改过之后,后台预热当天的资料包。
- 影响面:星盘新建、星盘修改、本人出生资料保存。保存响应不等待计算。
@@ -17454,11 +17454,11 @@
- 防复发:上述两个测试。lint 对该测试 0 error。
- 相关记录:BUG-1251、BUG-1296。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1301 | 事业判断表的代表星被读成职业类型
- 状态:investigating(分支 `codex/consult-card-full-source-20261007`,清单已加一条,回测仍有 1 次;未推送、未合入、未部署)
- 状态:mitigated(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;回测严重冲突回到 1,与合入前 staging 相同;剩余 1 次转 BUG-1303)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:修复单 G1。前一轮生平回测严重冲突 1 → 3,新增的两次都是同一位公开球星的事业题。
- 影响面:普通咨询的事业回答。判断表仍保留代表星、旺弱和功能吉凶,没有删行,也没有改取值。
@@ -17467,14 +17467,14 @@
- 根因:既有「不猜行业、问用户」没有写明这些代表星只能看力量和受冲。模型用星的本性补上了职业类型。
- 修复:事业清单加一条,不进系统提示。本轮回测严重冲突 3 → 1,对照组误报仍是 0。齐达内事业两次里仍有一次按星性写方向,所以这条不标 resolved。
- 验证:`frontend/tests/consult-condensed-checklist-20260927.test.ts` 锁住这句,并锁住系统提示源码切片仍是 15,291 字符。生平回测 72 份、失败 0。阅读评分见 `docs/tasks/PROGRESS-consult-card-full-source-fix2-20261009.md`。
- 防复发:上述测试。合入仍要求严重冲突 ≤ 1,且齐达内事业两次都不再按星性写职业类型。
- 防复发:上述测试。产品 2026-10-09 按「严重冲突 ≤ 1」放行合入;齐达内事业第 2 次仍按星性写方向,与合入前 staging 的泰勒事业第 2 次同属行业类型冲突,另立 `TASK-consult-career-type-residual-20261009.md`(BUG-1303)。
- 相关记录:BUG-1176。
- 复发自:无。产品 2026-10-03「不猜行业、问用户」没有拦住判断表上的星性。
- 修复版本:清单已写进本分支。回测未达标。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1302 | 保存后的预热占用重计算名额
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,本地未推送、未合入、未部署;有针对性回归测试)
- 状态:resolved(分支 `codex/consult-card-full-source-20261007`,已快进合入 staging;有针对性回归测试)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:修复单 G2。
- 影响面:星盘保存成功后的后台预热,以及紧接着的用户提问。保存响应本身仍然不等待预热。
@@ -17486,4 +17486,36 @@
- 防复发:上述并发测试。
- 相关记录:BUG-1300。
- 复发自:无。
- 修复版本:本分支提交。未部署。
- 修复版本:本分支提交,2026-10-09 快进合入 staging。
## BUG-1303 | 事业题仍偶发按星性写方向(BUG-1301 残余)
- 状态:investigating(待 `TASK-consult-career-type-residual-20261009.md`)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:BUG-1301 修复后的生平回测。
- 影响面:普通咨询事业回答。
- 现象:18 份事业回答中 1 份把方向写成「知识、表达、信息和资源」一类,与公开人物的实际职业类型不符。
- 触发条件:判断表多处点名同一颗代表星;模型抽样波动。
- 根因:待查。初判是清单只禁止推断、没有规定「方向」一节写什么。
- 修复:待做。
- 验证:待做。
- 防复发:待做。
- 相关记录:BUG-1301、BUG-1176。
- 复发自:BUG-1301(残余,非新问题)。
- 修复版本:无。
## BUG-1304 | 保存后马上提问,预热与用户请求重复计算同一份资料包
- 状态:investigating(待 `TASK-consult-career-type-residual-20261009.md`)
- 首次发现 / 最近更新:2026-10-09 / 2026-10-09
- 来源:Claude 验收 BUG-1302 时读代码发现。
- 影响面:保存星盘后立刻提问的第一轮等待时长与服务器 CPU。不会因此返回 429。
- 现象:同一张盘同一天的资料包可能被并行算两次;多次保存时预热无上限并行。
- 触发条件:预热未完成时同一张盘的提问到达,或短时间多次保存。
- 根因:`get_or_build` 没有按缓存键单飞;预热跳过重计算名额后没有自己的上限。
- 修复:待做。
- 验证:待做。
- 防复发:待做。
- 相关记录:BUG-1300、BUG-1302。
- 复发自:无。
- 修复版本:无。
@@ -1,6 +1,6 @@
# PROGRESS · 对话卡同源第二轮修复(2026-10-09)
分支 `codex/consult-card-full-source-20261007`。已 rebase 到 `origin/staging` `8bb7ff93`。状态:执行中。G3 未通过。未推送,未合入,未上线。
分支 `codex/consult-card-full-source-20261007`。已 rebase 到 `origin/staging` `8bb7ff93`。状态:已验收(Claude,2026-10-09)。产品按严重冲突 ≤ 1 放行,快进合入 staging;剩余 1 次见 `TASK-consult-career-type-residual-20261009.md`。
## 结论
@@ -51,3 +51,17 @@
| 快速门、Python 全量、npm test 全量、next build、Linux | 本轮没跑。不把上一轮 Windows 快速门当成通过。 |
G4 未完成。G3 未过,状态保持执行中。
## Claude 验收(2026-10-09,Linux,`fc3a2e68`)
| 项 | 结果 |
| --- | --- |
| Python 全量 | 失败 62 条,与上一轮基线逐名相同 |
| 快速门(`--skip-yoga-logic --skip-frontend-runtime`) | 通过 |
| `npm test`(Node 22) | 4,998 条 / 失败 24,与基线逐名相同;新增 1 条,无消失 |
| tsc / lint | 0 / 0 error(125 warning 原有) |
| `next build --webpack` | `/` 仍 ○ Static |
| G1 / G2 | 通过。G2 的预热分支不经 Next 对外暴露(5200 只在内网) |
| G3 | 严重冲突 1 = 合入前 staging 的 1,达到产品合入线;任务书附加的「齐达内两次都不按星性」未达成,产品选择合入后另开单 |
遗留(写入 `TASK-consult-career-type-residual-20261009.md`):保存后马上提问时,预热与用户请求会各自完整算一遍同一份资料包(缓存没有按键单飞);预热本身也没有自己的并发上限。
+2 -1
View File
@@ -131,7 +131,8 @@
| --- | --- | --- | --- | --- |
| `TASK-consult-card-full-source-20261007.md` | `PROGRESS-consult-card-full-source-20261007.md` | **对话数据卡与报告同源 + 领域综合判断表**:事业卡只有约 7,600 字符、无自然代表星、无大运主星关系、D10 联动只能补取、补取上限 1;全 12 领域;综合判断表、参与清单(不止 D1/D9,含精度闸)、补取 3 次、资料目录均已确认;KP 不上卡、不联网、不接书籍语料;排在 sync6 与报告单之后 | 验收未通过(`35dafd1e`,见 fix-20261009) | `codex/consult-card-full-source-20261007` |
| `TASK-consult-card-full-source-fix-20261009.md` | `PROGRESS-consult-card-full-source-fix-20261009.md` | **对话卡同源修复**:缓存键无日期致当前大运冻结、整卡 37.5K(每格带内部路径)、星照整列 blocked(资料库其实有出处)、前端测试手写数据、无预热;合入前用临时 key 跑模型 A/B 与生平回测 | F1–F5 已验收,F6 未过(见 fix2) | `codex/consult-card-full-source-20261007` |
| `TASK-consult-card-full-source-fix2-20261009.md` | `PROGRESS-consult-card-full-source-fix2-20261009.md` | **对话卡同源第二轮**:齐达内事业被「水星=说写算」带偏致严重冲突 1→3;事业清单加「代表星只看力量受冲、不按星性猜职业」后重跑回测(≤1 才合入);预热改为不占重计算名额 | 执行中(G3:齐达内事业仍有 1 次按星性写方向,未让步) | `codex/consult-card-full-source-20261007` |
| `TASK-consult-card-full-source-fix2-20261009.md` | `PROGRESS-consult-card-full-source-fix2-20261009.md` | **对话卡同源第二轮**:齐达内事业被「水星=说写算」带偏致严重冲突 1→3;事业清单加「代表星只看力量受冲、不按星性猜职业」后重跑回测(≤1 才合入);预热改为不占重计算名额 | 已验收并快进合入 staging(2026-10-09,产品按严重冲突 ≤ 1 放行;剩余 1 次见 career-type-residual) | `codex/consult-card-full-source-20261007` |
| `TASK-consult-career-type-residual-20261009.md` | — | **事业题按星性写方向的残余 + 预热单飞**:回测仍有 1 次(齐达内事业第 2 次;合入前 staging 是泰勒事业第 2 次);保存后马上提问时预热与用户请求并行重复算同一份资料包 | 待领取 | — |
| — (产品 09-27 拍板 D1–D4,直接执行) | [PROGRESS](PROGRESS-home-landing-blank-20260927.md) | **登录后 / 裸 `/` 落空白首页**:真机登录后在「首页」提问其实问进了上一次生时校正。删登录返回存根(401 / 次级页链接写、登录后写回 `?c=` 打开),裸 `/` 不再落最近会话,一律当前人物的空白首页(复用空草稿);`?c=` / `?new=1` / 对话内刷新不变;推翻 BUG-1038 存根与 BUG-599 默认落点 | 已验收(真机欠) | `codex/home-landing-blank-20260927`(BUG-1052,本地未推) |
| — (产品 09-26 口头拍板 D1–D3,直接执行) | `PROGRESS-consult-answer-truncation-20260926.md` | **普通咨询回答写到一半被掐断仍扣点(BUG-1051,复发自 BUG-305)**:工具循环与写回答共用 110 秒 signal;Mastra 1.50 超时不抛错(`abort` 块 + `finish(tripwire)` 后正常关流),结算只认抛错与 `length`。D1 写回答自有 70 秒时钟(首用起算,续写 / 回答重试共用,最坏 180 秒,`maxDuration` 240);D2 写回答的最后一个流不是 `stop` 且有正文 → `answer_truncated`、不扣点、记 abort 步、不冲半句,`length` 续写不变;D3 观测加 `composeFinishReason` / `composeAborted` / `answerVisibleChars` | 已验收(真机欠) | `codex/consult-answer-truncation-20260926`(本地,未推送);新回归 15 条用真实 Mastra `Agent`(修复前 11 条红);全量失败名单 0 新增;Python 948/1;`/` ○、gzip 0%;真机清单 `docs/testing/consult-answer-truncation-20260926.md` |
| `TASK-consult-evidence-card-research-20260927.md` | `PROGRESS-consult-evidence-card-research-20260927.md` | **普通对话数据卡调研**:引擎输出逐项分五类计量(现约 4 万 token、父母问题相关约 3.5%);四处领域→技法来源对账并起草各领域数据卡(家庭拆父母/子女);卡体量与逐字一致性;按卡算的提速空间;反馈迭代埋点方案。只调研不改线上 | 已验收(待产品拍板 7 项) | `codex/consult-evidence-card-research-20260927` 快进 staging;报告 `docs/research/consult_evidence_card_research_2026_09_27.md`;投影缺口记 BUG-1054 investigating |
@@ -0,0 +1,50 @@
# TASK · 事业题按星性写方向的残余 + 预热单飞(2026-10-09)
- 基线:`origin/staging`,含 `fc3a2e68`(对话卡同源已合入)。分支 `codex/consult-career-type-residual-20261009`。
- 前序:`TASK-consult-card-full-source-fix2-20261009.md`(已验收合入)。
- BUG 编号:本单已登记 BUG-1303、BUG-1304(investigating),新问题从 **1305** 起,开工时核对。
## 1. 实证
| # | 问题 | 证据 |
| --- | --- | --- |
| H1 | 事业题仍有 1 / 18 份按星的本性写方向 | `PROGRESS-consult-card-full-source-fix2-20261009.md`:齐达内事业第 2 次把方向写成「知识、表达、信息和资源」。合入前 staging 的唯一严重冲突是泰勒事业第 2 次(写成不靠曝光),同属行业类型冲突。2 次抽样、`deepseek-flash`,单次波动大 |
| H2 | 预热与用户请求重复计算同一份资料包 | `scripts/consult_full_data_cache.py` 的 `get_or_build` 没有按键加锁:保存后预热还在算时用户提问,用户请求缓存未命中,会在重计算名额里再完整算一遍。预热分支(`jyotish_api_server.py` 中 `consult_card_warm_only`)不占名额,也没有自己的并发上限,2 vCPU 上多次保存会并行多份 |
## 2. 根因
- H1:清单规则只说「不按星性推断」,但判断表仍把同一颗星在自然代表星、大运主星、旺弱多处点名;模型在写「方向」一节时仍会给出星性词。规则没有说「方向」该写什么。
- H2:F5 只做了「保存后调用」,没有做同键单飞与预热限流。
## 3. 决策记录(产品 2026-10-09)
1. 对话卡同源分支按「严重冲突 ≤ 1」放行合入;剩余这 1 次另开本单。
2. 本单不删判断表行、不改卡片取值、不改系统提示(≤ 26.6K)、不改首轮形状与口吻;继续遵守 `CAREER_FIELD_ASK_RULE`「不猜行业、问用户」。
3. 回测临时 key 只放执行方会话的环境变量,不进任何文件。
## 4. 硬红线
1. 只改事业清单(`frontend/src/lib/consultation-condensed-checklist.ts`)或判断表的呈现文字,不改引擎取值。
2. 不为回测改评分口径;判读口径沿用前两轮进度记录。
3. 预热失败不影响保存;用户请求不得因预热收到 429;不新增 API 类方法;`jyotish_api_server.py` 不增长(`tests/test_api_server_growth_contract.py`)。
## 5. 任务分解
| # | 内容 | 验收标准 |
| --- | --- | --- |
| H1 | 事业清单写明「方向」一节只写力量、阻力、时间与三件事(机会出现 / 成形 / 公开落地),职业类型与工作方式一律问用户;必要时在判断表代表星行旁加一句同义提示(呈现文字,不改值) | 新测试锁住;生平回测 9 人 × 4 领域 × **3 次**:事业 27 份里行业类型冲突 0,全体严重冲突 ≤ 1,对照组误报 0;数字进进度记录 |
| H2 | `get_or_build` 按缓存键单飞(同键并发只算一次,后到者等结果);预热单独限流(例如同时最多 1 份),满了直接跳过 | 并发测试:预热进行中同键用户请求只触发 1 次构建;多次预热不超过上限;既有 `tests/test_api_heavy_compute_gate.py` 通过 |
| H3 | Linux:快速门、Python 全量 ⊆ 基线(62)、`npm test` 失败名单与基线相同、tsc 0、lint 0 error、`next build` `/` Static | 全部满足 |
| H4 | 记录 | BUG-1303 / 1304 更新状态;`CHANGELOG.md`、进度记录、状态板 |
## 6. 让步顺序
H2 可先单独交付;H1 若 3 次回测仍有 1 次行业冲突,如实记录并停,交产品决定,不改口径。
## 7. 开工前置
```bash
git fetch origin --prune
git worktree add -b codex/consult-career-type-residual-20261009 .worktrees/consult-career-type-residual-20261009 origin/staging
grep -n "^## BUG-1[3-9][0-9][0-9]" docs/BUG_HISTORY.md | tail -3
```