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-mcp(decisions/0002) からMarkdownで取得し、llmwikiの安定入力契約(SOURCES_CONTRACT.md)に沿って sources/へ直接書き込む経路を作る。
目的
法令名(略称可)と条番号を指定すると、houki-egov-mcp経由で条文Markdownを取得し、 llmwikiが取り込めるSOURCES_CONTRACT準拠のソースファイルとして書き込める状態を作る。
受け入れ条件
実施記録(2026-07-05、Fable 5)
- MCPクライアントは公式
mcpPython 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に集約した。
変更範囲
- 変更してよいファイル:
Makefile、docs/配下 - 新しく作ってよいファイル:
scripts/ingest-law.py、docs/tasks/backlog.md - 変更しないもの:
agent/recipes/、既存decisions本文
確認方法
uv run scripts/ingest-law.py --law 個人情報保護法 --articles 2 --dry-run
make check