{
  "url": "https://actu.fr",
  "auditedAt": "2026-07-21T04:50:19.997Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete: all 58 checks judged. Remote report mode; no source changes.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered custom news platform",
    "notes": "French national/local news MPA with article, section, newsletter, account and advertising surfaces."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "transition-video",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "Modern Web Guidance 0.0.172"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "size-aware-styling",
    "forms",
    "optimize-image-priority",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "visually-stable-font-fallbacks",
    "privacy",
    "batch-analytics-events",
    "security",
    "agentic-forms",
    "deliver-optimized-decorative-images",
    "autofill-sign-up-form",
    "html"
  ],
  "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": "Direct browser evidence and targeted probe for this check.",
      "evidence": "The dark-condition probe found no prefers-color-scheme/light-dark CSS, and the dark mobile screenshot is pixel-identical to the light capture.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-dark.png",
        "evidence/probe-preferences.json"
      ],
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Preference probe found loaded prefers-reduced-motion CSS and no active animations under reduce.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "The preference probe found no prefers-contrast or forced-colors rules in loaded CSS.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-preferences.json"
      ],
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Loaded CSS/HTML probe found view-transition usage on all representative templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Loaded CSS probe found animation-timeline/scroll-timeline usage; trace provides corroborating runtime evidence.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Loaded CSS probe found scroll-snap and logical overscroll-capable styling without observed pointer-handler breakage.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Loaded CSS probe found scroll timeline behavior and browser/crawler screenshots show responsive navigation chrome.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Loaded CSS probe found anchor positioning rules and no viewport overflow at 360px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Skip links, landmarks, headline hierarchy, and visible focused-navigation outlines directly guide attention.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Desktop and 360x800 screenshots show the Didomi notice covering the complete content area before interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F003"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "DOM probe found 2 role=dialog elements but 0 <dialog>, 0 popover, and 0 details elements.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ],
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "The initial viewport is entirely consent UI; the no-JS browser view then devotes a large early block to advertising before headline content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-discoverability-crawler.png"
      ],
      "findingIds": [
        "F005"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Layout measured 360px scrollWidth against 360px innerWidth on home and article, with viewport meta present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Loaded-CSS probe found no @container or container-type usage across homepage, article, and newsletter templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/article-mobile-layout.json"
      ],
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Focus probe showed visible 2px outlines on site controls and consent actions are at least 40px high.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Homepage and article titles/headings clearly identify current news and the next action is a real headline link.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Recon found multiple hrefs such as https://actu.fr/https:/actu.fr/normandie/... in the primary homepage feed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-recon.json"
      ],
      "findingIds": [
        "F007"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "404 probe returned HTTP 404 with “Oups ! erreur 404”, home/search recovery links, and current articles.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Lighthouse measured LCP 4.81s on home and 4.63s on the article; performance scores were 0.76 and 0.77.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-article.json"
      ],
      "findingIds": [
        "F008"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Layout and Lighthouse measured CLS 0.025-0.030, within the good range.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Trace summary recorded one 1323.94ms long task and 1273.94ms total blocking time.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "findingIds": [
        "F009"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Lighthouse estimated 820ms render-blocking savings; HAR confirms a VeryHigh parser stylesheet and slow GTM/consent/script requests.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Lighthouse estimated 551 KiB unused JavaScript and 59 KiB unused CSS; HAR transferred 1.06 MB of scripts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F011"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Probe counted 154 empty-text links on home and 57 on article; Lighthouse identified two visible-label/accessibility-name mismatches.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/lighthouse-home-details.json"
      ],
      "findingIds": [
        "F012"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Lighthouse measured 1.83:1 for green #2a8749 text over blue #035188, below the required 4.5:1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home-details.json"
      ],
      "findingIds": [
        "F013"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Probe counted 154 empty-text links on home and 57 on article; Lighthouse identified two visible-label/accessibility-name mismatches.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/lighthouse-home-details.json"
      ],
      "findingIds": [
        "F012"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Representative screenshots and Lighthouse accessibility scores show readable text; no clipping or horizontal overflow was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Viewport permits 5x scaling/user-scalable=yes and both templates reflow without 360px overflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Lighthouse captured: <svg> attribute width expected a length but received auto.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home-details.json"
      ],
      "findingIds": [
        "F014"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Images audit found 2 missing dimensions, 46 missing srcset, and 51 legacy-format images; Lighthouse also flagged the unsized LCP image.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse-home-details.json"
      ],
      "findingIds": [
        "F015"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Lighthouse failed valid-source-maps and inspector-issues audits on the homepage.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-home-details.json"
      ],
      "findingIds": [
        "F016"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Home, article, and newsletter probes found unique descriptive titles and meta descriptions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Real hrefs, viewport meta, valid robots, and Lighthouse SEO 1.0 were observed, aside from malformed links captured as an issue.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Home/article expose canonical and index/follow; Lighthouse reports valid robots and SEO 1.0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "DOM probe found og:title=\"\" on the homepage, while the article correctly supplies NewsArticle JSON-LD and populated Open Graph fields.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json"
      ],
      "findingIds": [
        "F017"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Headers probe found no Referrer-Policy or Permissions-Policy; cookies probe found didomi_token without Secure. CSP, HSTS, and nosniff were present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "F018"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "HAR attributed 22 requests and 882,036 bytes to third parties; tracker probe found GTM and DoubleClick, while consent text names 765 partners.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F019"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "No notification/geolocation prompt appeared on load; authentication is optional rather than part of the sampled core reading flow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Headers probe found no Referrer-Policy or Permissions-Policy; cookies probe found didomi_token without Secure. CSP, HSTS, and nosniff were present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "F018"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Crawler-view Chrome with JavaScript disabled rendered navigation and editorial content; the page is server-rendered.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability-crawler.png",
        "evidence/probe-404.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Menus/chrome remained within the 360px viewport; CSS includes anchor positioning and layout showed no overflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability-crawler.png",
        "evidence/probe-404.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "This public news MPA has a manifest and service worker, but installability/offline app behavior is contextual and not necessary for its core read-online purpose.",
      "reason": "This public news MPA has a manifest and service worker, but installability/offline app behavior is contextual and not necessary for its core read-online purpose.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Direct 404 probe returned a useful error heading, explanation, home/search recovery, and recent stories.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability-crawler.png",
        "evidence/probe-404.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "All templates declare lang=fr and loaded CSS contains logical properties.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Rendered French dates/numbers use locale-appropriate language and punctuation on sampled content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/probe-home.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "The sampled news templates do not expose scheduling or user-entered time-zone-sensitive events.",
      "reason": "The sampled news templates do not expose scheduling or user-entered time-zone-sensitive events.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "The wall offers “Tout accepter” directly, while the visible alternative is “Refuser et s’abonner” for €2/month; free rejection requires entering settings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F020"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Newsletter probe found the email input has no associated label and is not required; the city search also lacks a label and autocomplete.",
      "pathIds": [
        "newsletter"
      ],
      "artifacts": [
        "evidence/probe-newsletter.json"
      ],
      "findingIds": [
        "F021"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Newsletter probe found the email input has no associated label and is not required; the city search also lacks a label and autocomplete.",
      "pathIds": [
        "newsletter"
      ],
      "artifacts": [
        "evidence/probe-newsletter.json"
      ],
      "findingIds": [
        "F021"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "The wall offers “Tout accepter” directly, while the visible alternative is “Refuser et s’abonner” for €2/month; free rejection requires entering settings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F020"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Images audit reported 51 legacy images and 46 without srcset among 68 images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F022"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Trace summary recorded one 1323.94ms long task and 1273.94ms total blocking time. HAR attributed 22 requests and 882,036 bytes to third parties; tracker probe found GTM and DoubleClick, while consent text names 765 partners.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json",
        "evidence/home-summary.json",
        "evidence/home-trackers.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F009",
        "F019"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "HAR attributed 22 requests and 882,036 bytes to third parties; tracker probe found GTM and DoubleClick, while consent text names 765 partners.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F019"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and targeted probe for this check.",
      "evidence": "Discoverability fetches for home and article returned 403 with zero raw-content coverage; probes found no WebMCP/agent tool registration. JS-disabled Chrome could render SSR content, so this is UA policy rather than a JS shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/article-discoverability.json",
        "evidence/home-discoverability-crawler.png"
      ],
      "findingIds": [
        "F023"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "No reader task in the sampled news, section, or newsletter templates requires on-device inference.",
      "reason": "No reader task in the sampled news, section, or newsletter templates requires on-device inference.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Heap grew only 539,509 bytes (2.6%) after ten repeated Services open/close attempts, not evidence of unbounded retained growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-services.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Heap summary measured 21.1 MB baseline self size; proportionate for this image-rich news page despite 1.58 MB transfer.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-services.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Targeted DOM/CSS/evaluate, visual, layout, network, Lighthouse, or heap evidence as appropriate.",
      "evidence": "Before/after heap summaries showed no Detached* constructor among top retained constructors and only 2.6% total growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-services.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F001",
        "F002"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F003",
        "F004",
        "F005"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F007"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F008",
        "F009",
        "F010",
        "F011"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F012",
        "F013"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F014",
        "F015",
        "F016"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F017"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F018",
        "F019"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F020",
        "F021"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F022",
        "F009",
        "F019"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F023"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage: primary news discovery, navigation, consent, responsive and preference conditions.",
      "url": "https://actu.fr/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "JavaScript disabled"
      ],
      "result": "issues"
    },
    {
      "id": "section",
      "description": "Society section: representative listing/index template.",
      "url": "https://actu.fr/societe",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "article",
      "description": "Representative lead NewsArticle: reading, metadata, performance and responsive layout.",
      "url": "https://actu.fr/planete/biodiversite/pesticides-interdits-le-tres-polemique-projet-de-loi-d-urgence-agricole-adopte-par-l-assemblee-nationale_64563510.html",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "JavaScript disabled"
      ],
      "result": "issues"
    },
    {
      "id": "newsletter",
      "description": "Primary signup/form template and input-assistance surface.",
      "url": "https://actu.fr/newsletter/",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "HTTP failure/recovery path.",
      "url": "https://actu.fr/this-page-does-not-exist-web-uplift",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F001",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "summary": "The site has no user-preference-driven dark theme.",
      "evidence": "The dark-condition probe found no prefers-color-scheme/light-dark CSS, and the dark mobile screenshot is pixel-identical to the light capture.",
      "suggestedFix": "Declare color-scheme and theme surfaces with prefers-color-scheme or light-dark(), preserving contrast.",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-mobile-dark.png",
        "evidence/probe-preferences.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F002",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "summary": "High-contrast preferences are not handled.",
      "evidence": "The preference probe found no prefers-contrast or forced-colors rules in loaded CSS.",
      "suggestedFix": "Add forced-colors and prefers-contrast adaptations for text, controls, focus indicators, and custom chrome.",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/probe-preferences.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F003",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "summary": "A full-viewport consent wall obscures all news on first load.",
      "evidence": "Desktop and 360x800 screenshots show the Didomi notice covering the complete content area before interaction.",
      "suggestedFix": "Replace the blocking wall with a compact, non-obscuring consent surface and preserve a direct equivalent reject action.",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F004",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "summary": "Overlays use custom role=dialog containers rather than native dialog/popover primitives.",
      "evidence": "DOM probe found 2 role=dialog elements but 0 <dialog>, 0 popover, and 0 details elements.",
      "suggestedFix": "Use <dialog> for modal consent and popover for transient menus, with declarative light dismiss and focus management.",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/probe-home.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F005",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "summary": "Consent and advertising chrome dominate the initial experience.",
      "evidence": "The initial viewport is entirely consent UI; the no-JS browser view then devotes a large early block to advertising before headline content.",
      "suggestedFix": "Reduce consent height and reserve smaller ad slots so editorial content is visible in the first viewport.",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-discoverability-crawler.png"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F006",
      "severity": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "summary": "Components rely on viewport adaptation without container queries.",
      "evidence": "Loaded-CSS probe found no @container or container-type usage across homepage, article, and newsletter templates.",
      "suggestedFix": "Make reusable cards and navigation components size-aware with container queries and intrinsic fallbacks.",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/article-mobile-layout.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F007",
      "severity": "high",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "summary": "Prominent article links are malformed and route through duplicated actu.fr path text.",
      "evidence": "Recon found multiple hrefs such as https://actu.fr/https:/actu.fr/normandie/... in the primary homepage feed.",
      "suggestedFix": "Correct URL construction at render time and add link-integrity tests for every feed template.",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-recon.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F008",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "summary": "Mobile LCP is slow on both representative templates.",
      "evidence": "Lighthouse measured LCP 4.81s on home and 4.63s on the article; performance scores were 0.76 and 0.77.",
      "suggestedFix": "Prioritize the LCP resource, reduce critical CSS/script contention, and defer consent/ad work until after the main content paints.",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-article.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F009",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "summary": "A very long main-thread task blocks responsiveness during load.",
      "evidence": "Trace summary recorded one 1323.94ms long task and 1273.94ms total blocking time.",
      "suggestedFix": "Profile the task, split work into yieldable chunks, and defer analytics/ad initialization by priority.",
      "guidanceId": "break-up-long-tasks",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F010",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "summary": "Render-blocking and slow dependency chains delay content.",
      "evidence": "Lighthouse estimated 820ms render-blocking savings; HAR confirms a VeryHigh parser stylesheet and slow GTM/consent/script requests.",
      "suggestedFix": "Inline only critical CSS, defer noncritical styles/scripts, and set explicit fetch priorities for the LCP path.",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F011",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "summary": "The initial route ships substantial unused code.",
      "evidence": "Lighthouse estimated 551 KiB unused JavaScript and 59 KiB unused CSS; HAR transferred 1.06 MB of scripts.",
      "suggestedFix": "Code-split route features and conditionally load advertising, consent, and account dependencies.",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F012",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "summary": "Many linked images produce empty accessible links, and consent link names mismatch visible labels.",
      "evidence": "Probe counted 154 empty-text links on home and 57 on article; Lighthouse identified two visible-label/accessibility-name mismatches.",
      "suggestedFix": "Give every linked card an accessible name from its headline and ensure aria-label includes the visible consent-link text.",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/lighthouse-home-details.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F013",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "summary": "A homepage category label fails WCAG contrast.",
      "evidence": "Lighthouse measured 1.83:1 for green #2a8749 text over blue #035188, below the required 4.5:1.",
      "suggestedFix": "Choose a category/background token pair that reaches at least 4.5:1 for normal text.",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home-details.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F014",
      "severity": "low",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "summary": "The homepage logs a rendering error.",
      "evidence": "Lighthouse captured: <svg> attribute width expected a length but received auto.",
      "suggestedFix": "Give the SVG a valid numeric/CSS width and keep the console clean in CI.",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home-details.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "trivial"
    },
    {
      "id": "F015",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "summary": "Image markup and formats waste bytes and risk layout shift.",
      "evidence": "Images audit found 2 missing dimensions, 46 missing srcset, and 51 legacy-format images; Lighthouse also flagged the unsized LCP image.",
      "suggestedFix": "Add intrinsic width/height, responsive srcset/sizes, and AVIF/WebP sources with appropriate fallbacks.",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse-home-details.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F016",
      "severity": "low",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "summary": "First-party bundles lack usable source maps and DevTools reports inspector issues.",
      "evidence": "Lighthouse failed valid-source-maps and inspector-issues audits on the homepage.",
      "suggestedFix": "Publish protected production source maps and resolve reported CSP/inspector issues.",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-home-details.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F017",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "summary": "Homepage Open Graph metadata has an empty title.",
      "evidence": "DOM probe found og:title=\"\" on the homepage, while the article correctly supplies NewsArticle JSON-LD and populated Open Graph fields.",
      "suggestedFix": "Populate homepage og:title from the descriptive document title and validate social cards in release checks.",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/probe-home.json",
        "evidence/probe-article.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F018",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "summary": "Security policy coverage is incomplete and the consent cookie is not Secure.",
      "evidence": "Headers probe found no Referrer-Policy or Permissions-Policy; cookies probe found didomi_token without Secure. CSP, HSTS, and nosniff were present.",
      "suggestedFix": "Set Secure on all HTTPS cookies and add explicit least-privilege Referrer-Policy and Permissions-Policy headers.",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F019",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "summary": "Third-party advertising and tracking dominate the initial transfer.",
      "evidence": "HAR attributed 22 requests and 882,036 bytes to third parties; tracker probe found GTM and DoubleClick, while consent text names 765 partners.",
      "suggestedFix": "Minimize vendors, gate nonessential requests behind consent, batch analytics, and enforce a third-party byte/request budget.",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json",
        "evidence/home-desktop.png"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F020",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "summary": "Rejecting personalized advertising is not an equivalent one-click choice.",
      "evidence": "The wall offers “Tout accepter” directly, while the visible alternative is “Refuser et s’abonner” for €2/month; free rejection requires entering settings.",
      "suggestedFix": "Provide equally prominent one-click accept and reject controls without coupling rejection to a paid subscription.",
      "guidanceId": "forms",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F021",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "summary": "Newsletter and location forms lack explicit validation semantics.",
      "evidence": "Newsletter probe found the email input has no associated label and is not required; the city search also lacks a label and autocomplete.",
      "suggestedFix": "Add visible labels, required/email validation, appropriate autocomplete, and accessible post-interaction error messages.",
      "guidanceId": "forms",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/probe-newsletter.json"
      ],
      "pathId": "newsletter",
      "url": "https://actu.fr/newsletter/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F022",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "summary": "Most editorial images use legacy formats without responsive candidates.",
      "evidence": "Images audit reported 51 legacy images and 46 without srcset among 68 images.",
      "suggestedFix": "Generate AVIF/WebP variants and right-size each editorial image with srcset/sizes.",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    },
    {
      "id": "F023",
      "severity": "medium",
      "principleId": "be-agent-ready",
      "principleCheckId": "structured-agent-capabilities",
      "summary": "Non-browser agents receive a 403 and no structured agent capability is exposed.",
      "evidence": "Discoverability fetches for home and article returned 403 with zero raw-content coverage; probes found no WebMCP/agent tool registration. JS-disabled Chrome could render SSR content, so this is UA policy rather than a JS shell.",
      "suggestedFix": "Permit legitimate read-only crawler user agents and expose safe, structured article/search capabilities where appropriate.",
      "guidanceId": "agentic-forms",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/article-discoverability.json",
        "evidence/home-discoverability-crawler.png"
      ],
      "pathId": "home",
      "url": "https://actu.fr/",
      "confidence": "high",
      "effort": "medium"
    }
  ],
  "taskList": [
    {
      "id": "T001",
      "title": "Make consent non-blocking and provide equal one-click reject",
      "priority": 1,
      "findingIds": [
        "F003",
        "F005",
        "F020"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T002",
      "title": "Cut load-time script and third-party work",
      "priority": 2,
      "findingIds": [
        "F008",
        "F009",
        "F010",
        "F011",
        "F019"
      ],
      "guidanceId": "break-up-long-tasks",
      "status": "open"
    },
    {
      "id": "T003",
      "title": "Repair malformed feed links and accessible card names",
      "priority": 3,
      "findingIds": [
        "F007",
        "F012"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T004",
      "title": "Modernize responsive image delivery",
      "priority": 4,
      "findingIds": [
        "F015",
        "F022"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T005",
      "title": "Complete preference, form, metadata and policy hygiene",
      "priority": 5,
      "findingIds": [
        "F001",
        "F002",
        "F006",
        "F013",
        "F014",
        "F016",
        "F017",
        "F018",
        "F021",
        "F023"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    }
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "404 mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "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": [
        "F023"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/article-mobile-layout.json",
      "caption": "article mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F006"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/article-mobile.png",
      "caption": "article mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-underlay.png",
      "caption": "article underlay",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "guidance retrieved",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-searches.jsonl",
      "caption": "guidance searches",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "heap baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-services.json",
      "caption": "heap post services",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-buttons.json",
      "caption": "home buttons",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-clean.png",
      "caption": "home clean",
      "findingIds": []
    },
    {
      "type": "video",
      "path": "evidence/home-consent-scroll.mp4",
      "caption": "home consent scroll",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "home cookies",
      "findingIds": [
        "F018"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F003",
        "F005",
        "F019",
        "F020"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler",
      "findingIds": [
        "F005",
        "F023"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": [
        "F023"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "home headers",
      "findingIds": [
        "F018"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images",
      "findingIds": [
        "F015",
        "F022"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile-clean.png",
      "caption": "home mobile clean",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile-dark.png",
      "caption": "home mobile dark",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile-underlay.png",
      "caption": "home mobile underlay",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F003",
        "F020"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": [
        "F007"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "home secrets",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F010",
        "F011",
        "F019"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F009"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": [
        "F009"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "home trackers",
      "findingIds": [
        "F019"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-underlay.png",
      "caption": "home underlay",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F010"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-article-details.json",
      "caption": "lighthouse article details",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-article.json",
      "caption": "lighthouse article",
      "findingIds": [
        "F008"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home-details.json",
      "caption": "lighthouse home details",
      "findingIds": [
        "F012",
        "F013",
        "F014",
        "F015",
        "F016"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": [
        "F008",
        "F010",
        "F011",
        "F016"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary-clean.json",
      "caption": "lighthouse summary clean",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/newsletter-mobile.png",
      "caption": "newsletter mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/newsletter-underlay.png",
      "caption": "newsletter underlay",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/probe-404.json",
      "caption": "probe 404",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/probe-article.json",
      "caption": "probe article",
      "findingIds": [
        "F017"
      ]
    },
    {
      "type": "other",
      "path": "evidence/probe-home.json",
      "caption": "probe home",
      "findingIds": [
        "F004",
        "F006",
        "F012",
        "F017"
      ]
    },
    {
      "type": "other",
      "path": "evidence/probe-newsletter.json",
      "caption": "probe newsletter",
      "findingIds": [
        "F021"
      ]
    },
    {
      "type": "other",
      "path": "evidence/probe-preferences.json",
      "caption": "probe preferences",
      "findingIds": [
        "F001",
        "F002"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/section-societe.png",
      "caption": "section societe",
      "findingIds": []
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T04-50-19-997Z"
}
