{
  "url": "https://xhchannel.com",
  "auditedAt": "2026-07-18T18:23:28.159Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage complete across 58 registered checks and four representative page archetypes.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered application with client enhancement",
    "notes": "Public adult-media catalogue. UK location requires age verification before playback; the audit did not attempt to bypass or complete legal identity verification."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "discoverability",
    "trace",
    "har",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "axe-core",
    "Modern Web Guidance 0.0.172"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "css-layout",
    "forms",
    "performance",
    "security",
    "privacy",
    "translator",
    "language-detection",
    "batch-analytics-events",
    "same-document-transitions",
    "persistent-toast-notifications",
    "visually-stable-font-fallbacks",
    "identify-heavy-scripts",
    "optimize-image-priority",
    "flicker-free-client-side-ab-testing"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F06",
        "F07",
        "F15"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F06",
        "F15"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark-reduced.png",
      "caption": "home dark reduced",
      "condition": "prefers-color-scheme: dark; prefers-reduced-motion: reduce",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "other",
      "path": "evidence/preferences.json",
      "caption": "preferences",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-forced-colors.png",
      "caption": "home forced colors",
      "condition": "forced-colors: active; prefers-contrast: more",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe",
      "findingIds": [
        "F02",
        "F03",
        "F05",
        "F07",
        "F08",
        "F14"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/categories.png",
      "caption": "categories",
      "findingIds": [
        "F03",
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-after-reject.png",
      "caption": "detail after reject",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/detail-after-reject.json",
      "caption": "detail after reject",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/signup.png",
      "caption": "signup",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/signup-structure.json",
      "caption": "signup structure",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "other",
      "path": "evidence/signup-after-reject.json",
      "caption": "signup after reject",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F10",
        "F11"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F09"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": [
        "F09",
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe.json",
      "caption": "axe",
      "findingIds": [
        "F12",
        "F13",
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F17",
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F17"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "discoverability",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/detail-discoverability.json",
      "caption": "detail discoverability",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-discoverability-rendered.png",
      "caption": "detail discoverability rendered",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-discoverability-crawler.png",
      "caption": "detail discoverability crawler",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/detail-structure.json",
      "caption": "detail structure",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/resource-dom-confirmation.json",
      "caption": "resource dom confirmation",
      "findingIds": [
        "F10",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/site-files.json",
      "caption": "site files",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/pwa.json",
      "caption": "pwa",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/locale-id.json",
      "caption": "locale id",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/locale-ar.json",
      "caption": "locale ar",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "heap baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.json",
      "caption": "heap post",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-structure.json",
      "caption": "home structure",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon",
      "findingIds": [
        "F18"
      ]
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "pass",
      "confidence": "high",
      "method": "evaluate + screenshot",
      "evidence": "Dark preference applied an extensive dark token set and the dark screenshot remained usable.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The reduced-motion evaluate probe reported eight running animations, each with a 2000 ms duration and infinite iterations, while prefers-reduced-motion: reduce matched; loaded CSS contained no reduced-motion media query.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences.json",
        "evidence/home-dark-reduced.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "forced-colors screenshot",
      "evidence": "Forced-colors/high-contrast screenshot retained visible controls, text, boundaries, and choice actions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-forced-colors.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The CSS/platform probe found no view-transition rules or names; navigation is conventional multi-page replacement.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No scroll-linked motion or scrollytelling surface was observed on the representative routes.",
      "reason": "No scroll-linked motion or scrollytelling surface was observed on the representative routes.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No swipe, pull, carousel gesture, or comparable physical gesture surface was present in the representative paths.",
      "reason": "No swipe, pull, carousel gesture, or comparable physical gesture surface was present in the representative paths.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "Desktop and long category screenshots show fixed, space-heavy navigation; the CSS probe found no scroll-state container queries or scroll-timeline support.",
      "pathIds": [
        "categories"
      ],
      "artifacts": [
        "evidence/categories.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No tooltip or edge-positioned transient menu requiring anchored positioning was observed in the exercised paths.",
      "reason": "No tooltip or edge-positioned transient menu requiring anchored positioning was observed in the exercised paths.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "DOM + screenshots",
      "evidence": "Real href navigation, labelled sections, a single H1, and explicit age-gate action preserve orientation across home, category, detail, and signup.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-structure.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "Homepage, categories, detail, and signup screenshots all open with a 525x380 centered consent surface covering the core viewport, before interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png",
        "evidence/signup.png"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The platform probe found zero dialog, popover, or details elements; signup uses a DIV with role=dialog and aria-modal=true.",
      "pathIds": [
        "signup"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/signup-structure.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "representative screenshots",
      "evidence": "After consent, the primary catalogue and video information remain the dominant content, with consistent navigation and card hierarchy.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-after-reject.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "At viewport 360x800, layout measured scrollWidth 1024 versus clientWidth 360 and 664 px horizontal overflow; the screenshot shows a cropped desktop sidebar and content grid.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The CSS probe found no @container or container-type rules, and the 360 px capture retained the 1024 px desktop composition.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The focus probe programmatically focused Search, Login, Get started, the promo action, and an icon button; computed outline was none/0 px and no compensating box shadow appeared on most controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "screenshots + DOM",
      "evidence": "Home names the trending-video catalogue; detail names the selected video and presents the legally required Get started verification action.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-after-reject.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "route walkthrough",
      "evidence": "Catalogue links reach a 200-status video detail; the required UK age gate clearly explains why playback requires verification and provides Get started rather than a dead end.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-after-reject.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "state walkthrough",
      "evidence": "Consent offers equal Accept/Reject actions; the gated player clearly states verification/login requirements and offers a next action.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-after-reject.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "Lighthouse mobile measured LCP 2.9 s and FCP 2.8 s; the independent trace measured LCP 2.25 s, indicating a borderline experience dependent on conditions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "layout + Lighthouse",
      "evidence": "Layout observer and Lighthouse both measured CLS 0 with no recorded layout shifts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "trace + Lighthouse",
      "evidence": "Trace found two long tasks with 182 ms TBT while Lighthouse mobile measured 0 ms TBT; no sustained main-thread blockage was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "HAR recorded 143 requests and 1.80 MB transferred, including 11 stylesheets and 61 scripts; three parser-inserted high-priority stylesheets were confirmed as media=all.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/resource-dom-confirmation.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "Lighthouse estimated 57 KiB unused CSS (87-95% unused in two files) and 26 KiB unused JavaScript; HAR shows one index script alone transferred 402 KB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "axe reported a critical unnamed button, an unnamed role=button video item, prohibited aria-label use, nested interactive controls, and focusable content inside aria-hidden.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "axe measured ratios as low as 1.75:1 on the age-verification subtitle, 2.15:1 on its heading, 3.29:1 for view counts, and 4.04:1 for signup text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "axe found duplicate/unlabelled landmarks, nested complementary landmarks, and focusable descendants inside aria-hidden; the focus probe found several controls with no visible focus indicator.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "screenshots",
      "evidence": "Representative screenshots show readable body and heading sizing with unclipped desktop typography; contrast exceptions are recorded separately.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The 360 px viewport retained a 1024 px layout and overflowed by 664 px despite a valid viewport meta tag.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse",
      "evidence": "Lighthouse errors-in-console audit passed with no items.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "high",
      "method": "DOM + Lighthouse",
      "evidence": "DOM/Lighthouse confirmed HTML doctype, UTF-8, valid image aspect ratios, and a viewport meta tag.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse + visual recon",
      "evidence": "Lighthouse found no deprecated API use or BFCache blocker and assigned best practices 1.0; no permission prompt appeared on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM probes",
      "evidence": "Home and video detail expose descriptive, route-specific titles and meta descriptions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-structure.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse + robots probe",
      "evidence": "Lighthouse confirmed crawlable links, descriptive link text, valid robots.txt, and viewport metadata; mobile reflow is recorded under the dedicated form-factor check.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/site-files.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "DOM + Lighthouse + discoverability",
      "evidence": "Both representative public pages returned 200, Lighthouse validated canonical and robots signals, and canonical URLs point to the primary xhamster.com host.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The representative video page had no JSON-LD, and the homepage resource probe found no Open Graph or Twitter metadata; title, H1, description, and canonical were otherwise present.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-structure.json",
        "evidence/resource-dom-confirmation.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "Headers reported CSP only as frame-ancestors 'self', without script/style/default restrictions. Cookies reported x_csrf_token and settings without Secure; settings also uses SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "trackers + secrets + HAR",
      "evidence": "No known tracker domains or exposed secrets were detected; most third-party bytes are first-party-owned xhcdn delivery, and consent provides Reject before personalised use.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "signup walkthrough",
      "evidence": "No browser permission prompt appeared on load; signup offers federated Google and X options rather than requiring a password-only path.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/signup-after-reject.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The headers probe found no X-Content-Type-Options and no response Referrer-Policy; Permissions-Policy only declared two UA client-hint features, while the document itself requests unsafe-url referrer behavior.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/recon.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "discoverability primitive",
      "evidence": "Raw HTML retained 86% of homepage and 77% of detail content; title, H1, and description survive without JavaScript.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "screenshots + Lighthouse",
      "evidence": "Consent and account overlays remained bounded in desktop captures; navigation is composed of real links and no runtime console errors were observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/signup.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "pass",
      "confidence": "high",
      "method": "manifest + service worker probe",
      "evidence": "A valid manifest is linked, an active service worker controls the page, and an xh-offline-cache-1.6.5 cache exists.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/pwa.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "service worker + state probe",
      "evidence": "The active service worker and named offline cache provide direct evidence of offline fallback infrastructure; the player also presents an explicit blocked state rather than a blank shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/pwa.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "cross-locale probes",
      "evidence": "English uses lang=en, Indonesian uses lang=id, and Arabic uses lang=ar with dir=rtl; translated headings and RTL reading direction rendered.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/locale-ar.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "cross-locale probes",
      "evidence": "Indonesian and Arabic hosts localise UI, headings, category names, and compact view-count labels rather than serving English-only markup.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/locale-id.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "The representative catalogue, video, and signup surfaces expose no dates, scheduled events, or time-zone-sensitive concepts.",
      "reason": "The representative catalogue, video, and signup surfaces expose no dates, scheduled events, or time-zone-sensitive concepts.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "screenshots + signup DOM",
      "evidence": "Consent Accept and Reject actions have equal visual prominence, signup clearly discloses public/partner data use, and required UK verification is explained.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/signup-after-reject.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No editable required-field form was exposed in the representative public flow; search has no required validation and signup initially offers identity-provider actions.",
      "reason": "No editable required-field form was exposed in the representative public flow; search has no required validation and signup initially offers identity-provider actions.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No address, payment, password, or profile input fields were exposed in the representative unauthenticated flow.",
      "reason": "No address, payment, password, or profile input fields were exposed in the representative unauthenticated flow.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "signup walkthrough",
      "evidence": "Signup offers login, multiple identity choices, terms/privacy links, and an explicit data-use disclosure before account creation; no forced continuity was exercised.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/signup-after-reject.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence gathered with the referenced artifact(s).",
      "evidence": "The images primitive found 29 of 36 images without width/height attributes, 13 oversized images, 15 legacy-format images, 8 below-fold images without lazy loading, and 3 without responsive sources.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "trace + video probe",
      "evidence": "No autoplay media was instantiated on home or gated detail, and trace did not show sustained background long-task activity.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-after-reject.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "high",
      "method": "HAR + images + detail probe",
      "evidence": "The 1.8 MB homepage is proportionate to a media catalogue, uses mostly WebP thumbnails, instantiates no autoplay video on the gated detail, and reports no known trackers.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No declared agent-facing intent or transactional agent tool surface was evident; this emerging capability is not required for this media catalogue.",
      "reason": "No declared agent-facing intent or transactional agent tool surface was evident; this emerging capability is not required for this media catalogue.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No experience in the audited media catalogue requires on-device language-model or summarisation inference.",
      "reason": "No experience in the audited media catalogue requires on-device language-model or summarisation inference.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "before/after heap summaries",
      "evidence": "After ten repeated language-menu toggles, retained heap was 37.9 MB versus 35.8 MB baseline (5.8% growth), with no Detached constructor among top populations; this bounded one-pass delta does not indicate unbounded retention.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "heap summary",
      "evidence": "Baseline retained self-size was 35.8 MB for a rich catalogue page; this is proportionate to the rendered surface and script set.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "heap comparison",
      "evidence": "Neither heap summary listed Detached constructors among the largest populations, and repeated menu toggling produced only bounded aggregate growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-post.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged not applicable to this site’s declared or observed surfaces."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage catalogue, global navigation, consent, preferences, mobile reflow, performance, privacy, accessibility, and memory. Represents the primary listing template.",
      "url": "https://xhchannel.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "forced-colors: active",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "categories",
      "description": "Category index, representing taxonomy/listing navigation and dense card layout.",
      "url": "https://xhchannel.com/categories",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Representative video detail and legally required UK age-gated playback state; represents media-detail pages.",
      "url": "https://xhchannel.com/videos/i-accident-my-neighbor-and-inject-my-cock-xh9SOO8",
      "conditions": [
        "desktop",
        "JavaScript-disabled crawler comparison"
      ],
      "result": "issues"
    },
    {
      "id": "signup",
      "description": "Signup/account entry modal, representing the account journey and disclosure state. Identity verification and authenticated account management were not covered because they require personal/legal credentials.",
      "url": "https://xhchannel.com/signup?source=menuSignup",
      "conditions": [
        "desktop",
        "consent rejected"
      ],
      "result": "issues"
    },
    {
      "id": "locales",
      "description": "Indonesian and Arabic home variants, representing translated and RTL rendering.",
      "url": "https://ara.xhchannel.com/",
      "conditions": [
        "lang=id",
        "lang=ar",
        "dir=rtl"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Animations continue when reduced motion is requested.",
      "evidence": "The reduced-motion evaluate probe reported eight running animations, each with a 2000 ms duration and infinite iterations, while prefers-reduced-motion: reduce matched; loaded CSS contained no reduced-motion media query.",
      "artifacts": [
        "evidence/preferences.json",
        "evidence/home-dark-reduced.png"
      ],
      "suggestedFix": "Add a prefers-reduced-motion: reduce override that removes non-essential looping animation and shortens necessary state transitions.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F02",
      "severity": "low",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "summary": "Page and state changes do not use View Transitions.",
      "evidence": "The CSS/platform probe found no view-transition rules or names; navigation is conventional multi-page replacement.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Progressively enhance same-origin navigation and substantial state swaps with View Transitions, retaining an instant fallback under reduced motion.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "css-layout",
      "guidanceCategory": "css",
      "summary": "Persistent chrome does not react to scroll state.",
      "evidence": "Desktop and long category screenshots show fixed, space-heavy navigation; the CSS probe found no scroll-state container queries or scroll-timeline support.",
      "artifacts": [
        "evidence/categories.png",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Reduce persistent chrome as content scrolls and use a progressive scroll-state/container-query treatment where browser support permits.",
      "effort": "medium",
      "pathId": "categories",
      "url": "https://xhchannel.com/categories"
    },
    {
      "id": "F04",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "A large consent modal obscures the primary content on every fresh visit.",
      "evidence": "Homepage, categories, detail, and signup screenshots all open with a 525x380 centered consent surface covering the core viewport, before interaction.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png",
        "evidence/signup.png"
      ],
      "suggestedFix": "Use a less obstructive consent surface where legally possible, retain equally prominent Accept and Reject actions, and remember the choice reliably.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F05",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Modal UI is built from generic divs rather than the native dialog primitive.",
      "evidence": "The platform probe found zero dialog, popover, or details elements; signup uses a DIV with role=dialog and aria-modal=true.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/signup-structure.json"
      ],
      "suggestedFix": "Use a native dialog for modal account and consent flows, with showModal(), focus containment, Escape handling, and explicit labelling.",
      "effort": "medium",
      "pathId": "signup",
      "url": "https://xhchannel.com/signup?source=menuSignup"
    },
    {
      "id": "F06",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "css-layout",
      "guidanceCategory": "css",
      "summary": "The desktop layout is forced into a 360 px mobile viewport.",
      "evidence": "At viewport 360x800, layout measured scrollWidth 1024 versus clientWidth 360 and 664 px horizontal overflow; the screenshot shows a cropped desktop sidebar and content grid.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Remove the 1024 px minimum layout, make navigation and cards intrinsically responsive, and validate no horizontal overflow at narrow widths.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "css-layout",
      "guidanceCategory": "css",
      "summary": "Components rely on a desktop-sized global layout rather than adapting to their container.",
      "evidence": "The CSS probe found no @container or container-type rules, and the 360 px capture retained the 1024 px desktop composition.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Introduce container queries for reusable navigation, card grids, and banners while preserving fluid intrinsic fallbacks.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F08",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Keyboard focus is invisible on key controls.",
      "evidence": "The focus probe programmatically focused Search, Login, Get started, the promo action, and an icon button; computed outline was none/0 px and no compensating box shadow appeared on most controls.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Provide a high-contrast :focus-visible ring on every interactive element and verify the full keyboard path.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F09",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Synthetic LCP misses the good threshold.",
      "evidence": "Lighthouse mobile measured LCP 2.9 s and FCP 2.8 s; the independent trace measured LCP 2.25 s, indicating a borderline experience dependent on conditions.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Prioritise the actual LCP element, reduce document response delay, and defer non-critical UI and scripts.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "The initial route has a broad resource and blocking surface.",
      "evidence": "HAR recorded 143 requests and 1.80 MB transferred, including 11 stylesheets and 61 scripts; three parser-inserted high-priority stylesheets were confirmed as media=all.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/resource-dom-confirmation.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Consolidate critical CSS, defer route-specific styles and dependencies, and reduce the initial request fan-out.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F11",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "The initial page ships unused CSS and JavaScript.",
      "evidence": "Lighthouse estimated 57 KiB unused CSS (87-95% unused in two files) and 26 KiB unused JavaScript; HAR shows one index script alone transferred 402 KB.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Split bundles by route and component, load below-fold features on demand, and remove CSS not needed for the initial viewport.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F12",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Several controls have missing or invalid accessible semantics.",
      "evidence": "axe reported a critical unnamed button, an unnamed role=button video item, prohibited aria-label use, nested interactive controls, and focusable content inside aria-hidden.",
      "artifacts": [
        "evidence/axe.json"
      ],
      "suggestedFix": "Give every control a stable accessible name, use native button/link elements, remove nested controls, and make hidden panels inert.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F13",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Important text fails WCAG AA contrast.",
      "evidence": "axe measured ratios as low as 1.75:1 on the age-verification subtitle, 2.15:1 on its heading, 3.29:1 for view counts, and 4.04:1 for signup text.",
      "artifacts": [
        "evidence/axe.json"
      ],
      "suggestedFix": "Adjust foreground/background design tokens to meet at least 4.5:1 for normal text and 3:1 for large text and essential UI.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Landmark and focus management are not consistently accessible.",
      "evidence": "axe found duplicate/unlabelled landmarks, nested complementary landmarks, and focusable descendants inside aria-hidden; the focus probe found several controls with no visible focus indicator.",
      "artifacts": [
        "evidence/axe.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Label repeated landmarks, keep asides top-level, make hidden regions inert, and establish a visible logical focus path.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F15",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Narrow-screen reflow is unusable without horizontal panning.",
      "evidence": "The 360 px viewport retained a 1024 px layout and overflowed by 664 px despite a valid viewport meta tag.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Support WCAG reflow by allowing the page to collapse to one column without horizontal scrolling, then retest at 320-360 px and 400% zoom.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F16",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Rich video pages omit structured data and social preview metadata.",
      "evidence": "The representative video page had no JSON-LD, and the homepage resource probe found no Open Graph or Twitter metadata; title, H1, description, and canonical were otherwise present.",
      "artifacts": [
        "evidence/detail-structure.json",
        "evidence/resource-dom-confirmation.json"
      ],
      "suggestedFix": "Add accurate VideoObject JSON-LD and Open Graph/Twitter metadata that matches the visible title, description, thumbnail, duration, and canonical URL.",
      "effort": "small",
      "pathId": "detail",
      "url": "https://xhchannel.com/videos/i-accident-my-neighbor-and-inject-my-cock-xh9SOO8"
    },
    {
      "id": "F17",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "The CSP is too narrow and two first-party cookies are not Secure.",
      "evidence": "Headers reported CSP only as frame-ancestors 'self', without script/style/default restrictions. Cookies reported x_csrf_token and settings without Secure; settings also uses SameSite=None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy a nonce/hash-based CSP with default-src and script-src protections, and set Secure plus an appropriate SameSite value on every HTTPS cookie.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F18",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Several browser-enforced defenses are missing or under-scoped.",
      "evidence": "The headers probe found no X-Content-Type-Options and no response Referrer-Policy; Permissions-Policy only declared two UA client-hint features, while the document itself requests unsafe-url referrer behavior.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/recon.json"
      ],
      "suggestedFix": "Set nosniff, a privacy-preserving Referrer-Policy, a least-privilege Permissions-Policy, and expand CSP beyond clickjacking protection.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "summary": "Many images are oversized or lack intrinsic sizing and modern delivery hints.",
      "evidence": "The images primitive found 29 of 36 images without width/height attributes, 13 oversized images, 15 legacy-format images, 8 below-fold images without lazy loading, and 3 without responsive sources.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Reserve image space, request sizes close to display dimensions, use modern formats and srcset/sizes, and lazy-load non-critical below-fold imagery.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhchannel.com/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Make the site genuinely reflow at narrow widths and zoom",
      "priority": 1,
      "findingIds": [
        "F06",
        "F07",
        "F15"
      ],
      "guidanceId": "css-layout",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Repair accessible names, landmarks, hidden-state focus, focus rings, and contrast",
      "priority": 2,
      "findingIds": [
        "F08",
        "F12",
        "F13",
        "F14"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Strengthen CSP, cookie flags, and defensive response policies",
      "priority": 3,
      "findingIds": [
        "F17",
        "F18"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Reduce initial bundles, blocking styles, and request fan-out",
      "priority": 4,
      "findingIds": [
        "F09",
        "F10",
        "F11"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Replace custom blocking overlays with semantic, less intrusive dialogs",
      "priority": 5,
      "findingIds": [
        "F04",
        "F05"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Respect reduced motion and progressively enhance navigation transitions",
      "priority": 6,
      "findingIds": [
        "F01",
        "F02",
        "F03"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Add rich video metadata and optimise image delivery",
      "priority": 7,
      "findingIds": [
        "F16",
        "F19"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-18T18-23-28-159Z"
}
