Skip to content

fix(automation): strip HTML comments before metadata extraction#40

Merged
watanabe-kohei-jp merged 1 commit into
mainfrom
fix/sync-listings-comment-regex
May 25, 2026
Merged

fix(automation): strip HTML comments before metadata extraction#40
watanabe-kohei-jp merged 1 commit into
mainfrom
fix/sync-listings-comment-regex

Conversation

@watanabe-kohei-jp
Copy link
Copy Markdown
Collaborator

Summary

  • E2E テスト中に発見したバグの修正。scripts/sync_listings.py の TITLE_RE / META_DESC_RE / SECTION_RE が HTML コメント内に書かれた literal の <title><meta name="description"> に誤マッチしていた。
  • _template/index.html のコメントに自動同期の説明として literal の <title> を含めていたため、テンプレートからコピーした全 lecture が改行 forbidden エラーで fail する地雷だった。

Related Issue

No-Issue: PR #36 (auto-listings 導入) の E2E 検証で発覚した既知バグの即時修正。issue 化するより直す方が早い小規模 fix。

Changes

  • scripts/sync_listings.py — 抽出前に strip_html_comments() を通してコメントを除去
  • _template/index.html — コメントから literal の <title> / <meta name=description> 記述を除去(regex 修正との二重防衛)

Test plan

  • 修正前は cryptic な「改行 forbidden」で fail することを再現
  • 修正後は 5 ブロックの drift として正しく検知
  • コメント内に攻撃的な <title>FAKE TITLE</title> を仕込んでも、本物の title/desc が正しく抽出される
  • _template/ からコピーした lecture が問題なく追加できる
  • PR で Listings Sync Check / Prompt Injection / CodeQL が green

Discovery context

PR #36 マージ直後の E2E テストで cp -r _template 99-fake-test で fake lecture を作って --check を回した時に発見。safety net (validate_metadata の改行検査) が exit 1 で fail させたので被害ゼロだったが、エラーメッセージが原因を直接示さず、_template/ を使う全コントリビュータが踏む地雷だった。

🤖 Generated with Claude Code

TITLE_RE / META_DESC_RE / SECTION_RE は src の HTML 全体に対して走るので、
HTML コメント内に literal の <title> や <meta name="description"> 文字列が
書かれていると、コメントの開きタグから本物の </title> までを誤キャプチャ
してしまっていた。

実例: _template/index.html のコメントは「<title> と <meta name=description>
は自動転記される」と書いていたため、テンプレートからコピーした全 lecture が
validate_metadata の改行検査で SystemExit する地雷を踏んでいた。

修正:
- strip_html_comments() を抽出前に通し、コメント内のタグ風文字列を無視する
- _template/index.html のコメントから literal の <title>/<meta> 記述を除去
  (defense in depth: regex 修正と併用)

E2E 検証: 修正前 fail → 修正後 5 ブロック正常検知。コメント内に攻撃的な
<title>FAKE</title> を仕込んでも本物の title/desc が正しく抽出される。
@watanabe-kohei-jp watanabe-kohei-jp marked this pull request as ready for review May 25, 2026 01:36
@watanabe-kohei-jp watanabe-kohei-jp merged commit a2edf5e into main May 25, 2026
8 checks passed
@watanabe-kohei-jp watanabe-kohei-jp deleted the fix/sync-listings-comment-regex branch May 25, 2026 01:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant