{
  "url": "https://www.elmundo.es",
  "auditedAt": "2026-07-26T00:35:37.511Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Complete atomic audit of 58 checks across five representative news paths.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered MPA with extensive vendor JavaScript",
    "notes": "Public Spanish news publication. The homepage, section, article, latest-news feed and a representative HTTP error state were covered. Search, checkout, cancellation, authenticated account settings, video playback and game completion were not covered because they are separate hosts, gated journeys or distinct product templates."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "discoverability",
    "trace",
    "har",
    "headers",
    "cookies",
    "trackers",
    "images",
    "secrets",
    "heap-summary",
    "lighthouse"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "scrollytelling",
    "physics-based-easing",
    "shrinking-header-on-scroll",
    "anchor-positioning-tab-underline",
    "directional-navigation-transitions",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "complex-shapes",
    "fluid-scaling",
    "size-aware-styling",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "identify-inp-causes",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "optimize-image-priority",
    "identify-heavy-scripts",
    "move-dom-element-without-losing-state",
    "css",
    "html",
    "security",
    "privacy",
    "passkeys",
    "flicker-free-client-side-ab-testing",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-toast-notifications",
    "translator",
    "support-global-calendar-systems",
    "coordinate-global-events",
    "search-hidden-content",
    "autofill-address-form",
    "autofill-payment-form",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "webmcp",
    "language-model",
    "manage-recurring-intervals"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/article-dark.png",
      "caption": "article dark",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/article-desktop.png",
      "caption": "article desktop",
      "findingIds": []
    },
    {
      "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-inputs-desktop.json",
      "caption": "article inputs desktop",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/article-layout-mobile.json",
      "caption": "article layout mobile",
      "findingIds": [
        "F007"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/article-mobile.png",
      "caption": "article mobile",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/article-quality-probe.json",
      "caption": "article quality probe",
      "findingIds": [
        "F014",
        "F018"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F020"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F020"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline",
      "findingIds": [
        "F026",
        "F027"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-menu.heapsnapshot",
      "caption": "heap post menu",
      "findingIds": [
        "F026"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-buttons.json",
      "caption": "home buttons",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F005",
        "F023"
      ]
    },
    {
      "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": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-high-contrast.png",
      "caption": "home high contrast",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "home layout mobile",
      "findingIds": [
        "F007",
        "F011"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "findingIds": [
        "F003",
        "F005",
        "F006",
        "F011",
        "F023"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-quality-probe.json",
      "caption": "home quality probe",
      "findingIds": [
        "F001",
        "F002",
        "F003",
        "F004",
        "F006",
        "F008",
        "F009",
        "F016",
        "F022"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": [
        "F022"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F012",
        "F013",
        "F015",
        "F021",
        "F025",
        "F027"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F010"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": [
        "F010"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F012",
        "F021"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F014",
        "F016",
        "F024"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/latest-mobile.png",
      "caption": "latest mobile",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-failures.json",
      "caption": "lighthouse failures",
      "findingIds": [
        "F014",
        "F015",
        "F017",
        "F018"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": [
        "F009",
        "F010",
        "F012",
        "F013",
        "F016"
      ]
    },
    {
      "type": "other",
      "path": "evidence/menu-repeat-metrics.json",
      "caption": "menu repeat metrics",
      "findingIds": [
        "F026"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "reduced motion probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/section-desktop.png",
      "caption": "section desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/section-discoverability-crawler.png",
      "caption": "section discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/section-discoverability-rendered.png",
      "caption": "section discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/section-discoverability.json",
      "caption": "section discoverability",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/site-files.json",
      "caption": "site files",
      "findingIds": [
        "F019"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F021",
        "F025"
      ]
    }
  ],
  "config": {
    "loaded": false
  },
  "paths": [
    {
      "id": "home",
      "description": "Homepage and lead-story discovery, representing the primary news landing template.",
      "url": "https://www.elmundo.es/",
      "conditions": [
        "desktop 1440x900",
        "mobile 360x800",
        "dark preference",
        "high contrast",
        "reduced motion",
        "keyboard focus",
        "repeated mobile menu"
      ],
      "result": "issues"
    },
    {
      "id": "section",
      "description": "España section, representing section and topic-listing templates.",
      "url": "https://www.elmundo.es/espana.html",
      "conditions": [
        "desktop 1440x900",
        "crawler without JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "article",
      "description": "Current España news article, representing the article and reading journey.",
      "url": "https://www.elmundo.es/espana/2026/07/24/6a633966fdddff03078b458b.html",
      "conditions": [
        "desktop 1440x900",
        "mobile 360x800",
        "dark preference",
        "crawler without JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "latest",
      "description": "Latest-news listing, representing the chronological feed journey.",
      "url": "https://www.elmundo.es/ultimas-noticias.html",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "error",
      "description": "Missing sitemap URL returning the site 404 template, used as a representative HTTP failure state.",
      "url": "https://www.elmundo.es/sitemap.xml",
      "conditions": [
        "HTTP 404",
        "raw response inspection"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F001",
      "severity": "high",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "summary": "The site stays light when the user requests dark mode.",
      "evidence": "The dark-preference screenshots are pixel-identical in palette to the light screenshots; the probe reports color-scheme normal and no prefers-color-scheme CSS.",
      "suggestedFix": "Declare color-scheme and define a prefers-color-scheme dark palette with light-dark() or equivalent tokens.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/article-dark.png",
        "evidence/home-quality-probe.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F002",
      "severity": "medium",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "summary": "Route and menu state changes do not use View Transitions.",
      "evidence": "Rendered CSS inspection found no view-transition rules, while navigation is a core interaction across the MPA.",
      "suggestedFix": "Add same-document transitions for menu state and progressive cross-document transitions for article navigation, with reduced-motion handling.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F003",
      "severity": "medium",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "physical-gestures",
      "guidanceId": "physics-based-easing",
      "summary": "The horizontal game carousel is script-driven without platform scroll snapping.",
      "evidence": "The mobile probe found an initialized Swiper with a transformed wrapper, but no scroll-snap CSS.",
      "suggestedFix": "Use native horizontal scrolling with scroll-snap and overscroll behavior, retaining controls as an enhancement.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F004",
      "severity": "medium",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "summary": "The long news page has no scroll-state-aware navigation or progress cue.",
      "evidence": "CSS inspection found no scroll-state container query or scroll progress implementation across a 15,712px homepage.",
      "suggestedFix": "Add a lightweight article/page progress cue and make sticky chrome respond to scroll state.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F005",
      "severity": "high",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "summary": "A fixed subscription promotion obscures primary content on the homepage.",
      "evidence": "Desktop and mobile screenshots show a fixed subscription banner covering the lower 175px, about 22% of the mobile viewport, immediately on load.",
      "suggestedFix": "Do not cover content on load. Move the offer inline or use a user-invoked, semantic, light-dismissible popover.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F006",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "summary": "The subscription interruption is an ad-hoc fixed aside rather than a semantic overlay.",
      "evidence": "The DOM probe identifies ASIDE#banda_suscripcion as a fixed 360x175 overlay; no dialog or popover primitive is used.",
      "suggestedFix": "Use dialog or popover semantics with an accessible name, explicit close control, focus behavior, and light dismiss where appropriate.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F007",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "summary": "Mobile layouts create a document twice the viewport width.",
      "evidence": "Layout evidence on both homepage and article reports scrollWidth 720px at innerWidth 360px, with 360px horizontal overflow.",
      "suggestedFix": "Contain carousels and off-canvas navigation without widening the root, then use intrinsic sizing and fluid/container-relative dimensions.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/article-layout-mobile.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F008",
      "severity": "medium",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "summary": "Repeated cards and navigation rely on viewport rules, not component containment.",
      "evidence": "Rendered CSS inspection found no @container or container-type despite card components being reused across homepage, section, and sidebars.",
      "suggestedFix": "Add inline-size containment to reusable card regions and size them with container queries.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F009",
      "severity": "medium",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "summary": "Several mobile controls are too small or tightly spaced.",
      "evidence": "Lighthouse target-size failed; the focus probe also measured many topical links at only 11px high.",
      "suggestedFix": "Increase interactive hit areas and spacing to at least 24x24 CSS px, preferably 44x44 for primary touch controls, while keeping visible focus.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-quality-probe.json"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F010",
      "severity": "critical",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "summary": "The primary landing page is very slow and main-thread heavy.",
      "evidence": "Lighthouse measured LCP 28.6s, FCP 10.7s, TBT 1,120ms and a 0.32 performance score; the CDP trace corroborated a 563ms longest task and 549ms TBT.",
      "suggestedFix": "Prioritize the lead content, defer nonessential scripts, split long tasks, and set explicit performance budgets.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F011",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "summary": "Late homepage UI causes severe observed layout movement.",
      "evidence": "The mobile layout observer recorded CLS 2.001 with two late shifts of 1.0 around 6.5s, coinciding with late fixed/personalization UI.",
      "suggestedFix": "Reserve space for late modules and prevent overlays or experimentation code from moving the document.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F012",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "summary": "The page ships an oversized, third-party-dominated dependency graph.",
      "evidence": "The HAR recorded 264 requests and 4.71MB transferred, including 82 scripts totaling 3.41MB; Lighthouse estimated 4.92s render-blocking savings.",
      "suggestedFix": "Remove nonessential tags, defer or conditionally load advertising/media SDKs, consolidate fonts, and improve cache lifetimes.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse-home.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F013",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "summary": "Large amounts of JavaScript are unused during the initial news-reading task.",
      "evidence": "Lighthouse estimated 1,480KiB of unused JavaScript and 35KiB unused CSS; third-party scripts dominate the largest transfer list.",
      "suggestedFix": "Use route and interaction-based loading, deduplicate tag bundles, and remove code not needed for initial reading.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F014",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "summary": "Embedded frames and many images lack accessible text alternatives.",
      "evidence": "Lighthouse failed frame-title; the article probe found multiple untitled advertising/paywall iframes, and the images primitive counted 33 images without alt attributes.",
      "suggestedFix": "Title every meaningful iframe, hide technical frames from assistive technology where safe, and provide meaningful or empty alt text based on image purpose.",
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/article-quality-probe.json",
        "evidence/images.json"
      ],
      "effort": "medium",
      "pathId": "article"
    },
    {
      "id": "F015",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "summary": "The page logs browser errors during a normal load.",
      "evidence": "Lighthouse failed errors-in-console, and HAR hygiene recorded SSL, ORB, aborted analytics, and localhost connection failures.",
      "suggestedFix": "Remove broken integrations, guard optional vendors, and monitor uncaught errors in production.",
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/home-summary.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F016",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "summary": "Some images lack intrinsic dimensions and the document uses a legacy encoding.",
      "evidence": "The images primitive found three images without width/height; Lighthouse also failed unsized-images. The document reports ISO-8859-15 rather than UTF-8.",
      "suggestedFix": "Serve UTF-8 and add width/height or aspect-ratio for every content image.",
      "artifacts": [
        "evidence/images.json",
        "evidence/home-quality-probe.json",
        "evidence/lighthouse-home.json"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F017",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "baseline",
      "summary": "Deprecated APIs and platform lifecycle blockers remain.",
      "evidence": "Lighthouse reported three deprecation warnings, two BFCache failure reasons, and DevTools inspector issues.",
      "suggestedFix": "Remove deprecated API use, address unload or cache-control BFCache blockers, and resolve surfaced inspector issues.",
      "artifacts": [
        "evidence/lighthouse-failures.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F018",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "summary": "Some visible actions are exposed as hash links rather than crawlable destinations.",
      "evidence": "Lighthouse failed crawlable-anchors; the article probe counted 45 href=\"#\" anchors.",
      "suggestedFix": "Use buttons for actions and real destination URLs for navigation.",
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/article-quality-probe.json"
      ],
      "effort": "small",
      "pathId": "article"
    },
    {
      "id": "F019",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "summary": "No sitemap is advertised at the conventional endpoint or in robots.txt.",
      "evidence": "/sitemap.xml returned 404 and the fetched robots.txt contained no Sitemap declaration, while pages themselves had valid canonicals and index directives.",
      "suggestedFix": "Publish sitemap indexes for current article and section URLs and declare them in robots.txt.",
      "artifacts": [
        "evidence/site-files.json"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F020",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "summary": "Core security headers are absent and cookies are broadly insecure.",
      "evidence": "The headers primitive found no CSP, HSTS, nosniff, clickjacking protection, or Permissions-Policy and found Referrer-Policy unsafe-url. All 44 observed cookies were flagged insecure by the cookie audit.",
      "suggestedFix": "Add a restrictive CSP, HSTS, nosniff, frame-ancestors, strict-origin-when-cross-origin, and a minimal Permissions-Policy; mark HTTPS cookies Secure with suitable SameSite and HttpOnly.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F021",
      "severity": "critical",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "summary": "Tracking and advertising dominate the initial page load.",
      "evidence": "The tracker audit found 64 third-party origins and 14 known tracker hosts. HAR classified 255 of 264 requests and 4.61MB of 4.71MB as third-party.",
      "suggestedFix": "Minimize vendors, gate nonessential tracking on valid consent, batch analytics, and load advertising only near relevant slots.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F022",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "summary": "The visible sign-in surface has no detectable passkey/WebAuthn support.",
      "evidence": "No passkey, WebAuthn, or navigator.credentials marker appeared in the server HTML, although sign-in is a prominent account action; no permission prompt fired on load.",
      "suggestedFix": "Offer passkeys as a first-class sign-in option and keep all permission requests tied to explicit user actions.",
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/home-quality-probe.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F023",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "custom-button-actions",
      "summary": "The subscription teaser does not disclose the price after the introductory month in context.",
      "evidence": "The fixed offer says 0.50 euros per month and more than 90% discount, but the visible viewport does not state the renewal price or commitment.",
      "suggestedFix": "Show the renewal price, billing cadence, cancellation terms, and total commitment beside the subscribe action.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F024",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "summary": "Image delivery is not consistently responsive or modern.",
      "evidence": "The images audit found 36 images without srcset, 44 legacy-format image URLs, no modern-format img sources, and eight below-fold images not lazy-loaded.",
      "suggestedFix": "Use responsive picture/srcset delivery, AVIF/WebP where beneficial, dimensions, and lazy loading below the fold.",
      "artifacts": [
        "evidence/images.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F025",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "summary": "Third-party resource use is disproportionate to initial article discovery.",
      "evidence": "Third parties account for 4.61MB and 255 requests, including many advertising, experimentation, social and analytics SDKs before interaction.",
      "suggestedFix": "Set a third-party budget, remove duplicate tags, and defer vendors until consent or user intent makes them necessary.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F026",
      "severity": "medium",
      "confidence": "medium",
      "principleId": "be-memory-efficient",
      "principleCheckId": "no-leak-under-repeated-interaction",
      "guidanceId": "manage-recurring-intervals",
      "summary": "Repeated menu toggling leaves measurable growth after the interaction ends.",
      "evidence": "Within one session, ten open/close cycles increased DOM elements from 2,824 to 2,854 and used JS heap from 70.7MB to 82.5MB. Separate heap snapshots grew from 69.1MB to 72.3MB self size.",
      "suggestedFix": "Profile retained objects after menu teardown, remove generated nodes/listeners, and ensure vendor callbacks are not re-registered per toggle.",
      "artifacts": [
        "evidence/menu-repeat-metrics.json",
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post-menu.heapsnapshot"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F027",
      "severity": "medium",
      "confidence": "medium",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "identify-heavy-scripts",
      "summary": "The baseline memory footprint is heavy for a mobile news landing page.",
      "evidence": "The baseline heap snapshot contained 1,168,886 heap nodes and 69.1MB self size after load, alongside 3.41MB of transferred scripts.",
      "suggestedFix": "Reduce initial JavaScript and vendor allocation, virtualize or defer deep-feed modules, and establish a mobile heap budget.",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/home-summary.json"
      ],
      "effort": "large",
      "pathId": "home"
    }
  ],
  "taskList": [
    {
      "id": "T001",
      "title": "Cut and defer third-party JavaScript, tracking and ad work",
      "priority": 1,
      "findingIds": [
        "F010",
        "F012",
        "F013",
        "F021",
        "F025",
        "F027"
      ],
      "guidanceId": "deprioritize-background-fetches",
      "status": "open"
    },
    {
      "id": "T002",
      "title": "Fix mobile root overflow and touch target sizing",
      "priority": 2,
      "findingIds": [
        "F007",
        "F009"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T003",
      "title": "Add security headers and secure cookie attributes",
      "priority": 3,
      "findingIds": [
        "F020"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T004",
      "title": "Remove or relocate the load-time subscription overlay",
      "priority": 4,
      "findingIds": [
        "F005",
        "F006",
        "F023"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T005",
      "title": "Add a system-driven dark palette",
      "priority": 5,
      "findingIds": [
        "F001"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T006",
      "title": "Improve image semantics and responsive delivery",
      "priority": 6,
      "findingIds": [
        "F014",
        "F016",
        "F024"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T007",
      "title": "Stabilize late homepage modules",
      "priority": 7,
      "findingIds": [
        "F011"
      ],
      "guidanceId": "visually-stable-font-fallbacks",
      "status": "open"
    },
    {
      "id": "T008",
      "title": "Repair crawlability and publish sitemap indexes",
      "priority": 8,
      "findingIds": [
        "F018",
        "F019"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T009",
      "title": "Adopt progressive modern navigation and gesture primitives",
      "priority": 9,
      "findingIds": [
        "F002",
        "F003",
        "F004",
        "F008"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T010",
      "title": "Resolve console, deprecation and lifecycle defects",
      "priority": 10,
      "findingIds": [
        "F015",
        "F017"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T011",
      "title": "Profile and clean up retained menu state",
      "priority": 11,
      "findingIds": [
        "F026"
      ],
      "guidanceId": "manage-recurring-intervals",
      "status": "open"
    },
    {
      "id": "T012",
      "title": "Add a passkey-first account option",
      "priority": 12,
      "findingIds": [
        "F022"
      ],
      "guidanceId": "passkeys",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 2400,
    "pathCount": 5,
    "auditPasses": 1
  },
  "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": "Active review for respects-color-scheme using home-dark.png, article-dark.png, home-quality-probe.json",
      "evidence": "The dark-preference screenshots are pixel-identical in palette to the light screenshots; the probe reports color-scheme normal and no prefers-color-scheme CSS.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/article-dark.png",
        "evidence/home-quality-probe.json"
      ],
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "evaluate under prefers-reduced-motion",
      "evidence": "Reduced-motion emulation reported zero active animations and no auto-advancing motion in the observed first viewport.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "forced-colors screenshot",
      "evidence": "Forced-colors/high-contrast screenshot retains visible text, separators, controls and the primary headline.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-high-contrast.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for view-transitions using home-quality-probe.json",
      "evidence": "Rendered CSS inspection found no view-transition rules, while navigation is a core interaction across the MPA.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for scroll-driven-animations",
      "evidence": "No scroll-linked decorative motion was observed, so there is no scroll-event animation implementation to judge.",
      "reason": "No scroll-linked decorative motion was observed, so there is no scroll-event animation implementation to judge."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for physical-gestures using home-quality-probe.json, home-mobile.png",
      "evidence": "The mobile probe found an initialized Swiper with a transformed wrapper, but no scroll-snap CSS.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F003"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for scroll-state-aware-chrome using home-quality-probe.json",
      "evidence": "CSS inspection found no scroll-state container query or scroll progress implementation across a 15,712px homepage.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for anchored-positioning",
      "evidence": "No tooltip or viewport-edge popover is part of the representative reading and listing flows.",
      "reason": "No tooltip or viewport-edge popover is part of the representative reading and listing flows."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "representative screenshots",
      "evidence": "Current section labels, strong hierarchy and prominent article headlines make location and next destinations clear across section and article templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/section-desktop.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for no-intrusive-interruptions using home-desktop.png, home-mobile.png",
      "evidence": "Desktop and mobile screenshots show a fixed subscription banner covering the lower 175px, about 22% of the mobile viewport, immediately on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F005"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for semantic-dismissible-primitives using home-quality-probe.json, home-mobile.png",
      "evidence": "The DOM probe identifies ASIDE#banda_suscripcion as a fixed 360x175 overlay; no dialog or popover primitive is used.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "visual review",
      "evidence": "Outside the subscription interruption, article and section templates use restrained borders and keep headlines/content visually dominant.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-desktop.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for responsive-no-horizontal-scroll using home-layout-mobile.json, article-layout-mobile.json",
      "evidence": "Layout evidence on both homepage and article reports scrollWidth 720px at innerWidth 360px, with 360px horizontal overflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/article-layout-mobile.json"
      ],
      "findingIds": [
        "F007"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for component-level-responsiveness using home-quality-probe.json",
      "evidence": "Rendered CSS inspection found no @container or container-type despite card components being reused across homepage, section, and sidebars.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "findingIds": [
        "F008"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for input-modality-aware using lighthouse-home.json, home-quality-probe.json",
      "evidence": "Lighthouse target-size failed; the focus probe also measured many topical links at only 11px high.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-quality-probe.json"
      ],
      "findingIds": [
        "F009"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "cross-template visual walkthrough",
      "evidence": "Homepage, section and latest pages immediately identify themselves and expose current headlines as direct links.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "manual URL journey and screenshots",
      "evidence": "The homepage-to-article journey loaded a full headline, dek, image and server-rendered article content without an account wall.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-desktop.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "HTTP failure-state inspection",
      "evidence": "The tested missing sitemap URL returns HTTP 404 with an explicit Spanish page-not-found template rather than a blank or false-success page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/site-files.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for good-core-web-vitals using lighthouse-home.json, home-trace-summary.json, home-trace.json",
      "evidence": "Lighthouse measured LCP 28.6s, FCP 10.7s, TBT 1,120ms and a 0.32 performance score; the CDP trace corroborated a 563ms longest task and 549ms TBT.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for visual-stability using home-layout-mobile.json, home-mobile.png",
      "evidence": "The mobile layout observer recorded CLS 2.001 with two late shifts of 1.0 around 6.5s, coinciding with late fixed/personalization UI.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F011"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for efficient-main-thread using lighthouse-home.json, home-trace-summary.json, home-trace.json",
      "evidence": "Lighthouse measured LCP 28.6s, FCP 10.7s, TBT 1,120ms and a 0.32 performance score; the CDP trace corroborated a 563ms longest task and 549ms TBT.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for efficient-resource-delivery using home-summary.json, home.har, lighthouse-home.json",
      "evidence": "The HAR recorded 264 requests and 4.71MB transferred, including 82 scripts totaling 3.41MB; Lighthouse estimated 4.92s render-blocking savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F012"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for trim-unused-and-duplicate-code using lighthouse-home.json, home-summary.json",
      "evidence": "Lighthouse estimated 1,480KiB of unused JavaScript and 35KiB unused CSS; third-party scripts dominate the largest transfer list.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F013"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for names-roles-labels using lighthouse-failures.json, article-quality-probe.json, images.json",
      "evidence": "Lighthouse failed frame-title; the article probe found multiple untitled advertising/paywall iframes, and the images primitive counted 33 images without alt attributes.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/article-quality-probe.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F014"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse plus forced-colors visual review",
      "evidence": "Lighthouse accessibility scored 0.94 with no color-contrast failure, and forced-colors preserved readable text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-high-contrast.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "pass",
      "confidence": "high",
      "method": "landmark and focus probe",
      "evidence": "Pages expose main/nav landmarks and skip links; focused controls receive a visible browser outline in the keyboard probe.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "desktop and mobile screenshot review",
      "evidence": "Article and listing screenshots show readable line lengths, clear serif hierarchy, and no text clipping in the main content column.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for zoom-reflow-targets-and-media using home-layout-mobile.json, article-layout-mobile.json, lighthouse-home.json, home-quality-probe.json",
      "evidence": "Layout evidence on both homepage and article reports scrollWidth 720px at innerWidth 360px, with 360px horizontal overflow. Lighthouse target-size failed; the focus probe also measured many topical links at only 11px high.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/article-layout-mobile.json",
        "evidence/lighthouse-home.json",
        "evidence/home-quality-probe.json"
      ],
      "findingIds": [
        "F007",
        "F009"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for no-console-errors using lighthouse-failures.json, home-summary.json",
      "evidence": "Lighthouse failed errors-in-console, and HAR hygiene recorded SSL, ORB, aborted analytics, and localhost connection failures.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F015"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for sound-document-and-assets using images.json, home-quality-probe.json, lighthouse-home.json",
      "evidence": "The images primitive found three images without width/height; Lighthouse also failed unsized-images. The document reports ISO-8859-15 rather than UTF-8.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/home-quality-probe.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F016"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for browser-platform-hygiene using lighthouse-failures.json",
      "evidence": "Lighthouse reported three deprecation warnings, two BFCache failure reasons, and DevTools inspector issues.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-failures.json"
      ],
      "findingIds": [
        "F017"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata probes",
      "evidence": "Homepage and article expose descriptive titles and meta descriptions, with article-specific values.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-quality-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for crawlable-and-mobile-friendly using lighthouse-failures.json, article-quality-probe.json",
      "evidence": "Lighthouse failed crawlable-anchors; the article probe counted 45 href=\"#\" anchors.",
      "pathIds": [
        "article"
      ],
      "artifacts": [
        "evidence/lighthouse-failures.json",
        "evidence/article-quality-probe.json"
      ],
      "findingIds": [
        "F018"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for canonical-and-indexing-signals using site-files.json",
      "evidence": "/sitemap.xml returned 404 and the fetched robots.txt contained no Sitemap declaration, while pages themselves had valid canonicals and index directives.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/site-files.json"
      ],
      "findingIds": [
        "F019"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "metadata parse",
      "evidence": "The article exposes NewsArticle/ReportageNewsArticle and BreadcrumbList JSON-LD plus complete Open Graph title, description, URL, image and type.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-quality-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for secure-transport-and-headers using headers.json, cookies.json",
      "evidence": "The headers primitive found no CSP, HSTS, nosniff, clickjacking protection, or Permissions-Policy and found Referrer-Policy unsafe-url. All 44 observed cookies were flagged insecure by the cookie audit.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F020"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for data-minimisation-and-third-parties using trackers.json, home-summary.json, home.har",
      "evidence": "The tracker audit found 64 third-party origins and 14 known tracker hosts. HAR classified 255 of 264 requests and 4.61MB of 4.71MB as third-party.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F021"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for in-context-permissions-and-modern-auth using home-recon.json, home-quality-probe.json",
      "evidence": "No passkey, WebAuthn, or navigator.credentials marker appeared in the server HTML, although sign-in is a prominent account action; no permission prompt fired on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/home-quality-probe.json"
      ],
      "findingIds": [
        "F022"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for defensive-browser-policies using headers.json, cookies.json",
      "evidence": "The headers primitive found no CSP, HSTS, nosniff, clickjacking protection, or Permissions-Policy and found Referrer-Policy unsafe-url. All 44 observed cookies were flagged insecure by the cookie audit.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F020"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "discoverability comparison",
      "evidence": "Non-JavaScript crawler coverage is 96% on home, 99% on section and 89% on article; none is a JS shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "cross-viewport visual review",
      "evidence": "Representative mobile and desktop pages render usable navigation and content without clipped primary controls or broken shells.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for offline-and-installable",
      "evidence": "This public news publication is content-first rather than an installed application; offline installability is not required for the audited core reading journey.",
      "reason": "This public news publication is content-first rather than an installed application; offline installability is not required for the audited core reading journey."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "HTTP 404 response inspection",
      "evidence": "The representative HTTP 404 response is intentional, descriptive and does not masquerade as a success state.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/site-files.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "DOM language inspection",
      "evidence": "The root language is correctly es and visible content uses Spanish reading order; no bidirectional content appears in scope.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "rendered text inspection",
      "evidence": "Dates are rendered in Spanish long-date form, for example “Domingo, 26 de julio de 2026”.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-recon.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for time-zone-correctness",
      "evidence": "The audited news reading and listing paths contain publication dates but no scheduled cross-time-zone event or recurring-time flow.",
      "reason": "The audited news reading and listing paths contain publication dates but no scheduled cross-time-zone event or recurring-time flow."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "visual and DOM review",
      "evidence": "Navigation labels and article links are descriptive, and no confirmshaming control or disguised ad action was observed in the representative paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-desktop.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for humane-error-handling",
      "evidence": "No authored data-entry form or invalid-submission flow appeared in the representative news reading paths.",
      "reason": "No authored data-entry form or invalid-submission flow appeared in the representative news reading paths."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for trustworthy-input-assistance",
      "evidence": "No authored sign-up, address, payment, or account input was exposed in the audited paths; account UI is externally mediated.",
      "reason": "No authored sign-up, address, payment, or account input was exposed in the audited paths; account UI is externally mediated."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for safe-commercial-and-account-flows using home-desktop.png, home-mobile.png",
      "evidence": "The fixed offer says 0.50 euros per month and more than 90% discount, but the visible viewport does not state the renewal price or commitment.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F023"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for optimised-assets using images.json",
      "evidence": "The images audit found 36 images without srcset, 44 legacy-format image URLs, no modern-format img sources, and eight below-fold images not lazy-loaded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F024"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for no-wasteful-work using home-summary.json, trackers.json",
      "evidence": "Third parties account for 4.61MB and 255 requests, including many advertising, experimentation, social and analytics SDKs before interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F025"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Active review for third-party-and-media-budget using home-summary.json, trackers.json",
      "evidence": "Third parties account for 4.61MB and 255 requests, including many advertising, experimentation, social and analytics SDKs before interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F025"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for structured-agent-capabilities",
      "evidence": "The publication exposes machine-readable articles but no transactional capability that would justify WebMCP tools in this audit.",
      "reason": "The publication exposes machine-readable articles but no transactional capability that would justify WebMCP tools in this audit."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement after representative-path recon for on-device-inference",
      "evidence": "On-device summarization is an emerging optional enhancement, not required for the publication’s core reading task.",
      "reason": "On-device summarization is an emerging optional enhancement, not required for the publication’s core reading task."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "issues",
      "confidence": "medium",
      "method": "Active review for no-leak-under-repeated-interaction using menu-repeat-metrics.json, heap-baseline.heapsnapshot, heap-post-menu.heapsnapshot",
      "evidence": "Within one session, ten open/close cycles increased DOM elements from 2,824 to 2,854 and used JS heap from 70.7MB to 82.5MB. Separate heap snapshots grew from 69.1MB to 72.3MB self size.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/menu-repeat-metrics.json",
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post-menu.heapsnapshot"
      ],
      "findingIds": [
        "F026"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "medium",
      "method": "Active review for bounded-footprint using heap-baseline.heapsnapshot, home-summary.json",
      "evidence": "The baseline heap snapshot contained 1,168,886 heap nodes and 69.1MB self size after load, alongside 3.41MB of transferred scripts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F027"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "issues",
      "confidence": "medium",
      "method": "Active review for no-detached-dom-or-unbounded-listeners using menu-repeat-metrics.json, heap-baseline.heapsnapshot, heap-post-menu.heapsnapshot",
      "evidence": "Within one session, ten open/close cycles increased DOM elements from 2,824 to 2,854 and used JS heap from 70.7MB to 82.5MB. Separate heap snapshots grew from 69.1MB to 72.3MB self size.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/menu-repeat-metrics.json",
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post-menu.heapsnapshot"
      ],
      "findingIds": [
        "F026"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F002",
        "F003"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F005",
        "F006"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F007",
        "F008",
        "F009"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F010",
        "F011",
        "F012",
        "F013"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F014",
        "F007",
        "F009"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F015",
        "F016",
        "F017"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F018",
        "F019"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F020",
        "F021",
        "F022"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F023"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F024",
        "F025"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "The publication exposes machine-readable articles but no transactional capability that would justify WebMCP tools in this audit. On-device summarization is an emerging optional enhancement, not required for the publication’s core reading task."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F026",
        "F027"
      ]
    }
  ],
  "agent": "pi",
  "runId": "2026-07-26T00-35-37-511Z"
}
