{
  "name": "purchase-page-audit-evidence-pack",
  "schemaVersion": "1.0.0",
  "engineVersion": "1.0.0",
  "ruleVersion": "1.0.0",
  "license": "CC BY 4.0",
  "scope": {
    "syntheticOnly": true,
    "realWorldAccuracyClaim": false,
    "legalVerdict": false,
    "externalNetwork": false
  },
  "disclaimer": "This pack is derived from SYNTHETIC HTML fixtures only. It contains no real company names, no real purchase-page URLs, and no crawled sites. The precision/recall/F1 below are NOT an estimate of real-world detection performance; they describe how the engine behaves on a closed, self-authored set.",
  "dataset": {
    "json": "https://buy-before-sleep.kawaii-girl.com/public/data/audit-benchmark-v1.json",
    "csv": "https://buy-before-sleep.kawaii-girl.com/public/data/audit-benchmark-v1.csv",
    "fixtureCount": 21,
    "license": "CC BY 4.0"
  },
  "benchmark": {
    "overall": {
      "precision": 1,
      "recall": 1,
      "f1": 1,
      "tp": 20,
      "fp": 0,
      "fn": 0
    },
    "perRule": [
      {
        "ruleId": "urgency-countdown",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "scarcity-stock",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "social-proof",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "confirmshaming",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "preselected-subscription",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "trial-rollover",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "hidden-fee",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "cancellation-friction",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "low-contrast-disclosure",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "disguised-advertisement",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "bundled-consent",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "account-creation-pressure",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "misleading-hierarchy",
        "precision": 1,
        "recall": 1,
        "f1": 1
      },
      {
        "ruleId": "nagging",
        "precision": 1,
        "recall": 1,
        "f1": 1
      }
    ]
  },
  "taxonomy": [
    {
      "id": "urgency-countdown",
      "labelJa": "期限・残り時間による焦り",
      "labelEn": "",
      "category": "urgency",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "購入判断を急がせる表示（カウントダウン・残り時間・今だけ）があるか確認します。"
    },
    {
      "id": "scarcity-stock",
      "labelJa": "在庫・人数による希少性あおり",
      "labelEn": "",
      "category": "scarcity",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "在庫僅少・残り人数など、希少性を強調する表示を確認します。"
    },
    {
      "id": "social-proof",
      "labelJa": "社会的証明あおり",
      "labelEn": "",
      "category": "social-proof",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "「みんなが」「売れ筋」など社会的証明であおり購入を促す表示を確認します。"
    },
    {
      "id": "confirmshaming",
      "labelJa": "断りにくい表現（コンファームシェイミング）",
      "labelEn": "",
      "category": "nagging",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "「登録しないのはもったいない」等、断りにくくする表現を確認します。"
    },
    {
      "id": "preselected-subscription",
      "labelJa": "あらかじめ選択された継続・オプトイン",
      "labelEn": "",
      "category": "preselection",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "初期状態でチェック/選択されている継続課金・オプトインを確認します。"
    },
    {
      "id": "trial-rollover",
      "labelJa": "無料トライアルの自動有料化",
      "labelEn": "",
      "category": "recurring",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "無料トライアルが条件なしで自動的に有料化する仕組みを確認します。"
    },
    {
      "id": "hidden-fee",
      "labelJa": "総額に含まれない手数料・送料（ドリッププライシング）",
      "labelEn": "",
      "category": "hidden-cost",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "表示価格に含まれない送料・手数料・税別など、総額が不明確な表示を確認します。"
    },
    {
      "id": "cancellation-friction",
      "labelJa": "解約・返品条件の不明示／妨害",
      "labelEn": "",
      "category": "obstruction",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "継続課金があるのに解約・返品条件が見つからない、または手段が制限されている場合を確認します。"
    },
    {
      "id": "low-contrast-disclosure",
      "labelJa": "低コントラストの重要開示",
      "labelEn": "",
      "category": "accessibility",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "重要な条件が小さな文字・背景に近い色で読みにくく開示されている場合を確認します（アクセシビリティ観点）。"
    },
    {
      "id": "disguised-advertisement",
      "labelJa": "隠された広告・タイアップ表示",
      "labelEn": "",
      "category": "disclosure",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "広告・タイアップ・PRであることが十分に示されていない発信を確認します。"
    },
    {
      "id": "bundled-consent",
      "labelJa": "まとめて同意・デフォルト選択",
      "labelEn": "",
      "category": "consent",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "複数項目をまとめて同意させる、またはデフォルトで選択されている同意を確認します。"
    },
    {
      "id": "account-creation-pressure",
      "labelJa": "アカウント作成の強要",
      "labelEn": "",
      "category": "pressure",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "購入にアカウント作成を必須とし、ゲスト購入をさせない圧を確認します。"
    },
    {
      "id": "misleading-hierarchy",
      "labelJa": "誘導的なボタン配置・見出し",
      "labelEn": "",
      "category": "hierarchy",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "目立つ購入導線と目立たない詳細・条件への差を確認します。"
    },
    {
      "id": "nagging",
      "labelJa": "繰り返しの催促（ナッジング）",
      "labelEn": "",
      "category": "nagging",
      "detection": "automatic",
      "falsePositiveCaution": "",
      "description": "離脱時に繰り返し購入を促すポップアップ等を確認します。静的解析では検出困難なため手動確認とします。"
    }
  ],
  "methodology": [
    "Engine is shared from a single source (scripts/audit-engine.mjs) for browser, extension, and CLI.",
    "Input text/HTML is processed only on-device; nothing is sent to a server.",
    "No legal verdict (illegal / fraud / Consumer Contract Act violation, etc.) is issued; only 'signs worth checking' are surfaced.",
    "The benchmark is a closed self-authored set and does not estimate real-world precision/recall/F1.",
    "No ranking of real businesses, no robots-ignoring crawl, and no login-protected scraping is performed."
  ]
}