{
  "version": "2026-05-09",
  "description": "AITerms.tw 內容禁止字串清單。validate-terms.ts 與 build pipeline 用此檔擋出版。",
  "banned_phrases": [
    "這張卡",
    "另一張卡",
    "可以把它當成不同入口",
    "看情況，但如果任務目標是分類、分群、壓縮、檢索，或最佳化",
    "距離尺度沒對齊",
    "標註規則不一致",
    "輸入格式不合",
    "最強",
    "一定優於",
    "完全免費",
    "無版權風險",
    "保證可商用",
    "近鄰參考"
  ],
  "banned_claims": [
    "台灣第一個",
    "業界領先",
    "首選",
    "官方推薦",
    "優於所有傳統方法",
    "最強大",
    "保證可商用",
    "無版權風險"
  ],
  "banned_markdown_artifacts": [
    "**Q1",
    "> 步驟",
    "## 相關術語\n### 相關術語"
  ],
  "architecture_rules": [
    "L. NEVER 派平行 fork 改同一檔；同檔多工作 MUST 序列。",
    "M. 4 個 static page 錨點 (/, /ipas, /ipas/L1, /ipas/L2) MUST 保持靜態，動態 state 用 vanilla JS client-side fetch。",
    "N. 所有 .md / .txt / .json 公開路由 MUST `export const prerender = true`。",
    "O. 所有卡片元素 padding MUST ≥ 16px（含手機版 clamp 最小值）。",
    "P. Playwright CARD_SELECTORS MUST 區分卡片容器與 layout-only utility。",
    "Q. 所有 .md 路由 Content-Type MUST `text/markdown; charset=utf-8`，輸出 ≥20 行 + H1 + H2。",
    "R. Markdown renderer MUST 包 fixUnpairedBold + dedupeConsecutiveHeadings + warnBlockquoteTable，vitest 覆蓋。",
    "S. 絕對 claim MUST 含 evidence_url + last_checked_at，否則改中性表述。",
    "T. 純函數 lib MUST 用 inline types，NEVER import database.types.ts。",
    "U. 所有 /api 路由 MUST 把 Supabase query 包 try/catch + safe fallback。",
    "V. catalog-content.ts 內容 MUST 過 banned_phrases + banned_claims 檢查。",
    "W. 1 個概念 = 1 個 canonical active 頁；slug -1/-2 結尾 MUST status=\"redirect\"。",
    "X. iPAS 百分比 MUST 含 sample_size + exam_year_range + methodology_url。",
    "Y. 每個 source MUST 獨立 URL + type + supports[] + last_checked_at。",
    "Z. SSG filter MUST 用 inline JS + URLSearchParams + active filter banner + 0 結果才 unhide empty-state。",
    "AA. 診斷頁面錯誤前 MUST 先 curl -sIL 確認 HTTP status + Content-Type。",
    "BB. 新建元件 MUST 跟 1 個實際 import 用例一起 commit。"
  ],
  "banned_license_descriptions": {
    "Llama / LLaMA": "不得寫「開源」「OSI open source」；MUST 用 open-weight / community license",
    "n8n": "不得寫「開源」；MUST 用 fair-code / source-available",
    "FLUX": "不得整個模型系列寫「開源免費」；MUST 拆模型描述（[dev] 非商用 / [schnell] / [pro] 商用）"
  },
  "banned_unsupported_metrics": {
    "pattern": "平均佔.*?\\d+%|歷年.*?平均.*?\\d+%|佔.*?考題.*?\\d+%",
    "rule": "無 sample_size + year_range + methodology 不得輸出 iPAS 百分比"
  }
}