PR #19 の Gate3 は「完成差分への全体再レビュー1回」まで実施したが、そのレビューで出た critical 2件の修正自体は、どのレビュアーの目も通っていない。CLAUDE.md の規律では修正は周回ではなく検算で閉じるため手続き上は正しいが、事実として記録しておく。
該当する修正(scripts/law_summary.py、コミット 6c4f6f2):
-
不正な API 応答が既存スナップショットを破壊する問題(fetch_evidence)
検証より先に data/raw/<law_id>_<today>.json を上書きしていた。data/raw は diff パイプラインと共有で diff.py が読むため、概要生成の失敗が別パイプラインの入力データ損失になっていた。build_evidence を先に通し、一時ファイルから os.replace で原子的に置換する形に変更。
-
第一条の本文が空でも生成が続く問題(build_evidence)
章見出しや条見出しが1つ残っていれば根拠が非空になり通過していた。プロンプトは「根拠に第一条を含む」と説明したままなので、適用範囲の根拠が無いまま scope を書かせることになる。条が存在するのに非空の Sentence が無い場合は失敗させる。
どちらも変異検算は通っている(単独で壊して赤、復元して緑)。テストは tests/test_law_summary_evidence.py の test_headings_do_not_excuse_a_missing_article_body と test_a_bad_response_does_not_destroy_the_existing_snapshot。
次に law_summary.py を触るときに、この2箇所を含めて1度レビューをかければ足りる。単独で急ぐものではない。
PR #19 の Gate3 は「完成差分への全体再レビュー1回」まで実施したが、そのレビューで出た critical 2件の修正自体は、どのレビュアーの目も通っていない。CLAUDE.md の規律では修正は周回ではなく検算で閉じるため手続き上は正しいが、事実として記録しておく。
該当する修正(
scripts/law_summary.py、コミット6c4f6f2):不正な API 応答が既存スナップショットを破壊する問題(
fetch_evidence)検証より先に
data/raw/<law_id>_<today>.jsonを上書きしていた。data/rawは diff パイプラインと共有でdiff.pyが読むため、概要生成の失敗が別パイプラインの入力データ損失になっていた。build_evidenceを先に通し、一時ファイルからos.replaceで原子的に置換する形に変更。第一条の本文が空でも生成が続く問題(
build_evidence)章見出しや条見出しが1つ残っていれば根拠が非空になり通過していた。プロンプトは「根拠に第一条を含む」と説明したままなので、適用範囲の根拠が無いまま
scopeを書かせることになる。条が存在するのに非空のSentenceが無い場合は失敗させる。どちらも変異検算は通っている(単独で壊して赤、復元して緑)。テストは
tests/test_law_summary_evidence.pyのtest_headings_do_not_excuse_a_missing_article_bodyとtest_a_bad_response_does_not_destroy_the_existing_snapshot。次に
law_summary.pyを触るときに、この2箇所を含めて1度レビューをかければ足りる。単独で急ぐものではない。