Skip to content

chapters_error 过期诊断:skipped_*/disabled 转换不清理旧 error(PR #225 验收遗留) #226

Closed

Description

@zj1123581321

现象

PR #225 引入的 chapters_error 落盘字段(llm_status.json,人工排障用,API/页面零引用)存在一个过期诊断边角:章节层被触碰但结果为 skipped_short / skipped_no_timeline / disabled 的轮次,本轮 error=None,按「None=不更新」合并语义,上一轮 FAILED 写入的旧 error 会与新状态共存:

chapters_status=skipped_short + chapters_error=<上一次失败原因>  # 互相矛盾

generated 转换已由 GENERATED⇒pop 不变式覆盖(cache_manager.py 单点),未触碰层由 llm_ops 回填语义覆盖(I9),唯独「触碰了但 skipped/disabled」这条路径两头都不管。

复现链

上一轮 FAILED(error 落盘)→ 下一轮重处理时校对产出文本低于 min_chapters_threshold(或章节配置改 disabled、结构化丢失)→ effective_chapters_status=skipped_short(非 None)→ final_chapters_error=本轮值 None → save_llm_status 不写不清 → 旧 error 残留。

修复方向(验收 consult claude-opus 建议 + 主脑细化)

cache_manager 的 pop 条件从 chapters_status == "generated" 放宽为「非 None 且非 failed 的新状态统一 pop 旧 error」——failed 才有 error 共存权。附带收益:顺带清洗 B 上线前遗留的存量矛盾状态。

影响面

诊断字段自相矛盾,不影响 chapters_status 判定(视图/历史只读 status),不阻塞 #225 合并(claude-opus 验收 consult 2026-10-10 裁决维持继续)。

Activity

  1. added
    领域:缓存与章节缓存产物、章节/笔记锚点与状态一致性
    落点:本仓修复代码在本仓 git 跟踪路径内
    优先级:P2质量债、待拍板的产品决策、可选优化
    bugSomething isn't working
    处置:待修已有明确修复边界,待确认设计或派发实现
    on Oct 12, 2026
  2. zj1123581321 commented on Oct 12, 2026

    @zj1123581321
    CollaboratorAuthor

    分诊更新(2026-10-12)

    当前主干生产 save_llm_status 实测:FAILED→skipped_short / skipped_no_timeline / disabled 后磁盘仍保留旧 chapters_error。保留 P2。应在权威 writer 维护 status/error 一致;未触碰章节仍保留诊断,不向各调用方散补丁。拟独立增量 A,待设计确认,尚未修复。

    基线:c7dc7fcbb1727057ecf2c4d8c3f38e34d3136f72。证据初稿:分支 card/vta-261012-triage-audit 的 docs/sessions/261012-issue-triage/triage.md;设计仍在收紧,未激活产品修复卡。

  3. zj1123581321 commented on Oct 12, 2026

    @zj1123581321
    CollaboratorAuthor

    分诊设计定稿

    四张独立修复增量及验收边界已发布,分诊证据位于同提交的 triage.md。#226/#204/#212/#216 为待修;#211/#191 待取证;#199 外部阻塞;#227 已通过主干基线7条回归并关闭。

    本次只分诊、打标、形成设计,未修改产品代码、未部署。待确认设计后再形成正式实现卡。

  4. zj1123581321 commented on Oct 12, 2026

    @zj1123581321
    CollaboratorAuthor

    Opus复核:降级原四卡设计(2026-10-12)

    Opus复核后收紧方案:只在 generated / skipped_short / skipped_no_timeline / disabled 等非失败终态清旧 chapters_error;pending 是进行中而非终态,保留原有诊断合并语义。本次尚未证实真实生产是否会写 pending,但不应为修跳过状态而改变该已有语义。实现测试应覆盖 FAILED→pending 保留、FAILED→各正常终态清除、未触碰层保留。仍待修,尚未实现。

    原设计提交0fd2fd67是此前方案;上述收紧意见优先,待用户确认后再修订设计和正式派卡。当前没有产品代码改动或部署。

  5. zj1123581321 commented on Oct 12, 2026

    @zj1123581321
    CollaboratorAuthor

    本轮最小修复已进入草稿 PR: #235 。只调整 save_llm_status 的清诊断条件,没有新增状态、配置或抽象。

    • 清旧诊断仅限 generated / skipped_short / skipped_no_timeline / disabled;pending / failed / 未触碰章节 保持原合并语义。
    • 独立审查已通过:在冻结提交上复跑相关测试,并在旧主干仅加入新测试,确认 6 个跳过终态用例因实际磁盘 JSON 仍含旧 error 而断言失败。
    • 审查结论已归档在该 PR 的 docs/sessions/261012-issue-fixes/reviews/chapter-error-verdict.md。

    当前仍在验收及 CI 阶段,草稿检查的绿色不代表完整主审通过;暂不关 issue。未合并、未部署,不声称生产存在 pending 写入事故。

  6. zj1123581321 commented on Oct 12, 2026

    @zj1123581321
    CollaboratorAuthor

    已正常交付:PR #235 在 ready 全部门禁通过、pr_merge_ready=READY 后,租约内按精确 head d3648c67d4205f43ae6707ca95fdc06391127ce6 合并。默认分支权威合并 SHA 为 a7eb68e7e017d3bbee94f9461ecaf58f037c67bd。

    • 唯一持久化边界 CacheManager.save_llm_status:四个正常终态 generated / skipped_short / skipped_no_timeline / disabled 清除旧 chapters_error;pending / failed / 未传状态保留,失败可写入新错误。
    • 新增 12 项参数化回归;真实磁盘 JSON 的目标基线红及单点变异红保留,独立审查 PASS。
    • 新主干合成环境完整 make test 退出 0;不为没有 summary 的日志伪造测试数量。
    • CI run#38297683442 的质量、primary、OCR、gate、ledger 全 success,Browser run#38297682641 success;没有用 watcher 不可得判断业务红绿。
    • 默认分支本仓仍无 push 触发 workflow(此次合并没有 .github/workflows 改动),新 SHA 的 event=push 查询为 0,不把未执行标绿。

    没有新增 schema、框架、重试或配置,没有宣称 pending 生产事故。没有执行部署操作或生产探活,生产状态未探测。关闭本项过期诊断问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working优先级:P2质量债、待拍板的产品决策、可选优化处置:待修已有明确修复边界,待确认设计或派发实现落点:本仓修复代码在本仓 git 跟踪路径内领域:缓存与章节缓存产物、章节/笔记锚点与状态一致性

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions