{
  "url": "https://www.haberler.com",
  "auditedAt": "2026-07-23T09:00:00.000Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete representative audit of homepage, section, article, search, and error templates.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered MPA",
    "notes": "Turkish public news site with a PWA manifest/service worker and extensive ad/analytics integrations."
  },
  "evidenceUsed": [
    "screenshot",
    "dom+computed-styles",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "images",
    "secrets",
    "lighthouse",
    "heap-summary"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "adapt-scrollbar-to-contrast-preferences",
    "cross-document-transitions",
    "scroll-progress-indicator",
    "directional-navigation-transitions",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "size-aware-styling",
    "accessibility",
    "improve-text-layout-and-legibility",
    "conditional-async-dependencies",
    "optimize-image-priority",
    "break-up-long-tasks",
    "optimize-preload-priority",
    "identify-heavy-scripts",
    "html",
    "security",
    "privacy",
    "persistent-toast-notifications",
    "forms",
    "deprioritize-background-fetches",
    "efficient-background-processing"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-crawler.png",
      "caption": "article discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-rendered.png",
      "caption": "article discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/article-discoverability.json",
      "caption": "article discoverability",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/article-links.json",
      "caption": "article links",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-mobile.png",
      "caption": "article mobile",
      "findingIds": [
        "F03",
        "F05",
        "F06",
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/article-probe.json",
      "caption": "article probe",
      "findingIds": [
        "F07",
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F22"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F22",
        "F24"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-scroll.heapsnapshot",
      "caption": "heap scroll",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F06",
        "F10"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F04",
        "F20"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "findingIds": [
        "F06",
        "F10",
        "F11",
        "F26"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-probe.json",
      "caption": "home probe",
      "findingIds": [
        "F01",
        "F02",
        "F03",
        "F05",
        "F07",
        "F08",
        "F09",
        "F10",
        "F14",
        "F15",
        "F16",
        "F18",
        "F27"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F14",
        "F15",
        "F23",
        "F26",
        "F28",
        "F29",
        "F30"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F12",
        "F13",
        "F29"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F14",
        "F23"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F16",
        "F20",
        "F28"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-details.json",
      "caption": "lighthouse details",
      "findingIds": [
        "F02",
        "F16",
        "F17",
        "F19",
        "F21"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F16",
        "F19",
        "F21",
        "F28",
        "F29"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/manifest.json",
      "caption": "manifest",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found-mobile.png",
      "caption": "not found mobile",
      "findingIds": [
        "F25"
      ]
    },
    {
      "type": "other",
      "path": "evidence/not-found-probe.json",
      "caption": "not found probe",
      "findingIds": [
        "F25"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion.json",
      "caption": "reduced motion",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots.json",
      "caption": "robots",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/search-mobile.png",
      "caption": "search mobile",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/section-layout.json",
      "caption": "section layout",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/section-mobile.png",
      "caption": "section mobile",
      "findingIds": [
        "F05",
        "F06",
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F23",
        "F26",
        "F30"
      ]
    }
  ],
  "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": "high",
      "method": "Emulated prefers-color-scheme: dark screenshot plus CSS/computed-style probe",
      "evidence": "The dark-condition screenshot is byte-identical to the light screenshot, computed color-scheme is normal, and the CSS probe found no prefers-color-scheme, color-scheme, or light-dark() support.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "medium",
      "method": "Emulated reduced-motion animation probe",
      "evidence": "Under prefers-reduced-motion: reduce, the probe matched the preference and found zero active animations; no auto-advance or essential motion appeared in the captured state.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/reduced-motion.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "CSS feature probe plus Lighthouse contrast audit",
      "evidence": "The CSS probe found no prefers-contrast or forced-colors adaptation, while Lighthouse found essential market values with contrast as low as 2.5:1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/lighthouse-details.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "medium",
      "method": "CSS/DOM feature probe across MPA routes",
      "evidence": "The CSS/DOM probe found no View Transition declarations or startViewTransition usage on this multi-page news experience; route changes are abrupt full-document swaps.",
      "pathIds": [
        "home",
        "article"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-mobile.png"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "medium",
      "method": "Repeated scroll interaction plus CSS/animation probe",
      "evidence": "Repeated full-page scrolling showed no scroll-linked animation, parallax, or reveal effect to implement; the CSS probe found no scroll timeline and no active animations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-scroll.heapsnapshot",
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM interaction inventory and mobile screenshots",
      "evidence": "The representative news, section, search, and article surfaces expose conventional links and vertical scrolling, with no custom swipe/pointer gesture that fights native behavior.",
      "pathIds": [
        "home",
        "article",
        "section"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Computed header style, repeated scroll interaction, and mobile layout",
      "evidence": "The header is fixed at 52px but the CSS probe found no scroll-state container query or progress behavior; it remains static through a 25,714px mobile page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "No authored tooltip, transient popover, or edge-positioned menu was present on the representative content paths; the consent UI is third-party modal UI rather than an anchored disclosure.",
      "reason": "No authored tooltip, transient popover, or edge-positioned menu was present on the representative content paths; the consent UI is third-party modal UI rather than an anchored disclosure."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "medium",
      "method": "Route screenshots and feature probe",
      "evidence": "The multi-page navigation provides no transition, focus cue, progress marker, or highlight when moving among dense listing and article templates.",
      "pathIds": [
        "home",
        "section",
        "article"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/section-mobile.png",
        "evidence/article-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "First-load screenshots across representative paths",
      "evidence": "Every first-load screenshot is covered by a viewport-dominating consent wall before any news can be read, on desktop and mobile.",
      "pathIds": [
        "home",
        "article",
        "section",
        "search"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/article-mobile.png",
        "evidence/section-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "DOM semantic inventory and article heading probe",
      "evidence": "The rendered DOM contains no dialog or popover element even though a modal consent surface is shown and adds multiple H1 elements.",
      "pathIds": [
        "home",
        "article"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "Desktop/mobile screenshots and computed header dimensions",
      "evidence": "Behind the consent layer, the captured templates use a compact 52px header and content-led card/article layouts rather than a persistent application frame.",
      "pathIds": [
        "home",
        "article"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Mobile layout primitives",
      "evidence": "At 360x800 the homepage and section both report scrollWidth 360, horizontalOverflowPx 0, and a viewport meta tag.",
      "pathIds": [
        "home",
        "section"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/section-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "medium",
      "method": "Live CSS feature probe",
      "evidence": "The CSS probe found no @container or container-type usage across a page with reusable cards and finance/news modules.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Focus-state computed-style probe",
      "evidence": "Programmatically focused navigation, search, and account controls consistently computed outline-style:none with no box-shadow focus indicator.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "issues",
      "confidence": "high",
      "method": "First-viewport screenshots and metadata probe",
      "evidence": "The page title and underlying content identify the news purpose, but the entire initial viewport is replaced by consent copy and competing consent controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-desktop.png",
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Representative journey screenshots",
      "evidence": "Reading the homepage, opening an article, browsing a section, and viewing search results all begin with the same blocking consent wall, adding a mandatory detour before the core reading flow.",
      "pathIds": [
        "home",
        "article",
        "section",
        "search"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/article-mobile.png",
        "evidence/section-mobile.png",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Invalid-route DOM and screenshot",
      "evidence": "The invalid-route test shows an explicit “500 - Sunucu Hatası” state, explanatory text, and an “ANASAYFAYA DÖN” recovery action.",
      "pathIds": [
        "error"
      ],
      "artifacts": [
        "evidence/not-found-probe.json",
        "evidence/not-found-mobile.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse and DevTools trace summary",
      "evidence": "Lighthouse measured LCP 18.3s and performance 0.56; the trace also measured LCP 3.89s and TBT 983.8ms, both showing a poor load under the captured conditions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Mobile layout shift observers",
      "evidence": "The mobile layout observer measured CLS 0.026 on home and 0.024 on the section, both within the good range, and only two small shifts on home.",
      "pathIds": [
        "home",
        "section"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/section-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Trace and Lighthouse diagnostics",
      "evidence": "The trace found three long tasks, a 948.6ms longest task, and 983.8ms total blocking time; Lighthouse reported 4.1s main-thread work and 2.2s JS execution.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "HAR summary confirmed against script attributes plus Lighthouse",
      "evidence": "The load made 216 requests and transferred 5.64MB; 139 image requests, 8 fonts (798KB), parser-inserted styles/scripts, redirects, and a network dependency warning delay content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-probe.json",
        "evidence/lighthouse-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "HAR summary and live script inventory",
      "evidence": "29 scripts transferred 1.47MB; multiple GTM/gtag, ad bidding, analytics, and duplicate GPT loads dominate the script inventory and third-party bytes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility details, form inventory, and image audit",
      "evidence": "Lighthouse failed link-name and accessibility-tree audits; the search input has no label or aria-label, and the image audit found five missing alt attributes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-details.json",
        "evidence/home-probe.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse contrast node details",
      "evidence": "Lighthouse found market values at 2.5:1 and 4.05:1 against white, below the 4.5:1 minimum for 14px normal text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-details.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Heading and focus probe across home/article",
      "evidence": "The homepage probe found no H1 among its first 30 headings and focused controls had no visible outline; the article gains several consent-system H1s in addition to its article H1.",
      "pathIds": [
        "home",
        "article"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "Article DOM probe and mobile screenshot",
      "evidence": "Article body copy is exposed as real text with a clear H1 and paragraph flow; mobile screenshots show reflow rather than clipped columns.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/article-probe.json",
        "evidence/article-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Viewport/media probe and mobile layout metrics",
      "evidence": "The viewport allows scaling (no maximum-scale/user-scalable=no), mobile layouts have no overflow, and no essential video/audio requiring captions was present in the sampled templates.",
      "pathIds": [
        "home",
        "section"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile-layout.json",
        "evidence/section-layout.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices audit",
      "evidence": "Lighthouse explicitly failed “Browser errors were logged to the console.”",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-details.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "DOM and image audit",
      "evidence": "The document has doctype and charset, but the image audit found 56 images without srcset, 57 legacy-format images, two missing dimensions, and five missing alt values.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices details and run output",
      "evidence": "Lighthouse found a deprecated API, Inspector issues, five BFCache failure reasons, and a missing source-map mapping warning during the run.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-details.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/article metadata and discoverability fetch",
      "evidence": "Home and article expose specific titles and meta descriptions in both rendered and raw HTML.",
      "pathIds": [
        "home",
        "article"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json",
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Anchor/viewport probe and robots.txt fetch",
      "evidence": "Internal navigation uses real same-origin hrefs, viewport metadata is present, and robots.txt allows the public site and article URLs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/robots.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Metadata probes, discoverability status, and robots.txt",
      "evidence": "Home and article return 200, expose matching canonical URLs, robots allows them, and robots.txt names a Google News sitemap.",
      "pathIds": [
        "home",
        "article"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json",
        "evidence/robots.json",
        "evidence/article-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Article metadata probe",
      "evidence": "The article contains NewsArticle JSON-LD and complete Open Graph title, description, URL, and 1200x800 image metadata matching visible content.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/article-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers and cookies primitives",
      "evidence": "HTTPS is used, but CSP, HSTS, X-Content-Type-Options, framing protection, Referrer-Policy, and Permissions-Policy are all absent; 16 observed cookies were flagged as not Secure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Trackers and HAR summary",
      "evidence": "The page contacted 31 third-party origins; 156 third-party requests transferred 4.76MB and known Google/DoubleClick trackers plus Yandex/Gemius/ad-tech requests loaded on first visit.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "medium",
      "method": "First-load observation and secrets scan",
      "evidence": "No notification/geolocation prompt appeared on load and the representative public reading journey requires no authentication; secrets scanning found no exposed credential.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/secrets.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Security header inspection",
      "evidence": "The response has no HSTS, clickjacking defense, Referrer-Policy, Permissions-Policy, or CSP frame-ancestors fallback.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Discoverability raw-vs-rendered comparison",
      "evidence": "Raw HTML retained 94% of homepage and 78% of article content; neither page is a JS shell, and article title/H1/description survive without JavaScript.",
      "pathIds": [
        "home",
        "article"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/article-discoverability.json",
        "evidence/article-discoverability-crawler.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "Discoverability, HAR error signals, and representative screenshots",
      "evidence": "Core content is server-rendered, standard links survive, and the tested templates remained rendered through delayed third-party failures without a blank shell.",
      "pathIds": [
        "home",
        "section"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-summary.json",
        "evidence/section-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "pass",
      "confidence": "medium",
      "method": "Manifest fetch and runtime probe",
      "evidence": "The page links a valid standalone manifest with icons, shortcuts, start_url and scope, and serviceWorker is available/used by the site.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/manifest.json",
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "issues",
      "confidence": "high",
      "method": "Invalid-route probe and screenshot",
      "evidence": "A deliberately unknown URL is labeled and rendered as “500 - Sunucu Hatası” rather than a correct 404, making a missing page look like a transient server outage despite offering a home link.",
      "pathIds": [
        "error"
      ],
      "artifacts": [
        "evidence/not-found-probe.json",
        "evidence/not-found-mobile.png"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/CSS internationalisation probe",
      "evidence": "html lang is tr, Turkish reading direction correctly defaults to LTR, and the CSS probe found logical inline properties in use.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "medium",
      "method": "Article semantic time probe and Lighthouse node labels",
      "evidence": "Article dates are human-readable in Turkish numeric convention and pair with machine-readable datetime values; finance values use Turkish decimal commas.",
      "pathIds": [
        "article",
        "home"
      ],
      "artifacts": [
        "evidence/article-probe.json",
        "evidence/lighthouse-details.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "pass",
      "confidence": "high",
      "method": "Article time-element probe",
      "evidence": "Primary publication/update time elements include explicit +03:00 offsets, making the instant unambiguous.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/article-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "First-load HAR/trackers and consent screenshots",
      "evidence": "Tracking and advertising requests are already present in the first-load HAR while the consent wall asks for a decision; the blocking wall obscures content on every sampled route.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "No authored data-entry form with validation was part of the representative public reading flow; the only visible text form is search.",
      "reason": "No authored data-entry form with validation was part of the representative public reading flow; the only visible text form is search."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Live form/input inventory",
      "evidence": "The search input has autocomplete=\"off\" and no associated label or aria-label, obstructing input assistance and accessible identification.",
      "pathIds": [
        "home",
        "search"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "No checkout, subscription purchase, sensitive account-management, or authenticated action was part of this public news-reading audit; member login was not required for the core task.",
      "reason": "No checkout, subscription purchase, sensitive account-management, or authenticated action was part of this public news-reading audit; member login was not required for the core task."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, images primitive, and Lighthouse",
      "evidence": "Images transferred 3.25MB across 139 requests; 57 use legacy formats and 56 lack responsive srcset, while Lighthouse estimates 198KiB image savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR/trace/Lighthouse diagnostics",
      "evidence": "The initial page performs 216 requests and 4.1s of main-thread work, including analytics, ad auction, cookie-sync redirects, and background tracking before the user reaches content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and tracker summaries",
      "evidence": "Third parties account for 156 requests and 4.76MB, including multiple ad/analytics stacks; this is disproportionate for a primarily text-and-image news listing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "pass",
      "confidence": "medium",
      "method": "Article JSON-LD and raw-vs-rendered evidence",
      "evidence": "For this read-only news surface, no transactional WebMCP tool is needed; article capabilities are exposed through crawlable server-rendered text and NewsArticle JSON-LD rather than opaque client UI.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/article-probe.json",
        "evidence/article-discoverability.json"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "The site offers no summarisation or language-model feature whose inference placement can be judged; adding AI is an optional product decision, not a quality requirement.",
      "reason": "The site offers no summarisation or language-model feature whose inference placement can be judged; adding AI is an optional product decision, not a quality requirement."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Baseline and post-interaction heap summaries",
      "evidence": "After ten full-page scroll down/up cycles, heap self-size was 40.0MB versus a 38.6MB fresh baseline (+3.8%); closures were effectively flat (35,074 to 35,090), with no evidence of unbounded retained growth in this bounded test.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-scroll.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "Heap summary totals",
      "evidence": "The fresh loaded homepage heap summary reports 38.6MB self-size; this is proportionate to the ad- and image-heavy page and did not balloon in the repeated-scroll sample.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-scroll.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Before/after heap constructor and node-type comparison",
      "evidence": "The top constructors contain no Detached* population; closures changed by only 16 and arrays decreased after repeated scrolling, providing no accumulation signal in this test.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-scroll.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F16",
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F19",
        "F20",
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23",
        "F24"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F26",
        "F27"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F28",
        "F29",
        "F30"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and primary news-discovery entry point; tested desktop, mobile, dark/reduced-motion, performance, network, privacy, accessibility and memory.",
      "url": "https://www.haberler.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "first visit/no consent"
      ],
      "result": "issues"
    },
    {
      "id": "section",
      "description": "Economy section, representing section/listing templates.",
      "url": "https://www.haberler.com/ekonomi/",
      "conditions": [
        "viewport: 360x800",
        "first visit/no consent"
      ],
      "result": "issues"
    },
    {
      "id": "article",
      "description": "Representative NewsArticle detail template, including metadata, reading content and no-JS visibility.",
      "url": "https://www.haberler.com/haberler/chp-sozcusu-sari-ozgur-ozele-demedigini-birakmadi-20078061-haberi/",
      "conditions": [
        "viewport: 360x800",
        "no-JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Search results journey for “ekonomi”, representing the primary query flow.",
      "url": "https://www.haberler.com/ara/?q=ekonomi",
      "conditions": [
        "viewport: 360x800",
        "first visit/no consent"
      ],
      "result": "issues"
    },
    {
      "id": "error",
      "description": "Unknown route used to inspect HTTP/error recovery behavior.",
      "url": "https://www.haberler.com/this-route-does-not-exist-atomic-audit/",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "summary": "Light-only presentation ignores dark preference",
      "evidence": "The dark-condition screenshot is byte-identical to the light screenshot, computed color-scheme is normal, and the CSS probe found no prefers-color-scheme, color-scheme, or light-dark() support.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Add color-scheme: light dark and theme surfaces with prefers-color-scheme or light-dark().",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F02",
      "severity": "medium",
      "confidence": "high",
      "summary": "No high-contrast adaptation",
      "evidence": "The CSS probe found no prefers-contrast or forced-colors adaptation, while Lighthouse found essential market values with contrast as low as 2.5:1.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/lighthouse-details.json"
      ],
      "suggestedFix": "Add forced-colors/prefers-contrast rules and preserve visible control/text boundaries.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "adapt-scrollbar-to-contrast-preferences",
      "guidanceCategory": "accessibility",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "medium",
      "summary": "Route changes are abrupt",
      "evidence": "The CSS/DOM probe found no View Transition declarations or startViewTransition usage on this multi-page news experience; route changes are abrupt full-document swaps.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-mobile.png"
      ],
      "suggestedFix": "Enable cross-document View Transitions with a conservative fallback and reduced-motion handling.",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "user-experience",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F04",
      "severity": "low",
      "confidence": "medium",
      "summary": "Long-page chrome does not respond to scroll state",
      "evidence": "The header is fixed at 52px but the CSS probe found no scroll-state container query or progress behavior; it remains static through a 25,714px mobile page.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Use CSS scroll-state queries or a lightweight progress affordance for the long feed.",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-progress-indicator",
      "guidanceCategory": "user-experience",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F05",
      "severity": "low",
      "confidence": "medium",
      "summary": "Navigation changes lack attention cues",
      "evidence": "The multi-page navigation provides no transition, focus cue, progress marker, or highlight when moving among dense listing and article templates.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/section-mobile.png",
        "evidence/article-mobile.png"
      ],
      "suggestedFix": "Preserve focus and add directional or highlight cues around route/in-page navigation.",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "directs-attention",
      "guidanceId": "directional-navigation-transitions",
      "guidanceCategory": "user-experience",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F06",
      "severity": "high",
      "confidence": "high",
      "summary": "Consent wall obscures all content on load",
      "evidence": "Every first-load screenshot is covered by a viewport-dominating consent wall before any news can be read, on desktop and mobile.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/article-mobile.png",
        "evidence/section-mobile.png"
      ],
      "suggestedFix": "Replace the full-content interruption with a compact, non-blocking, equally clear consent surface; keep refusal immediately available.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "summary": "Modal consent UI lacks authored dialog semantics",
      "evidence": "The rendered DOM contains no dialog or popover element even though a modal consent surface is shown and adds multiple H1 elements.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json"
      ],
      "suggestedFix": "Use a correctly labelled dialog only when modality is essential, with platform focus management and dismissal.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "html",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F08",
      "severity": "low",
      "confidence": "medium",
      "summary": "Reusable modules rely only on viewport responsiveness",
      "evidence": "The CSS probe found no @container or container-type usage across a page with reusable cards and finance/news modules.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Adopt container queries for cards/modules reused across column widths.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "css",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard focus is not visible",
      "evidence": "Programmatically focused navigation, search, and account controls consistently computed outline-style:none with no box-shadow focus indicator.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Add a high-contrast :focus-visible outline that is not removed from links, buttons, and search controls.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F10",
      "severity": "high",
      "confidence": "high",
      "summary": "Consent copy replaces the page purpose in the first viewport",
      "evidence": "The page title and underlying content identify the news purpose, but the entire initial viewport is replaced by consent copy and competing consent controls.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-desktop.png",
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Expose the news hierarchy immediately and move consent into a non-obscuring treatment.",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-purpose-and-primary-action",
      "guidanceId": "improve-text-layout-and-legibility",
      "guidanceCategory": "user-experience",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "summary": "Every core reading flow begins with a blocking detour",
      "evidence": "Reading the homepage, opening an article, browsing a section, and viewing search results all begin with the same blocking consent wall, adding a mandatory detour before the core reading flow.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/article-mobile.png",
        "evidence/section-mobile.png",
        "evidence/search-mobile.png"
      ],
      "suggestedFix": "Allow reading before consent and defer optional vendors until an informed choice.",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "conditional-async-dependencies",
      "guidanceCategory": "performance",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F12",
      "severity": "high",
      "confidence": "high",
      "summary": "Largest content is slow",
      "evidence": "Lighthouse measured LCP 18.3s and performance 0.56; the trace also measured LCP 3.89s and TBT 983.8ms, both showing a poor load under the captured conditions.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "suggestedFix": "Prioritise the LCP image/content, reduce third-party startup, preload only critical resources, and verify LCP under mobile throttling.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F13",
      "severity": "high",
      "confidence": "high",
      "summary": "Long tasks block the main thread",
      "evidence": "The trace found three long tasks, a 948.6ms longest task, and 983.8ms total blocking time; Lighthouse reported 4.1s main-thread work and 2.2s JS execution.",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Break up or defer ad/analytics work and schedule non-critical tasks by priority.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "guidanceId": "break-up-long-tasks",
      "guidanceCategory": "performance",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "summary": "Resource delivery is heavy and dependency-rich",
      "evidence": "The load made 216 requests and transferred 5.64MB; 139 image requests, 8 fonts (798KB), parser-inserted styles/scripts, redirects, and a network dependency warning delay content.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-probe.json",
        "evidence/lighthouse-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Shorten critical chains, consolidate fonts/scripts, cache static resources, and defer non-critical delivery.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "guidanceCategory": "performance",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F15",
      "severity": "high",
      "confidence": "high",
      "summary": "Duplicate and third-party JavaScript dominates startup",
      "evidence": "29 scripts transferred 1.47MB; multiple GTM/gtag, ad bidding, analytics, and duplicate GPT loads dominate the script inventory and third-party bytes.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Remove duplicate tag/ad loaders and conditionally load vendors only when needed and consented.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F16",
      "severity": "high",
      "confidence": "high",
      "summary": "Controls and links lack accessible names",
      "evidence": "Lighthouse failed link-name and accessibility-tree audits; the search input has no label or aria-label, and the image audit found five missing alt attributes.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-details.json",
        "evidence/home-probe.json",
        "evidence/images.json"
      ],
      "suggestedFix": "Label search, name icon links, repair the accessibility tree, and provide meaningful alt text.",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F17",
      "severity": "medium",
      "confidence": "high",
      "summary": "Finance values fail minimum contrast",
      "evidence": "Lighthouse found market values at 2.5:1 and 4.05:1 against white, below the 4.5:1 minimum for 14px normal text.",
      "artifacts": [
        "evidence/lighthouse-details.json"
      ],
      "suggestedFix": "Darken green/red finance text or increase size/weight until measured contrast reaches WCAG minimums.",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F18",
      "severity": "high",
      "confidence": "high",
      "summary": "Heading and focus structure is inconsistent",
      "evidence": "The homepage probe found no H1 among its first 30 headings and focused controls had no visible outline; the article gains several consent-system H1s in addition to its article H1.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json"
      ],
      "suggestedFix": "Restore one page H1, demote consent headings, and preserve a visible logical focus order.",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "summary": "Browser console errors occur on load",
      "evidence": "Lighthouse explicitly failed “Browser errors were logged to the console.”",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-details.json"
      ],
      "suggestedFix": "Resolve first-party exceptions and isolate vendor failures so a normal load is error-free.",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F20",
      "severity": "medium",
      "confidence": "high",
      "summary": "Image markup and formats are inefficient",
      "evidence": "The document has doctype and charset, but the image audit found 56 images without srcset, 57 legacy-format images, two missing dimensions, and five missing alt values.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/images.json"
      ],
      "suggestedFix": "Add width/height and alt where needed, responsive srcset/sizes, and AVIF/WebP delivery.",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F21",
      "severity": "medium",
      "confidence": "high",
      "summary": "Deprecated APIs and BFCache blockers remain",
      "evidence": "Lighthouse found a deprecated API, Inspector issues, five BFCache failure reasons, and a missing source-map mapping warning during the run.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-details.json"
      ],
      "suggestedFix": "Remove deprecated usage, fix DevTools issues/source maps, and eliminate avoidable BFCache blockers.",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F22",
      "severity": "critical",
      "confidence": "high",
      "summary": "Transport defenses and cookie flags are missing",
      "evidence": "HTTPS is used, but CSP, HSTS, X-Content-Type-Options, framing protection, Referrer-Policy, and Permissions-Policy are all absent; 16 observed cookies were flagged as not Secure.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy CSP, HSTS, nosniff, framing protection, Referrer/Permissions policies, and Secure/SameSite cookie attributes.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F23",
      "severity": "high",
      "confidence": "high",
      "summary": "Third-party data collection is extensive",
      "evidence": "The page contacted 31 third-party origins; 156 third-party requests transferred 4.76MB and known Google/DoubleClick trackers plus Yandex/Gemius/ad-tech requests loaded on first visit.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Inventory vendors, remove redundant trackers, gate optional requests behind consent, and minimise event collection.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F24",
      "severity": "high",
      "confidence": "high",
      "summary": "Browser-enforced defensive policies are absent",
      "evidence": "The response has no HSTS, clickjacking defense, Referrer-Policy, Permissions-Policy, or CSP frame-ancestors fallback.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Add HSTS, frame-ancestors, Referrer-Policy and a least-privilege Permissions-Policy.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F25",
      "severity": "medium",
      "confidence": "high",
      "summary": "Unknown URLs are misreported as server errors",
      "evidence": "A deliberately unknown URL is labeled and rendered as “500 - Sunucu Hatası” rather than a correct 404, making a missing page look like a transient server outage despite offering a home link.",
      "artifacts": [
        "evidence/not-found-probe.json",
        "evidence/not-found-mobile.png"
      ],
      "suggestedFix": "Return an actual 404 with the existing recovery copy and navigation.",
      "principleId": "be-resilient",
      "principleCheckId": "network-and-http-failure-states",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "effort": "small",
      "pathId": "error",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F26",
      "severity": "critical",
      "confidence": "high",
      "summary": "Tracking begins before consent choice",
      "evidence": "Tracking and advertising requests are already present in the first-load HAR while the consent wall asks for a decision; the blocking wall obscures content on every sampled route.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Hold analytics, ad auctions, cookie sync, and non-essential cookies until the user opts in.",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F27",
      "severity": "medium",
      "confidence": "high",
      "summary": "Search input disables assistance and lacks a label",
      "evidence": "The search input has autocomplete=\"off\" and no associated label or aria-label, obstructing input assistance and accessible identification.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Add a persistent label/accessible name and use an appropriate autocomplete/search token.",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "guidanceCategory": "forms",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F28",
      "severity": "medium",
      "confidence": "high",
      "summary": "Images are not consistently responsive or modern",
      "evidence": "Images transferred 3.25MB across 139 requests; 57 use legacy formats and 56 lack responsive srcset, while Lighthouse estimates 198KiB image savings.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Generate responsive modern-format variants and choose them with srcset/sizes.",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F29",
      "severity": "medium",
      "confidence": "high",
      "summary": "Background advertising and analytics work is wasteful",
      "evidence": "The initial page performs 216 requests and 4.1s of main-thread work, including analytics, ad auction, cookie-sync redirects, and background tracking before the user reaches content.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Deprioritise and batch optional work; stop background fetches when hidden or unconsented.",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    },
    {
      "id": "F30",
      "severity": "high",
      "confidence": "high",
      "summary": "Third-party budget is disproportionate to the content",
      "evidence": "Third parties account for 156 requests and 4.76MB, including multiple ad/analytics stacks; this is disproportionate for a primarily text-and-image news listing.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Set a vendor/request/byte budget and remove or defer stacks that do not deliver clear reader value.",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.haberler.com/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Stop all optional tracking until consent and replace the blocking consent wall",
      "priority": 1,
      "findingIds": [
        "F06",
        "F10",
        "F11",
        "F23",
        "F26"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Remove duplicate vendor loaders and defer third-party startup",
      "priority": 2,
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15",
        "F29",
        "F30"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Deploy security headers and secure cookie attributes",
      "priority": 3,
      "findingIds": [
        "F22",
        "F24"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Repair keyboard focus, accessible names, headings, and contrast",
      "priority": 4,
      "findingIds": [
        "F02",
        "F09",
        "F16",
        "F17",
        "F18"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Optimise responsive image and font delivery",
      "priority": 5,
      "findingIds": [
        "F14",
        "F20",
        "F28"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Make consent modal semantics correct if modality remains",
      "priority": 6,
      "findingIds": [
        "F07"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Return a real 404 for unknown routes",
      "priority": 7,
      "findingIds": [
        "F25"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Fix console, deprecated API, source-map, and BFCache issues",
      "priority": 8,
      "findingIds": [
        "F19",
        "F21"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Label and assist the search input",
      "priority": 9,
      "findingIds": [
        "F27"
      ],
      "guidanceId": "forms",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Progressively adopt container queries and route transitions",
      "priority": 10,
      "findingIds": [
        "F03",
        "F04",
        "F05",
        "F08"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 900,
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-23T08-58-20-578Z"
}
