{
  "schemaVersion": "audit-benchmark-1",
  "version": "1.0.0",
  "generatedAt": "2026-07-15T08:06:19.398Z",
  "engineVersion": "1.0.0",
  "ruleVersion": "1.0.0",
  "ruleCount": 14,
  "fixtureCount": 21,
  "synthetic": true,
  "license": "CC BY 4.0",
  "note": "Synthetic benchmark only; does not represent the real-world web.",
  "manifest": {
    "fixtures": [
      {
        "id": "fx-countdown-legit",
        "lang": "ja",
        "a11y": "ok",
        "expected": [],
        "prohibited": [
          "urgency-countdown"
        ],
        "ambiguous": [],
        "rationale": "正当な開催期間の表示。焦りを煽る語句なし。"
      },
      {
        "id": "fx-countdown-hard",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "urgency-countdown"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "カウントダウン要素と「今すぐ」で焦りを煽る。"
      },
      {
        "id": "fx-scarcity-legit",
        "lang": "ja",
        "a11y": "ok",
        "expected": [],
        "prohibited": [
          "scarcity-stock"
        ],
        "ambiguous": [],
        "rationale": "リアルタイム在庫数の提示。あおり表現なし。"
      },
      {
        "id": "fx-scarcity-hard",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "scarcity-stock"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "残り少数と急ぎを煽る。"
      },
      {
        "id": "fx-preselected-subscription",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "preselected-subscription"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "初期状態で継続課金にチェックが入っている。"
      },
      {
        "id": "fx-preselected-consent",
        "lang": "ja",
        "a11y": "ok",
        "expected": [],
        "prohibited": [
          "preselected-subscription"
        ],
        "ambiguous": [],
        "rationale": "必須の規約同意チェック（未チェックが正しい形）。継続課金ではないので誤検出させない。"
      },
      {
        "id": "fx-recurring-clear",
        "lang": "ja",
        "a11y": "ok",
        "expected": [],
        "prohibited": [
          "cancellation-friction",
          "preselected-subscription",
          "hidden-fee"
        ],
        "ambiguous": [],
        "rationale": "継続課金だが解約条件が明記されている。"
      },
      {
        "id": "fx-trial-rollover",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "trial-rollover",
          "cancellation-friction"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "無料トライアルが自動的に有料化する。"
      },
      {
        "id": "fx-trial-clear",
        "lang": "ja",
        "a11y": "ok",
        "expected": [],
        "prohibited": [
          "trial-rollover"
        ],
        "ambiguous": [],
        "rationale": "無料期間と明確な解約方法。"
      },
      {
        "id": "fx-hidden-fee",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "hidden-fee"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "総額に含まれない税・送料。"
      },
      {
        "id": "fx-total-upfront",
        "lang": "ja",
        "a11y": "ok",
        "expected": [],
        "prohibited": [
          "hidden-fee"
        ],
        "ambiguous": [],
        "rationale": "税込・送料込の総額表示。"
      },
      {
        "id": "fx-low-contrast",
        "lang": "ja",
        "a11y": "low-contrast",
        "expected": [
          "low-contrast-disclosure"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "重要な継続条件が極小・低コントラストで開示。"
      },
      {
        "id": "fx-confirmshaming",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "confirmshaming"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "断りにくい表現。"
      },
      {
        "id": "fx-cancel-friction",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "cancellation-friction"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "継続課金あり、解約手段が電話のみで制限されている。"
      },
      {
        "id": "fx-accessibility-only",
        "lang": "ja",
        "a11y": "low-contrast",
        "expected": [
          "low-contrast-disclosure"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "アクセシビリティのみの懸念（購入誘導なし）。"
      },
      {
        "id": "fx-deceptive-a11y",
        "lang": "ja",
        "a11y": "low-contrast",
        "expected": [
          "urgency-countdown",
          "low-contrast-disclosure",
          "cancellation-friction"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "焦り＋低コントラスト開示の重複。"
      },
      {
        "id": "fx-english",
        "lang": "en",
        "a11y": "ok",
        "expected": [
          "scarcity-stock",
          "urgency-countdown"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "英語の希少性・焦り・購入導線。"
      },
      {
        "id": "fx-mixed",
        "lang": "mixed",
        "a11y": "ok",
        "expected": [
          "scarcity-stock",
          "urgency-countdown"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "日英混在の希少性・焦り。"
      },
      {
        "id": "fx-malformed",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "preselected-subscription"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "不正なHTMLだが preselected は検出される。"
      },
      {
        "id": "fx-script-injection",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "urgency-countdown"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "script は実行されず無視。テキストから焦りのみ検出。"
      },
      {
        "id": "fx-huge",
        "lang": "ja",
        "a11y": "ok",
        "expected": [
          "urgency-countdown"
        ],
        "prohibited": [],
        "ambiguous": [],
        "rationale": "巨大入力でも安定して検出（性能・制限の確認）。"
      }
    ]
  },
  "metrics": {
    "overall": {
      "precision": 1,
      "recall": 1,
      "f1": 1,
      "tp": 20,
      "fp": 0,
      "fn": 0
    },
    "perRule": [
      {
        "ruleId": "urgency-countdown",
        "tp": 6,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "scarcity-stock",
        "tp": 3,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "social-proof",
        "tp": 0,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "confirmshaming",
        "tp": 1,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "preselected-subscription",
        "tp": 2,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "trial-rollover",
        "tp": 1,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "hidden-fee",
        "tp": 1,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "cancellation-friction",
        "tp": 3,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "low-contrast-disclosure",
        "tp": 3,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "disguised-advertisement",
        "tp": 0,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "bundled-consent",
        "tp": 0,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "account-creation-pressure",
        "tp": 0,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "misleading-hierarchy",
        "tp": 0,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "nagging",
        "tp": 0,
        "fp": 0,
        "fn": 0,
        "ambiguous": 0,
        "precision": 1,
        "recall": 1,
        "f1": 1
      }
    ]
  }
}
