{
  "url": "https://www.erome.com",
  "auditedAt": "2026-07-20T02:38:29.583Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across public landing, listing, login, FAQ, 404 and one localized listing. Authenticated upload/profile/account surfaces were not covered because no test credentials were supplied.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered MPA with legacy Bootstrap/jQuery-style client enhancements",
    "notes": "Public adult media-sharing site. The origin was intermittent: one screenshot and sitemap request returned 503 while subsequent DOM and evidence captures succeeded."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "robots/sitemap HTTP fetch",
    "modern-web-guidance"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "scroll-entry-exit-effects",
    "physics-based-easing",
    "scroll-position-aware-elements",
    "position-aware-tooltips",
    "directional-navigation-transitions",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "fluid-scaling",
    "size-aware-styling",
    "forms",
    "required-field-feedback",
    "persistent-toast-notifications",
    "performance",
    "break-up-long-tasks",
    "optimize-image-priority",
    "identify-heavy-scripts",
    "html",
    "css",
    "security",
    "privacy",
    "passkeys",
    "flicker-free-client-side-ab-testing",
    "efficient-background-processing",
    "coordinate-global-events",
    "autofill-sign-in-form",
    "deliver-optimized-decorative-images",
    "webmcp",
    "language-model",
    "manage-recurring-intervals"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/css-i18n-ads-probe.json",
      "caption": "css i18n ads probe json"
    },
    {
      "type": "other",
      "path": "evidence/explore-cookies.json",
      "caption": "explore cookies json"
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-dark.png",
      "caption": "Explore under prefers-color-scheme: dark; byte-identical to default.",
      "condition": "prefers-color-scheme: dark"
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-desktop.png",
      "caption": "Explore listing at 1440x900, default preference."
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-discoverability-crawler.png",
      "caption": "No-JavaScript crawler view of Explore."
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-discoverability-rendered.png",
      "caption": "Rendered browser view of Explore."
    },
    {
      "type": "discoverability",
      "path": "evidence/explore-discoverability.json",
      "caption": "explore discoverability json"
    },
    {
      "type": "dom",
      "path": "evidence/explore-dom.json",
      "caption": "explore dom json"
    },
    {
      "type": "dom",
      "path": "evidence/explore-es-dom.json",
      "caption": "explore es dom json"
    },
    {
      "type": "other",
      "path": "evidence/explore-headers.json",
      "caption": "explore headers json"
    },
    {
      "type": "heap",
      "path": "evidence/explore-heap-baseline.json",
      "caption": "explore heap baseline json"
    },
    {
      "type": "heap",
      "path": "evidence/explore-heap-post.json",
      "caption": "explore heap post json"
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-high-contrast.png",
      "caption": "Explore under forced-colors and prefers-contrast: more.",
      "condition": "forced-colors: active, prefers-contrast: more"
    },
    {
      "type": "other",
      "path": "evidence/explore-images.json",
      "caption": "explore images json"
    },
    {
      "type": "layout",
      "path": "evidence/explore-layout-mobile.json",
      "caption": "explore layout mobile json",
      "condition": "viewport: 360x800"
    },
    {
      "type": "other",
      "path": "evidence/explore-memory-metrics.json",
      "caption": "explore memory metrics json"
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-mobile.png",
      "caption": "Explore listing at 360x800.",
      "condition": "viewport: 360x800"
    },
    {
      "type": "other",
      "path": "evidence/explore-probe.json",
      "caption": "explore probe json"
    },
    {
      "type": "other",
      "path": "evidence/explore-reduced-motion.json",
      "caption": "explore reduced motion json"
    },
    {
      "type": "other",
      "path": "evidence/explore-secrets.json",
      "caption": "explore secrets json"
    },
    {
      "type": "other",
      "path": "evidence/explore-summary.json",
      "caption": "explore summary json"
    },
    {
      "type": "trace-summary",
      "path": "evidence/explore-trace-summary.json",
      "caption": "explore trace summary json"
    },
    {
      "type": "trace",
      "path": "evidence/explore-trace.json",
      "caption": "explore trace json"
    },
    {
      "type": "other",
      "path": "evidence/explore-trackers.json",
      "caption": "explore trackers json"
    },
    {
      "type": "har",
      "path": "evidence/explore.har",
      "caption": "explore har"
    },
    {
      "type": "dom",
      "path": "evidence/faq-dom.json",
      "caption": "faq dom json"
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "guidance retrieved md"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Intermittent origin failure captured on the home route (HTTP 503 presentation)."
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom json"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-explore.json",
      "caption": "lighthouse explore json"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-key-audits.json",
      "caption": "lighthouse key audits json"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-login.json",
      "caption": "lighthouse login json"
    },
    {
      "type": "dom",
      "path": "evidence/login-dom.json",
      "caption": "login dom json"
    },
    {
      "type": "layout",
      "path": "evidence/login-layout-mobile.json",
      "caption": "login layout mobile json",
      "condition": "viewport: 360x800"
    },
    {
      "type": "screenshot",
      "path": "evidence/login-mobile.png",
      "caption": "Email login at 360x800.",
      "condition": "viewport: 360x800"
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe json"
    },
    {
      "type": "other",
      "path": "evidence/login-validation.json",
      "caption": "login validation json"
    },
    {
      "type": "dom",
      "path": "evidence/not-found-dom.json",
      "caption": "not found dom json"
    },
    {
      "type": "other",
      "path": "evidence/not-found-headers.txt",
      "caption": "not found headers txt"
    },
    {
      "type": "other",
      "path": "evidence/pwa-probe.json",
      "caption": "pwa probe json"
    }
  ],
  "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": "issues",
      "confidence": "medium",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Desktop screenshots under default and prefers-color-scheme: dark are byte-identical, and the CSS probe found no color-scheme declaration or prefers-color-scheme rule.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F01"
      ],
      "artifacts": [
        "evidence/explore-desktop.png",
        "evidence/explore-dark.png"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() returned none and scroll behavior remained auto; there is no nonessential motion to suppress.",
      "pathIds": [
        "explore"
      ],
      "artifacts": [
        "evidence/explore-reduced-motion.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility, emulated screenshot and DOM/focus probe",
      "evidence": "The forced-colors/prefers-contrast screenshot preserves readable text, controls, selected tabs and focus boundaries; Lighthouse contrast passed.",
      "pathIds": [
        "explore"
      ],
      "artifacts": [
        "evidence/explore-high-contrast.png",
        "evidence/lighthouse-key-audits.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The full stylesheet probe found no view-transition rules; the public listing navigates with ordinary full-page anchors.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F02"
      ],
      "artifacts": [
        "evidence/explore-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The audited pages contain no scroll-linked animation to implement or migrate.",
      "reason": "The audited pages contain no scroll-linked animation to implement or migrate."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The representative public paths use native scrolling and ordinary activation, with no gesture-driven control.",
      "reason": "The representative public paths use native scrolling and ordinary activation, with no gesture-driven control."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The 5,016px mobile listing keeps static chrome and exposes no scroll-state/container or progress signal in the stylesheet probe.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F03"
      ],
      "artifacts": [
        "evidence/explore-mobile.png",
        "evidence/explore-layout-mobile.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "medium",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "DOM/CSS inspection found no anchor-name, position-anchor, or position-try rules, while navigation is implemented as custom/legacy menu chrome.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F04"
      ],
      "artifacts": [
        "evidence/explore-probe.json",
        "evidence/explore-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The mobile screenshot clearly marks Explore, HOT as the selected tab, and card destinations with consistent visual grouping.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Desktop/mobile load screenshots show content immediately with no full-screen modal, consent wall, or blocking interstitial.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Rendered DOM contains a Bootstrap-style div.modal with role=dialog and no dialog, popover, or details elements.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F05"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/explore-probe.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "On mobile, content cards begin directly below compact navigation and dominate the 5,016px page; no application frame obscures the feed.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Layout at 360x800 reports scrollWidth=clientWidth=360 and horizontalOverflowPx=0 on Explore and Login.",
      "pathIds": [
        "explore"
      ],
      "artifacts": [
        "evidence/explore-layout-mobile.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The Explore stylesheet probe found no @container rules even though reusable feed cards and navigation appear at several widths.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F06"
      ],
      "artifacts": [
        "evidence/explore-probe.json",
        "evidence/explore-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The login focus probe reported outline:none and no box shadow for navigation links, the menu button, password field, submit button and footer links; several controls are 13–34px high.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F07"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The Explore H1, HOT/NEW tabs and immediately visible media grid make the public browsing purpose and next action clear.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The server-rendered Explore listing exposes 134 real href links and public browsing works without an account wall.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The 404 route returns HTTP 404 with a Page not found explanation and alternative content; required login fields expose native validation messages.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Trace, layout, HAR and Lighthouse",
      "evidence": "Lighthouse measured LCP 4.7s, Speed Index 16.4s and a 10.53s root-document response, despite a separate trace measuring LCP 1.53s; the variance itself indicates unreliable delivery.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F08"
      ],
      "artifacts": [
        "evidence/lighthouse-explore.json",
        "evidence/explore-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Trace, layout, HAR and Lighthouse",
      "evidence": "Mobile layout measured CLS 0.0019 on Explore and 0.0089 on Login, both well within the good range.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Trace, layout, HAR and Lighthouse",
      "evidence": "Trace recorded one 50.56ms task and only 0.56ms total blocking time; layout observers recorded no long tasks.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Trace, layout, HAR and Lighthouse",
      "evidence": "Lighthouse reported about 110KiB cache-lifetime savings and 310ms render-blocking savings; the HAR captured 58 requests and 759,455 transferred bytes.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F09"
      ],
      "artifacts": [
        "evidence/lighthouse-explore.json",
        "evidence/explore-summary.json",
        "evidence/explore.har"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Trace, layout, HAR and Lighthouse",
      "evidence": "Lighthouse estimated 213KiB unused JavaScript, 31KiB unused CSS and 43KiB legacy JavaScript savings.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F10"
      ],
      "artifacts": [
        "evidence/lighthouse-explore.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, emulated screenshot and DOM/focus probe",
      "evidence": "Lighthouse found two missing-alt images in the disclaimer; DOM inspection found the required captcha input has no associated label.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F11"
      ],
      "artifacts": [
        "evidence/lighthouse-key-audits.json",
        "evidence/login-probe.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility, emulated screenshot and DOM/focus probe",
      "evidence": "Lighthouse color-contrast passed and the forced-colors screenshot remains legible.",
      "pathIds": [
        "explore"
      ],
      "artifacts": [
        "evidence/explore-high-contrast.png",
        "evidence/lighthouse-key-audits.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, emulated screenshot and DOM/focus probe",
      "evidence": "Focus probing found no visible outline on most links/buttons/inputs, while the login DOM visually says Login but exposes no H1/H2/H3.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F12"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility, emulated screenshot and DOM/focus probe",
      "evidence": "Mobile screenshots show unclipped headings, labels and card text with usable wrapping across 360px.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility, emulated screenshot and DOM/focus probe",
      "evidence": "Viewport permits scaling, both tested paths reflow at 360px with no overflow, and Lighthouse target-size passed; no autoplay media is present on the listing.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Lighthouse recorded zero browser console errors on Explore.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The image primitive found 18 images without width/height and 22 without srcset; Lighthouse also failed unsized-images.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F13"
      ],
      "artifacts": [
        "evidence/explore-images.json",
        "evidence/lighthouse-explore.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Lighthouse found an unload listener in libraries.js and four BFCache failure reasons.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F14"
      ],
      "artifacts": [
        "evidence/lighthouse-key-audits.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, raw discoverability, robots/sitemap and Lighthouse",
      "evidence": "Home and Explore have descriptive unique titles and a nonempty meta description in rendered/server HTML.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, raw discoverability, robots/sitemap and Lighthouse",
      "evidence": "All 134 Explore anchors have hrefs, viewport meta is present, robots.txt allows the audited routes, and Lighthouse crawlability/link text passed.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, raw discoverability, robots/sitemap and Lighthouse",
      "evidence": "The live page declares x-default and en hreflang as https://dev.erome.com/explore; /sitemap.xml returned 503 during recon while robots allows the public site.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F15"
      ],
      "artifacts": [
        "evidence/css-i18n-ads-probe.json",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, raw discoverability, robots/sitemap and Lighthouse",
      "evidence": "The Explore DOM probe found zero Open Graph tags and zero JSON-LD blocks despite a public media listing with named content.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F16"
      ],
      "artifacts": [
        "evidence/explore-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, HAR, secrets and DOM probes",
      "evidence": "Headers show no CSP or nosniff; both Google Analytics cookies were set without Secure and all four cookies use SameSite=None.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F17"
      ],
      "artifacts": [
        "evidence/explore-headers.json",
        "evidence/explore-cookies.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, HAR, secrets and DOM probes",
      "evidence": "Tracker capture saw 31 non-page origins, including Google Tag Manager/Analytics plus ad-provider and tsyndicate requests; analytics cookies persist for 400 days.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F18"
      ],
      "artifacts": [
        "evidence/explore-trackers.json",
        "evidence/explore-cookies.json",
        "evidence/explore-summary.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Headers, cookies, trackers, HAR, secrets and DOM probes",
      "evidence": "No notification/geolocation prompt fired on load; sign-in offers Google, Reddit and Twitter federation in addition to email.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, HAR, secrets and DOM probes",
      "evidence": "The main response lacks clickjacking protection, Referrer-Policy and Permissions-Policy in addition to CSP; only HSTS is present.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F19"
      ],
      "artifacts": [
        "evidence/explore-headers.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, raw discoverability, robots/sitemap and Lighthouse",
      "evidence": "Discoverability measured 100% raw/rendered content coverage, with title, H1 and description available without JavaScript.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Public navigation and the mobile menu render within the viewport; the server-rendered feed remains usable without fragile client state.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "A valid standalone manifest is present, but navigator.serviceWorker.getRegistration() returned null.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F20"
      ],
      "artifacts": [
        "evidence/pwa-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The HTTP 404 path provides a clear recovery page and the intermittent 503 response provides an explicit Service Unavailable message rather than a broken shell.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The English page advertises 16 localized alternates and Spanish correctly uses lang=es, but stylesheet inspection counted 313 left, 214 right and zero logical-property declarations.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F21"
      ],
      "artifacts": [
        "evidence/css-i18n-ads-probe.json",
        "evidence/explore-es-dom.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The Spanish alternate renders lang=es and a localized title (Inicio - Vídeo y Foto Porno Gratis), while the English page uses lang=en.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "No dates, event times, schedules, or other time-zone-sensitive data appear on the representative public paths.",
      "reason": "No dates, event times, schedules, or other time-zone-sensitive data appear on the representative public paths."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The first mobile row presents CAM GIRLS, AI CUM SLUT and AI JERK OFF as site chrome; DOM shows these route through /o/menu-* advertising redirects with no ad label.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F22"
      ],
      "artifacts": [
        "evidence/explore-mobile.png",
        "evidence/css-i18n-ads-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "Empty required login fields are invalid only on validation and expose clear native “Please fill in this field” messages; password paste is not blocked.",
      "pathIds": [
        "login"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The required email and password inputs both expose an empty autocomplete value.",
      "pathIds": [
        "login"
      ],
      "findingIds": [
        "F23"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "No checkout, subscription, paid continuity, or authenticated account-management flow was reachable in the public scope.",
      "reason": "No checkout, subscription, paid continuity, or authenticated account-management flow was reachable in the public scope."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The image audit found 41 legacy-format images, no modern-format images, and 22 missing srcset.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F24"
      ],
      "artifacts": [
        "evidence/explore-images.json",
        "evidence/explore-summary.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "The 5-second trace shows negligible blocking work and the 759KB listing load contains no autoplay audio/video.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, HAR, secrets and DOM probes",
      "evidence": "The page contacted 31 non-page origins and known trackers during a 759KB load before the user opened any media.",
      "pathIds": [
        "explore"
      ],
      "findingIds": [
        "F25"
      ],
      "artifacts": [
        "evidence/explore-trackers.json",
        "evidence/explore-summary.json"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Rendered DOM, raw discoverability, robots/sitemap and Lighthouse",
      "evidence": "No declared agent-facing intent or transactional tool surface was found; this emerging capability is contextual.",
      "reason": "No declared agent-facing intent or transactional tool surface was found; this emerging capability is contextual."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "No summarisation or inference task is part of the representative public experience; on-device AI is not applicable.",
      "reason": "No summarisation or inference task is part of the representative public experience; on-device AI is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Representative screenshot, DOM/CSS probe and flow review",
      "evidence": "After ten bottom/top feed cycles, heap self-size decreased from 8,332,814 to 8,323,607 bytes and DOM node count remained 1,142 in the same-window probe.",
      "pathIds": [
        "explore"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Heap summaries plus repeated-interaction metrics",
      "evidence": "Baseline heap is 8.33MB self-size for a 100-image feed, proportionate to the page content.",
      "pathIds": [
        "explore"
      ],
      "artifacts": [
        "evidence/explore-heap-baseline.json",
        "evidence/explore-heap-post.json",
        "evidence/explore-memory-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Heap summaries plus repeated-interaction metrics",
      "evidence": "Baseline/post summaries show no Detached* constructor among top retained constructors; same-window DOM nodes remained 1,142 after ten cycles.",
      "pathIds": [
        "explore"
      ],
      "artifacts": [
        "evidence/explore-heap-baseline.json",
        "evidence/explore-heap-post.json",
        "evidence/explore-memory-metrics.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",
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F24",
        "F25"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged contextual and not applicable to the representative public experience."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Public landing and sign-in/explore gateway; represents entry and authentication choices.",
      "url": "https://www.erome.com/",
      "conditions": [
        "desktop",
        "raw DOM",
        "intermittent 503"
      ],
      "result": "issues"
    },
    {
      "id": "explore",
      "description": "Primary public listing and browsing journey; represents the highest-volume content/feed template.",
      "url": "https://www.erome.com/explore",
      "conditions": [
        "desktop",
        "360x800",
        "dark scheme",
        "reduced motion",
        "forced colors",
        "no JavaScript",
        "repeated scroll interaction"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Email sign-in form; represents form labels, validation, autofill and keyboard behavior.",
      "url": "https://www.erome.com/user/login",
      "conditions": [
        "360x800",
        "keyboard focus",
        "empty required-field validation"
      ],
      "result": "issues"
    },
    {
      "id": "faq",
      "description": "FAQ content template; sampled as a static support/content archetype.",
      "url": "https://www.erome.com/s/faq",
      "conditions": [
        "rendered DOM"
      ],
      "result": "pass"
    },
    {
      "id": "not-found",
      "description": "Intentional missing URL; represents HTTP failure and recovery behavior.",
      "url": "https://www.erome.com/definitely-not-a-real-page-web-uplift",
      "conditions": [
        "HTTP 404",
        "rendered DOM"
      ],
      "result": "pass"
    },
    {
      "id": "explore-es",
      "description": "Spanish Explore alternate; samples localized language metadata and template output.",
      "url": "https://es.erome.com/explore",
      "conditions": [
        "rendered DOM"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F07",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard focus is not visibly indicated and several controls are too short for comfortable touch use.",
      "evidence": "The login focus probe reported outline:none and no box shadow for navigation links, the menu button, password field, submit button and footer links; several controls are 13–34px high.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-mobile.png"
      ],
      "suggestedFix": "Add clear :focus-visible rings and increase interactive target boxes/spacing to at least 24px minimum, preferably 44px for primary touch controls.",
      "effort": "small"
    },
    {
      "id": "F08",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Explore can load slowly under lab conditions.",
      "evidence": "Lighthouse measured LCP 4.7s, Speed Index 16.4s and a 10.53s root-document response, despite a separate trace measuring LCP 1.53s; the variance itself indicates unreliable delivery.",
      "artifacts": [
        "evidence/lighthouse-explore.json",
        "evidence/explore-trace-summary.json"
      ],
      "suggestedFix": "Stabilize origin response time, prioritize the LCP thumbnail, and monitor field LCP/INP/CLS by route.",
      "effort": "medium"
    },
    {
      "id": "F11",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Some images and the CAPTCHA input lack accessible alternatives or labels.",
      "evidence": "Lighthouse found two missing-alt images in the disclaimer; DOM inspection found the required captcha input has no associated label.",
      "artifacts": [
        "evidence/lighthouse-key-audits.json",
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Give meaningful images alt text, mark decorative imagery alt=\"\", and associate a visible label/instructions with the CAPTCHA control.",
      "effort": "small"
    },
    {
      "id": "F12",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard users cannot reliably see focus, and the login page lacks a semantic heading.",
      "evidence": "Focus probing found no visible outline on most links/buttons/inputs, while the login DOM visually says Login but exposes no H1/H2/H3.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-mobile.png"
      ],
      "suggestedFix": "Add :focus-visible styling and use a real heading plus main landmark for the login content.",
      "effort": "small"
    },
    {
      "id": "F15",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Locale indexing signals point English and default users at development hosts, and the sitemap was unavailable.",
      "evidence": "The live page declares x-default and en hreflang as https://dev.erome.com/explore; /sitemap.xml returned 503 during recon while robots allows the public site.",
      "artifacts": [
        "evidence/css-i18n-ads-probe.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Point hreflang entries at production canonical hosts, add reciprocal alternates, and keep sitemap.xml reliably available.",
      "effort": "small"
    },
    {
      "id": "F17",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Transport is HTTPS, but CSP and cookie protections are incomplete.",
      "evidence": "Headers show no CSP or nosniff; both Google Analytics cookies were set without Secure and all four cookies use SameSite=None.",
      "artifacts": [
        "evidence/explore-headers.json",
        "evidence/explore-cookies.json"
      ],
      "suggestedFix": "Deploy a restrictive CSP and nosniff, mark HTTPS cookies Secure, and use Lax/Strict SameSite unless cross-site behavior is required.",
      "effort": "medium"
    },
    {
      "id": "F18",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "severity": "high",
      "confidence": "high",
      "summary": "The page exposes a broad advertising and analytics network surface.",
      "evidence": "Tracker capture saw 31 non-page origins, including Google Tag Manager/Analytics plus ad-provider and tsyndicate requests; analytics cookies persist for 400 days.",
      "artifacts": [
        "evidence/explore-trackers.json",
        "evidence/explore-cookies.json",
        "evidence/explore-summary.json"
      ],
      "suggestedFix": "Inventory every third party, remove nonessential trackers, gate advertising/analytics appropriately, and shorten retention.",
      "effort": "large"
    },
    {
      "id": "F19",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Several browser-enforced defenses are absent.",
      "evidence": "The main response lacks clickjacking protection, Referrer-Policy and Permissions-Policy in addition to CSP; only HSTS is present.",
      "artifacts": [
        "evidence/explore-headers.json"
      ],
      "suggestedFix": "Add frame-ancestors or X-Frame-Options, a strict Referrer-Policy, a least-privilege Permissions-Policy and CSP.",
      "effort": "small"
    },
    {
      "id": "F22",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "custom-button-actions",
      "severity": "high",
      "confidence": "high",
      "summary": "Prominent advertising links are styled as first-party navigation without being identified as ads.",
      "evidence": "The first mobile row presents CAM GIRLS, AI CUM SLUT and AI JERK OFF as site chrome; DOM shows these route through /o/menu-* advertising redirects with no ad label.",
      "artifacts": [
        "evidence/explore-mobile.png",
        "evidence/css-i18n-ads-probe.json"
      ],
      "suggestedFix": "Clearly label sponsored/external destinations and visually separate them from primary product navigation.",
      "effort": "small"
    },
    {
      "id": "F05",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "severity": "medium",
      "confidence": "high",
      "summary": "Transient and modal UI is built from generic divs instead of modern semantic primitives.",
      "evidence": "Rendered DOM contains a Bootstrap-style div.modal with role=dialog and no dialog, popover, or details elements.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/explore-probe.json"
      ],
      "suggestedFix": "Migrate modal flows to <dialog> and transient menus to popover with declarative light-dismiss and focus handling.",
      "effort": "medium"
    },
    {
      "id": "F09",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "severity": "medium",
      "confidence": "high",
      "summary": "Caching and render-critical delivery leave avoidable load cost.",
      "evidence": "Lighthouse reported about 110KiB cache-lifetime savings and 310ms render-blocking savings; the HAR captured 58 requests and 759,455 transferred bytes.",
      "artifacts": [
        "evidence/lighthouse-explore.json",
        "evidence/explore-summary.json",
        "evidence/explore.har"
      ],
      "suggestedFix": "Set durable immutable caching for versioned assets and trim confirmed render-blocking CSS/script chains.",
      "effort": "medium"
    },
    {
      "id": "F10",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "severity": "medium",
      "confidence": "high",
      "summary": "The listing ships substantial unused and legacy code.",
      "evidence": "Lighthouse estimated 213KiB unused JavaScript, 31KiB unused CSS and 43KiB legacy JavaScript savings.",
      "artifacts": [
        "evidence/lighthouse-explore.json"
      ],
      "suggestedFix": "Split route bundles, remove unused library features, and serve a modern baseline bundle without unnecessary legacy transforms.",
      "effort": "medium"
    },
    {
      "id": "F13",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Many images omit intrinsic dimensions and responsive sources.",
      "evidence": "The image primitive found 18 images without width/height and 22 without srcset; Lighthouse also failed unsized-images.",
      "artifacts": [
        "evidence/explore-images.json",
        "evidence/lighthouse-explore.json"
      ],
      "suggestedFix": "Emit width and height for every image and provide responsive candidates for content thumbnails and avatars.",
      "effort": "small"
    },
    {
      "id": "F14",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Deprecated unload handling prevents clean browser lifecycle behavior.",
      "evidence": "Lighthouse found an unload listener in libraries.js and four BFCache failure reasons.",
      "artifacts": [
        "evidence/lighthouse-key-audits.json"
      ],
      "suggestedFix": "Remove unload listeners, use pagehide/visibilitychange where needed, and resolve the reported BFCache blockers.",
      "effort": "medium"
    },
    {
      "id": "F16",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Public content pages lack social preview and structured entity metadata.",
      "evidence": "The Explore DOM probe found zero Open Graph tags and zero JSON-LD blocks despite a public media listing with named content.",
      "artifacts": [
        "evidence/explore-probe.json"
      ],
      "suggestedFix": "Add accurate Open Graph/Twitter metadata and appropriate schema.org JSON-LD that matches visible content.",
      "effort": "small"
    },
    {
      "id": "F21",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "coordinate-global-events",
      "severity": "medium",
      "confidence": "high",
      "summary": "Localized pages are not built to adapt cleanly to bidirectional writing modes.",
      "evidence": "The English page advertises 16 localized alternates and Spanish correctly uses lang=es, but stylesheet inspection counted 313 left, 214 right and zero logical-property declarations.",
      "artifacts": [
        "evidence/css-i18n-ads-probe.json",
        "evidence/explore-es-dom.json"
      ],
      "suggestedFix": "Replace directional layout declarations with inline/block logical properties and test an RTL locale before adding one.",
      "effort": "medium"
    },
    {
      "id": "F23",
      "pathId": "login",
      "url": "https://www.erome.com/user/login",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-in-form",
      "severity": "medium",
      "confidence": "high",
      "summary": "Sign-in fields omit standard autocomplete assistance.",
      "evidence": "The required email and password inputs both expose an empty autocomplete value.",
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Add autocomplete=\"username\" to email and autocomplete=\"current-password\" to password; retain paste support.",
      "effort": "trivial"
    },
    {
      "id": "F24",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "severity": "medium",
      "confidence": "high",
      "summary": "The image-heavy feed does not use modern responsive image delivery consistently.",
      "evidence": "The image audit found 41 legacy-format images, no modern-format images, and 22 missing srcset.",
      "artifacts": [
        "evidence/explore-images.json",
        "evidence/explore-summary.json"
      ],
      "suggestedFix": "Generate AVIF/WebP variants and sizes/srcset candidates while keeping legacy fallback sources.",
      "effort": "medium"
    },
    {
      "id": "F25",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "severity": "medium",
      "confidence": "high",
      "summary": "Advertising and analytics consume a disproportionate share of the lightweight listing shell.",
      "evidence": "The page contacted 31 non-page origins and known trackers during a 759KB load before the user opened any media.",
      "artifacts": [
        "evidence/explore-trackers.json",
        "evidence/explore-summary.json"
      ],
      "suggestedFix": "Set a third-party budget, defer nonessential ad/analytics work until appropriate, and remove vendors that do not justify their cost.",
      "effort": "large"
    },
    {
      "id": "F01",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "severity": "low",
      "confidence": "medium",
      "summary": "The interface does not adapt its theme to the user’s color-scheme preference.",
      "evidence": "Desktop screenshots under default and prefers-color-scheme: dark are byte-identical, and the CSS probe found no color-scheme declaration or prefers-color-scheme rule.",
      "artifacts": [
        "evidence/explore-desktop.png",
        "evidence/explore-dark.png"
      ],
      "suggestedFix": "Declare color-scheme and use preference-aware surface tokens so the theme follows the user without breaking the existing dark presentation.",
      "effort": "small"
    },
    {
      "id": "F02",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "severity": "low",
      "confidence": "high",
      "summary": "Route and state changes use abrupt swaps rather than View Transitions.",
      "evidence": "The full stylesheet probe found no view-transition rules; the public listing navigates with ordinary full-page anchors.",
      "artifacts": [
        "evidence/explore-probe.json"
      ],
      "suggestedFix": "Progressively enhance same-document and cross-document navigation with View Transitions, retaining the current instant fallback.",
      "effort": "medium"
    },
    {
      "id": "F03",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-position-aware-elements",
      "severity": "low",
      "confidence": "high",
      "summary": "The long feed has no scroll-position feedback or state-aware chrome.",
      "evidence": "The 5,016px mobile listing keeps static chrome and exposes no scroll-state/container or progress signal in the stylesheet probe.",
      "artifacts": [
        "evidence/explore-mobile.png",
        "evidence/explore-layout-mobile.json"
      ],
      "suggestedFix": "Add a lightweight declarative scroll progress or scroll-state-aware header treatment for the long Explore feed.",
      "effort": "small"
    },
    {
      "id": "F04",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "position-aware-tooltips",
      "severity": "low",
      "confidence": "medium",
      "summary": "Menus and overlays use legacy manual positioning rather than anchored positioning.",
      "evidence": "DOM/CSS inspection found no anchor-name, position-anchor, or position-try rules, while navigation is implemented as custom/legacy menu chrome.",
      "artifacts": [
        "evidence/explore-probe.json",
        "evidence/explore-mobile.png"
      ],
      "suggestedFix": "Use CSS anchor positioning with fallback positions for menus that must remain attached near viewport edges.",
      "effort": "medium"
    },
    {
      "id": "F06",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "severity": "low",
      "confidence": "high",
      "summary": "Responsive components rely only on viewport styling rather than container-aware behavior.",
      "evidence": "The Explore stylesheet probe found no @container rules even though reusable feed cards and navigation appear at several widths.",
      "artifacts": [
        "evidence/explore-probe.json",
        "evidence/explore-mobile.png"
      ],
      "suggestedFix": "Introduce container queries for reusable feed/card regions while keeping viewport rules as fallback where needed.",
      "effort": "medium"
    },
    {
      "id": "F20",
      "pathId": "explore",
      "url": "https://www.erome.com/explore",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "efficient-background-processing",
      "severity": "low",
      "confidence": "high",
      "summary": "The app-like feed advertises installability but has no offline runtime.",
      "evidence": "A valid standalone manifest is present, but navigator.serviceWorker.getRegistration() returned null.",
      "artifacts": [
        "evidence/pwa-probe.json"
      ],
      "suggestedFix": "If installability is intentional, register a service worker with a small offline fallback; otherwise avoid presenting an incomplete app posture.",
      "effort": "medium"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Add clear :focus-visible rings and increase interactive target boxes/spacing to at least 24px minimum, preferably 44px for primary touch controls",
      "priority": 1,
      "findingIds": [
        "F07"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Stabilize origin response time, prioritize the LCP thumbnail, and monitor field LCP/INP/CLS by route",
      "priority": 2,
      "findingIds": [
        "F08"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Give meaningful images alt text, mark decorative imagery alt=\"\", and associate a visible label/instructions with the CAPTCHA control",
      "priority": 3,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Add :focus-visible styling and use a real heading plus main landmark for the login content",
      "priority": 4,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Point hreflang entries at production canonical hosts, add reciprocal alternates, and keep sitemap",
      "priority": 5,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Deploy a restrictive CSP and nosniff, mark HTTPS cookies Secure, and use Lax/Strict SameSite unless cross-site behavior is required",
      "priority": 6,
      "findingIds": [
        "F17"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Inventory every third party, remove nonessential trackers, gate advertising/analytics appropriately, and shorten retention",
      "priority": 7,
      "findingIds": [
        "F18"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Add frame-ancestors or X-Frame-Options, a strict Referrer-Policy, a least-privilege Permissions-Policy and CSP",
      "priority": 8,
      "findingIds": [
        "F19"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Clearly label sponsored/external destinations and visually separate them from primary product navigation",
      "priority": 9,
      "findingIds": [
        "F22"
      ],
      "guidanceId": "custom-button-actions",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Migrate modal flows to <dialog> and transient menus to popover with declarative light-dismiss and focus handling",
      "priority": 10,
      "findingIds": [
        "F05"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Set durable immutable caching for versioned assets and trim confirmed render-blocking CSS/script chains",
      "priority": 11,
      "findingIds": [
        "F09"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Split route bundles, remove unused library features, and serve a modern baseline bundle without unnecessary legacy transforms",
      "priority": 12,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T13",
      "title": "Emit width and height for every image and provide responsive candidates for content thumbnails and avatars",
      "priority": 13,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T14",
      "title": "Remove unload listeners, use pagehide/visibilitychange where needed, and resolve the reported BFCache blockers",
      "priority": 14,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T15",
      "title": "Add accurate Open Graph/Twitter metadata and appropriate schema",
      "priority": 15,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T16",
      "title": "Replace directional layout declarations with inline/block logical properties and test an RTL locale before adding one",
      "priority": 16,
      "findingIds": [
        "F21"
      ],
      "guidanceId": "coordinate-global-events",
      "status": "open"
    },
    {
      "id": "T17",
      "title": "Add autocomplete=\"username\" to email and autocomplete=\"current-password\" to password; retain paste support",
      "priority": 17,
      "findingIds": [
        "F23"
      ],
      "guidanceId": "autofill-sign-in-form",
      "status": "open"
    },
    {
      "id": "T18",
      "title": "Generate AVIF/WebP variants and sizes/srcset candidates while keeping legacy fallback sources",
      "priority": 18,
      "findingIds": [
        "F24"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T19",
      "title": "Set a third-party budget, defer nonessential ad/analytics work until appropriate, and remove vendors that do not justify their cost",
      "priority": 19,
      "findingIds": [
        "F25"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    },
    {
      "id": "T20",
      "title": "Declare color-scheme and use preference-aware surface tokens so the theme follows the user without breaking the existing dark presentation",
      "priority": 20,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T21",
      "title": "Progressively enhance same-document and cross-document navigation with View Transitions, retaining the current instant fallback",
      "priority": 21,
      "findingIds": [
        "F02"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T22",
      "title": "Add a lightweight declarative scroll progress or scroll-state-aware header treatment for the long Explore feed",
      "priority": 22,
      "findingIds": [
        "F03"
      ],
      "guidanceId": "scroll-position-aware-elements",
      "status": "open"
    },
    {
      "id": "T23",
      "title": "Use CSS anchor positioning with fallback positions for menus that must remain attached near viewport edges",
      "priority": 23,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "position-aware-tooltips",
      "status": "open"
    },
    {
      "id": "T24",
      "title": "Introduce container queries for reusable feed/card regions while keeping viewport rules as fallback where needed",
      "priority": 24,
      "findingIds": [
        "F06"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T25",
      "title": "If installability is intentional, register a service worker with a small offline fallback; otherwise avoid presenting an incomplete app posture",
      "priority": 25,
      "findingIds": [
        "F20"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-20T02-38-29-583Z"
}
