{
  "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
  "origin": "GUIDED_DEMO",
  "status": "completed_with_warnings",
  "startedAt": "2026-08-03T13:33:57.573Z",
  "completedAt": "2026-08-03T13:33:57.710Z",
  "config": {
    "projectRoot": "<PROJECT_ROOT>",
    "sourceLocale": "en-GB",
    "locales": [
      "hi-IN",
      "de-DE",
      "ar-SA",
      "he-IL",
      "ja-JP",
      "zh-Hans-CN",
      "th-TH",
      "fr-FR",
      "es-MX",
      "en-GB"
    ],
    "routes": [
      "/",
      "/pricing",
      "/dashboard",
      "/settings",
      "/checkout"
    ],
    "viewports": [
      {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      {
        "name": "tablet",
        "width": 768,
        "height": 1024
      },
      {
        "name": "desktop",
        "width": 1440,
        "height": 900
      }
    ],
    "browsers": [
      "chromium"
    ],
    "themes": [
      "light",
      "dark"
    ],
    "maxPages": 20,
    "maxDepth": 2,
    "rateLimitPerSecond": 2,
    "noAi": true,
    "hosted": false,
    "allowLocalhost": true,
    "allowlist": [
      "apps/demo-target/data/layout.json",
      "apps/demo-target/data/locale-state.json",
      "apps/demo-target/data/translations.json"
    ]
  },
  "issues": [
    {
      "issueId": "BF-VIS-HI-001",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "visual",
      "ruleId": "vertical-clipping",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "hi-IN",
      "route": "/",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=hero-title]",
      "sourceHint": "apps/demo-target/data/layout.json",
      "description": "Devanagari glyph bounds exceed the available line box.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": 28,
        "expected": 36,
        "delta": -8
      },
      "measuredEvidence": {
        "actual": 28,
        "expected": 36,
        "delta": -8
      },
      "screenshotBefore": "/evidence/BF-VIS-HI-001.png",
      "recommendedAction": "Use a script-safe line-height derived from content height.",
      "deterministicPredicate": "layout.hi-IN.heroLineHeight >= layout.hi-IN.measuredGlyphHeight",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-VIS-DE-002",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "visual",
      "ruleId": "cta-overflow",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "de-DE",
      "route": "/pricing",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=primary-cta]",
      "sourceHint": "apps/demo-target/data/layout.json",
      "description": "The German CTA scroll width exceeds its fixed client width.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": 160,
        "expected": 212,
        "delta": -52
      },
      "measuredEvidence": {
        "actual": 160,
        "expected": 212,
        "delta": -52
      },
      "screenshotBefore": "/evidence/BF-VIS-DE-002.png",
      "recommendedAction": "Allow the CTA to size to content and wrap safely.",
      "deterministicPredicate": "layout.de-DE.ctaClientWidth >= layout.de-DE.ctaScrollWidth",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-LOC-AR-003",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "locale",
      "ruleId": "wrong-direction",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "ar-SA",
      "route": "/dashboard",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "html",
      "sourceHint": "apps/demo-target/data/locale-state.json",
      "description": "The Arabic route is rendered left-to-right.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": "ltr",
        "expected": "rtl"
      },
      "measuredEvidence": {
        "actual": "ltr",
        "expected": "rtl"
      },
      "screenshotBefore": "/evidence/BF-LOC-AR-003.png",
      "recommendedAction": "Set direction from the locale profile.",
      "deterministicPredicate": "localeState.directions.ar-SA === \"rtl\"",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-RTL-HE-004",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "visual",
      "ruleId": "rtl-icon-order",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "he-IL",
      "route": "/settings",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=back-link]",
      "sourceHint": "apps/demo-target/data/layout.json",
      "description": "The directional icon remains after the label in RTL.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": "after",
        "expected": "before"
      },
      "measuredEvidence": {
        "actual": "after",
        "expected": "before"
      },
      "screenshotBefore": "/evidence/BF-RTL-HE-004.png",
      "recommendedAction": "Use logical ordering for directional controls.",
      "deterministicPredicate": "layout.he-IL.iconOrder === \"before\"",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-I18N-JA-005",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "linguistic",
      "ruleId": "raw-translation-key",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "ja-JP",
      "route": "/checkout",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=pay-button]",
      "sourceHint": "apps/demo-target/data/translations.json",
      "description": "A raw translation key is visible in the checkout action.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": "checkout.pay_now",
        "forbidden": "checkout.pay_now"
      },
      "measuredEvidence": {
        "actual": "checkout.pay_now",
        "forbidden": "checkout.pay_now"
      },
      "screenshotBefore": "/evidence/BF-I18N-JA-005.png",
      "recommendedAction": "Insert the missing Japanese translation.",
      "deterministicPredicate": "translations.ja-JP.checkout.pay_now !== \"checkout.pay_now\"",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-FONT-ZH-006",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "visual",
      "ruleId": "font-coverage",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "zh-Hans-CN",
      "route": "/dashboard",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=activity-title]",
      "sourceHint": "apps/demo-target/data/layout.json",
      "description": "The configured font stack does not cover the Simplified Chinese specimen.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": false,
        "expected": true
      },
      "measuredEvidence": {
        "actual": false,
        "expected": true
      },
      "screenshotBefore": "/evidence/BF-FONT-ZH-006.png",
      "recommendedAction": "Adopt the locale engine font fallback stack.",
      "deterministicPredicate": "layout.zh-Hans-CN.fontCoverage === true",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-VIS-TH-007",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "visual",
      "ruleId": "line-breaking",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "th-TH",
      "route": "/pricing",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=plan-description]",
      "sourceHint": "apps/demo-target/data/layout.json",
      "description": "Thai content is forced onto one line and overflows its container.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": "nowrap",
        "expected": "normal"
      },
      "measuredEvidence": {
        "actual": "nowrap",
        "expected": "normal"
      },
      "screenshotBefore": "/evidence/BF-VIS-TH-007.png",
      "recommendedAction": "Enable normal wrapping and dictionary line breaking.",
      "deterministicPredicate": "layout.th-TH.whiteSpace === \"normal\"",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-I18N-FR-008",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "linguistic",
      "ruleId": "placeholder-mismatch",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "fr-FR",
      "route": "/checkout",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=pay-button]",
      "sourceHint": "apps/demo-target/data/translations.json",
      "description": "The {amount} runtime placeholder was removed from the French translation.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "source": "Pay {amount}",
        "target": "Payer le montant",
        "valid": false,
        "sourceTokens": [
          "{amount}"
        ],
        "targetTokens": []
      },
      "measuredEvidence": {
        "source": "Pay {amount}",
        "target": "Payer le montant",
        "valid": false,
        "sourceTokens": [
          "{amount}"
        ],
        "targetTokens": []
      },
      "screenshotBefore": "/evidence/BF-I18N-FR-008.png",
      "recommendedAction": "Restore the protected placeholder without changing its token.",
      "deterministicPredicate": "protectedTokens(translations.en-GB.checkout.pay_now) === protectedTokens(translations.fr-FR.checkout.pay_now)",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-LING-ES-009",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "linguistic",
      "ruleId": "glossary-violation",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "es-MX",
      "route": "/checkout",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "[data-testid=checkout-title]",
      "sourceHint": "apps/demo-target/data/glossary.json",
      "description": "The checkout term conflicts with the project-approved Mexican Spanish glossary.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": "Finalizar compra",
        "expected": "Pagar"
      },
      "measuredEvidence": {
        "actual": "Finalizar compra",
        "expected": "Pagar"
      },
      "screenshotBefore": "/evidence/BF-LING-ES-009.png",
      "recommendedAction": "Use the approved glossary term.",
      "deterministicPredicate": "translations.es-MX.checkout.term === glossary.Checkout.es-MX",
      "humanReviewRequired": false
    },
    {
      "issueId": "BF-META-EN-010",
      "scanId": "scan_8e2be01b06024151bad13509f8af04aa",
      "origin": "GUIDED_DEMO",
      "category": "locale",
      "ruleId": "wrong-page-lang",
      "severity": "blocking",
      "confidence": "verified",
      "locale": "en-GB",
      "route": "/",
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "browser": "deterministic",
      "selector": "html",
      "sourceHint": "apps/demo-target/data/locale-state.json",
      "description": "The source page declares a generic language instead of the configured source locale.",
      "whyItMatters": "A released user interface would present an objectively broken or inconsistent localisation experience.",
      "evidence": {
        "actual": "en",
        "expected": "en-GB"
      },
      "measuredEvidence": {
        "actual": "en",
        "expected": "en-GB"
      },
      "screenshotBefore": "/evidence/BF-META-EN-010.png",
      "recommendedAction": "Set the canonical BCP 47 source locale on the document root.",
      "deterministicPredicate": "localeState.pageLang === \"en-GB\"",
      "humanReviewRequired": false
    }
  ],
  "routesDiscovered": [
    "/",
    "/pricing",
    "/dashboard",
    "/checkout",
    "/settings"
  ],
  "localesTested": [
    "hi-IN",
    "de-DE",
    "ar-SA",
    "he-IL",
    "ja-JP",
    "zh-Hans-CN",
    "th-TH",
    "fr-FR",
    "es-MX",
    "en-GB"
  ],
  "engineVersion": "0.2.0",
  "mode": "live"
}
