背景
networkカテゴリのsubCategory: "ファイアウォール"バケット(31件)には、OPNsense製品固有のテンプレート25件(opnsense-*)と、Rocky Linux/firewalldの汎用OS機能テンプレート6件(firewall-rules, firewall-block-triage, conntrack-full-triage, firewall-rule-audit, firewalld-zone-design, firewalld-port-forward)が混在している。
OPNsenseは完結したルータ/ファイアウォールOS(仮想アプライアンス、通常VMまたは専用機として導入)であり、実際のテンプレート内容も実在のOPNsense GUIパス(Firewall > Settings > Advanced等)・REST API・CARP/pfsync構成など製品固有の内容になっている。これはCisco/Fortinet/Palo Alto Networks/SonicWall等、既にベンダー専用subCategory(個別レールエントリ)を持つ他ベンダーと同じ性質でありながら、"ファイアウォール"という汎用トピックラベルのまま「共通」バケットに埋没している。
経緯
Issue #501(2026-07-30監査)は「既にベンダー名がsubCategoryに付いているエントリの内容一致」のみを検証範囲としており、OPNsenseはsubCategoryが"ファイアウォール"(トピックラベル)のため、そもそも監査対象の候補集合に入っていなかった。意図的に「変更不要」と判断されたわけではなく、単に検討対象から漏れていた。templates.ts全カテゴリを検索した結果、他に同様に紛れ込んでいる仮想アプライアンス製品(pfSense/VyOS/Untangle/Sophos/Check Point等)は存在せず、対象はOPNsenseの25件のみ。
スコープ
PR #611(データ移行)+ PR #613(レール分割)の前例パターンに倣う:
web/src/lib/templates.ts: 該当25件のsubCategoryを"ファイアウォール" → "OPNsense"に変更(id/category/format/output/activityは変更なし)
tests/unit/test_template_taxonomy.py: ALLOWED_SUBCATEGORIES["network"]に"OPNsense"を追加("ファイアウォール"は残り6件のため存続)
web/src/components/Library.tsx: NETWORK_VENDORS配列に{ id: 'opnsense', label: 'OPNsense' }を追加し、左レールに個別ボタンを表示
web/src/components/Library.test.tsx: network-commonのカウントを25件減、network-opnsenseエントリを25件で追加
.j2/データファイル本体の変更は不要(内容は既にOPNsense固有で正確)。
検証
uv run pytest -k 'not e2e'(taxonomy testが新規許可値を認識することを確認)
python3 scripts/local_render_check.py(既存794テンプレートに回帰がないことを確認)
cd web && npx tsc -b && npx vitest run(Library rail/groupBySubCategoryのテスト)
Refs #501
背景
networkカテゴリのsubCategory: "ファイアウォール"バケット(31件)には、OPNsense製品固有のテンプレート25件(opnsense-*)と、Rocky Linux/firewalldの汎用OS機能テンプレート6件(firewall-rules,firewall-block-triage,conntrack-full-triage,firewall-rule-audit,firewalld-zone-design,firewalld-port-forward)が混在している。OPNsenseは完結したルータ/ファイアウォールOS(仮想アプライアンス、通常VMまたは専用機として導入)であり、実際のテンプレート内容も実在のOPNsense GUIパス(
Firewall > Settings > Advanced等)・REST API・CARP/pfsync構成など製品固有の内容になっている。これはCisco/Fortinet/Palo Alto Networks/SonicWall等、既にベンダー専用subCategory(個別レールエントリ)を持つ他ベンダーと同じ性質でありながら、"ファイアウォール"という汎用トピックラベルのまま「共通」バケットに埋没している。経緯
Issue #501(2026-07-30監査)は「既にベンダー名がsubCategoryに付いているエントリの内容一致」のみを検証範囲としており、OPNsenseはsubCategoryが
"ファイアウォール"(トピックラベル)のため、そもそも監査対象の候補集合に入っていなかった。意図的に「変更不要」と判断されたわけではなく、単に検討対象から漏れていた。templates.ts全カテゴリを検索した結果、他に同様に紛れ込んでいる仮想アプライアンス製品(pfSense/VyOS/Untangle/Sophos/Check Point等)は存在せず、対象はOPNsenseの25件のみ。スコープ
PR #611(データ移行)+ PR #613(レール分割)の前例パターンに倣う:
web/src/lib/templates.ts: 該当25件のsubCategoryを"ファイアウォール"→"OPNsense"に変更(id/category/format/output/activityは変更なし)tests/unit/test_template_taxonomy.py:ALLOWED_SUBCATEGORIES["network"]に"OPNsense"を追加("ファイアウォール"は残り6件のため存続)web/src/components/Library.tsx:NETWORK_VENDORS配列に{ id: 'opnsense', label: 'OPNsense' }を追加し、左レールに個別ボタンを表示web/src/components/Library.test.tsx:network-commonのカウントを25件減、network-opnsenseエントリを25件で追加.j2/データファイル本体の変更は不要(内容は既にOPNsense固有で正確)。検証
uv run pytest -k 'not e2e'(taxonomy testが新規許可値を認識することを確認)python3 scripts/local_render_check.py(既存794テンプレートに回帰がないことを確認)cd web && npx tsc -b && npx vitest run(Library rail/groupBySubCategoryのテスト)Refs #501