Task: 法令ingest経路(houki-egov-mcp → SOURCES_CONTRACT → llmwiki)

背景

tasks/0003で、e-Gov法令ページ(laws.e-gov.go.jp/law/...) はJS SPAのためllmwiki ingestのWeb取り込みが機能しないことが判明した。法令本文は 採用済みのhouki-egov-mcpdecisions/0002) からMarkdownで取得し、llmwikiの安定入力契約(SOURCES_CONTRACT.md)に沿って sources/へ直接書き込む経路を作る。

目的

法令名(略称可)と条番号を指定すると、houki-egov-mcp経由で条文Markdownを取得し、 llmwikiが取り込めるSOURCES_CONTRACT準拠のソースファイルとして書き込める状態を作る。

受け入れ条件

実施記録(2026-07-05、Fable 5)

  • MCPクライアントは公式mcp Python SDKをPEP 723インラインメタデータで宣言し、 uv run scripts/ingest-law.pyで自動解決する(shebangはuv run --script)。 houki-egov-mcpはnpx -yでstdio起動し、応答はcontent[0].textのJSON (markdown+meta)——この形式は同MCPのsrc/index.tsで確認した。
  • ファイル名は<law_id>-art<条番号>.md/<law_id>-toc.mdで固定し、source:<e-Gov公開URL>#article-<条番号>。SOURCES_CONTRACTの「同じsourceの再出力は 上書き」を満たすことを再実行で確認した。
  • 実測: --law 個人情報保護法 --articles 2 --tocで略称→正式名解決を含めて成功。 llmwiki compileが法令ソースから13概念(個人情報・仮名加工情報・匿名加工情報等) を抽出し、Wikiは20ページに成長。llmwiki queryは条文ソースの行範囲 (^[415AC0000000057-art2.md:31-34])まで引用し、ソースにない論点は「補足資料 なしには回答できない」と明示した。
  • 入口はmake ingest-law LAW="..." ARTICLES="2,17-19" [ARGS="--toc"]
  • Codex等への引き継ぎ項目はbacklog.mdに集約した。

変更範囲

  • 変更してよいファイル: Makefiledocs/配下
  • 新しく作ってよいファイル: scripts/ingest-law.pydocs/tasks/backlog.md
  • 変更しないもの: agent/recipes/、既存decisions本文

確認方法

uv run scripts/ingest-law.py --law 個人情報保護法 --articles 2 --dry-run
make check