{
  "url": "https://sede.agenciatributaria.gob.es",
  "auditedAt": "2026-07-22T20:33:53.771Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete report-only audit across six representative public paths. Authenticated submission/payment and personal-account states were not entered because they require user credentials and consequential real-world actions; public task discovery, search, registration routing, and recovery were covered.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered MPA with Bootstrap-style shared shell and legacy first-party JavaScript",
    "notes": "Representative set covers landing, topic/listing, task routing, contact/support, search results, and 404 recovery. Not covered: authenticated personal area, real tax submission/payment, and every tax-topic page because those require credentials/consequential actions or repeat the sampled templates."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "images",
    "secrets",
    "lighthouse",
    "heap-summary",
    "raw-http robots/sitemap"
  ],
  "guidanceConsulted": [
    "accessibility",
    "dark-mode",
    "same-document-transitions",
    "shrinking-header-on-scroll",
    "declarative-dialog-popover-control",
    "fluid-scaling",
    "forms",
    "performance",
    "html",
    "security",
    "privacy",
    "stabilize-reactive-state",
    "translator",
    "validate-input-after-interaction",
    "deliver-optimized-decorative-images",
    "webmcp",
    "manage-recurring-intervals",
    "deprioritize-background-fetches"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Full landing page, desktop",
      "condition": "desktop",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Full landing page at narrow viewport",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Landing page under dark preference",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-forced-colors.png",
      "caption": "Landing page under forced colors/high contrast",
      "condition": "forced-colors: active",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "Narrow-layout overflow, CLS, and long-task observations",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F08"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Compact load trace metrics",
      "condition": "load",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools performance trace",
      "condition": "load",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Compact network delivery analysis",
      "condition": "load",
      "findingIds": [
        "F09",
        "F10",
        "F19",
        "F23"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "HAR 1.2 network capture",
      "condition": "load",
      "findingIds": [
        "F09",
        "F10",
        "F19",
        "F23"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "Raw HTML versus rendered content coverage",
      "condition": "JavaScript and no-JavaScript",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "Rendered browser view",
      "condition": "JavaScript enabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "Crawler/no-JavaScript view",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse.json",
      "caption": "Lighthouse 13.4.1 result",
      "condition": "mobile throttling",
      "findingIds": [
        "F07",
        "F08",
        "F10",
        "F11",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Compact Lighthouse findings and metrics",
      "condition": "mobile throttling",
      "findingIds": [
        "F07",
        "F08",
        "F10",
        "F11",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "Security response-header audit",
      "condition": "load",
      "findingIds": [
        "F18",
        "F20"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "Cookie security/privacy audit",
      "condition": "load",
      "findingIds": [
        "F18",
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "Third-party tracker enumeration",
      "condition": "load",
      "findingIds": [
        "F18",
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "Image optimization and accessibility inventory",
      "condition": "load",
      "findingIds": [
        "F08",
        "F13",
        "F22",
        "F23"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered home DOM and computed styles",
      "condition": "desktop",
      "findingIds": [
        "F04",
        "F05",
        "F09",
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/css-feature-summary.json",
      "caption": "Shared CSS modern-feature/static summary",
      "condition": "stylesheet",
      "findingIds": [
        "F01",
        "F02",
        "F03",
        "F06",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/route-metadata.json",
      "caption": "Metadata across representative routes",
      "condition": "multiple routes",
      "findingIds": [
        "F15",
        "F16",
        "F17",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots.txt response",
      "condition": "crawler",
      "findingIds": [
        "F15",
        "F16",
        "F17",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "Missing sitemap response body",
      "condition": "crawler",
      "findingIds": [
        "F15",
        "F16",
        "F17",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-motion.json",
      "caption": "Reduced-motion animation probe",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "Route, structure, and platform recon probe",
      "condition": "desktop",
      "findingIds": [
        "F04",
        "F05",
        "F09",
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-platform-focus.json",
      "caption": "Programmatic focus visibility probe",
      "condition": "keyboard focus",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-form.json",
      "caption": "Search form markup probe",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/heap-comparison-summary.json",
      "caption": "Baseline versus ten-cycle menu heap comparison",
      "condition": "10 menu cycles",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/memory-metrics.json",
      "caption": "In-page heap and DOM count delta",
      "condition": "10 menu cycles",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/irpf-mobile.png",
      "caption": "IRPF listing archetype",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/registro-mobile.png",
      "caption": "Registration journey entry",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/contact-mobile.png",
      "caption": "Contact/support archetype",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/search-mobile.png",
      "caption": "Completed search-results flow",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F06"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "Unknown-route recovery state",
      "condition": "viewport: 360x800",
      "findingIds": []
    }
  ],
  "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 multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The dark-emulated screenshot remains the same white surface as light mode; computed `color-scheme` is `normal`, and the 339 KB stylesheet has zero prefers-color-scheme rules.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/css-feature-summary.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Under reduce emulation matchMedia was true, no active animations remained, and the stylesheet contains 26 reduced-motion rules.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-motion.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The forced-colors/high-contrast screenshot retained visible text, controls, icons, and boundaries; Lighthouse contrast passed.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-forced-colors.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "CSS inspection found zero view-transition rules across the shared stylesheet; this MPA changes between core routes without cross-document transition styling.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/css-feature-summary.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "No scroll-linked visual effect was present, and CSS inspection found no scroll timelines; therefore no main-thread scroll-animation anti-pattern was observed.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/css-feature-summary.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The observed pages rely on native scrolling and links; the carousel exposes explicit previous/next controls and does not replace platform scrolling with custom pointer handling.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The 6,259 px home page uses static header/navigation chrome; CSS inspection found no scroll-state queries or scroll-timeline support.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/css-feature-summary.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "DOM inspection shows dropdown/collapse controls but no popover, anchor-name, position-anchor, or position-try usage in the shared shell.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-recon.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Breadcrumbs, section headings, descriptive link text, highlighted focus rings on links, and clear search-result highlighting preserve orientation across representative routes.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/irpf-mobile.png",
        "evidence/registro-mobile.png",
        "evidence/contact-mobile.png",
        "evidence/search-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Desktop and mobile load screenshots show content immediately with no modal, consent wall, interstitial, or content-obscuring banner.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The rendered shell has zero dialog/popover elements; mobile footer disclosures are buttons wired through data-toggle collapse rather than details, and menus use custom dropdown markup.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-recon.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Screenshots show a compact shared header and content-led cards/lists; the mobile shell gives most of the viewport to task content.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "At 360x800 the layout primitive reported scrollWidth=clientWidth=360 and zero horizontal overflow; all representative mobile screenshots reflow.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The 339 KB shared stylesheet contains zero `@container` rules; reusable cards and result/filter components are therefore coupled to global breakpoints.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/css-feature-summary.json",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Primary controls are usable by touch/keyboard; sampled account/menu targets are 42–52 px high and many links expose a 3.2 px yellow focus ring. A narrower focus defect is recorded separately.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-platform-focus.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Home search, prominent task cards, and route-specific H1/copy make the next action clear on home, IRPF, registration, contact, and search.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/irpf-mobile.png",
        "evidence/registro-mobile.png",
        "evidence/contact-mobile.png",
        "evidence/search-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The representative public search journey completed from query to 32,919 categorized results with filters; registration routes expose clear next-step choices.",
      "pathIds": [
        "search",
        "registro",
        "not-found"
      ],
      "artifacts": [
        "evidence/search-mobile.png",
        "evidence/registro-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The search shows query/results/filter state and the unknown-route test presents a clear 404 with “Comunicar incidencia” plus Home recovery.",
      "pathIds": [
        "search",
        "registro",
        "not-found"
      ],
      "artifacts": [
        "evidence/search-mobile.png",
        "evidence/404-mobile.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Lighthouse measured LCP 11.1 s, FCP 4.2 s, Speed Index 7.1 s, and CLS 0.154 (performance 0.54); an independent trace measured LCP 5.22 s and FCP 3.67 s.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Lighthouse recorded CLS 0.154 with two shift clusters; 11 of 12 images lacked explicit dimensions, while a separate mobile layout observation still recorded CLS 0.022 after waiting.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json",
        "evidence/home-mobile-layout.json",
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Trace recorded zero long tasks and 0 ms total blocking time; Lighthouse TBT was 40 ms.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "HAR recorded 2.66 MB: 1.55 MB script, 383 KB CSS, and 658 KB images. The 614 KB classic aeat.07.js has neither async nor defer; large text resources were uncompressed and many images/scripts lacked cache headers.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-dom.json",
        "evidence/home-recon.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Lighthouse estimated 864 KiB unused JavaScript and 358 KiB unused CSS; two first-party scripts alone transferred about 1.25 MB.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Lighthouse accessibility found the Area personal link has no discernible name and four footer buttons have aria-controls values that reference nonexistent IDs.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Lighthouse color-contrast audit passed and forced-colors capture retained readable controls/text.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json",
        "evidence/home-forced-colors.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The focus probe found no outline or focus box-shadow on the language button, mobile-menu button, search submit button, carousel CTA, or next-slide control, while many links did receive a yellow focus ring.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-recon.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Mobile screenshots show unclipped Spanish text at 16 px body sizing, clear headings, and readable line lengths across key templates.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/irpf-mobile.png",
        "evidence/registro-mobile.png",
        "evidence/contact-mobile.png",
        "evidence/search-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Viewport permits scaling (`width=device-width, initial-scale=1.0` without maximum-scale/user-scalable=no), and 360 px captures reflow without horizontal clipping.",
      "pathIds": [
        "search",
        "registro",
        "not-found"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Lighthouse found no browser errors logged to the console during load.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The image audit found 11 images without dimensions, 3 oversized images, 6 legacy-format images, and 5 without responsive sources; Lighthouse also flagged an incorrect call-widget aspect ratio and low-resolution icons.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Lighthouse reported missing source maps for the 614 KB aeat.07.js and 635 KB clickC.js assets.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Route metadata found no description on the home or Contacta con nosotros pages; Lighthouse failed the home meta-description audit.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml",
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Real hrefs dominate navigation, viewport meta is present, robots permits public content, and representative links use descriptive Spanish labels; one widget anchor defect is covered under inclusive naming.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "None of five representative pages exposed a canonical link; `/sitemap.xml` returned 404, while robots.txt lists only disallow rules and no sitemap location.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Across home, IRPF, registration, contact, and search templates, the probe found zero JSON-LD blocks and zero Open Graph tags.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Cookie evidence found both `_ga` cookies lacked Secure, used SameSite=None, and persisted for 400 days. HTTPS and HSTS are present, but the cookie posture weakens the transport baseline.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-cookies.json",
        "evidence/home-trackers.json",
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The load contacted four third-party origins including Google Tag Manager and Google Analytics, transferred 302 KB third-party data, and set 400-day `_ga` identifiers; no consent interaction preceded the requests.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-cookies.json",
        "evidence/home-trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Representative route DOM, screenshots, and active probes directly showed the expected outcome without a divergent signal.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-recon.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "Headers evidence shows CSP contains only `frame-ancestors`; X-Content-Type-Options, Referrer-Policy, and Permissions-Policy are absent. HSTS and clickjacking controls are present.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Discoverability measured 99% raw-HTML content coverage, with title and H1 present and no empty SPA shell; crawler screenshot preserves the page.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Menus, cards, search filters, and shared navigation rendered without clipping on 360 px and desktop captures; state remained usable across sampled routes.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/irpf-mobile.png",
        "evidence/registro-mobile.png",
        "evidence/contact-mobile.png",
        "evidence/search-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from site purpose and representative-route recon.",
      "evidence": "This public information/transaction portal is intrinsically online for official live tax operations; installability is not required, while progressive enhancement and failures were tested separately.",
      "reason": "This public information/transaction portal is intrinsically online for official live tax operations; installability is not required, while progressive enhancement and failures were tested separately.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "An intentional unknown URL displayed a specific 404 explanation, Home navigation, and a “Comunicar incidencia” recovery action rather than a blank shell.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/404-mobile.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The site provides multiple language variants and sets lang=es, but the 339 KB stylesheet contains 1,007 physical left/right property occurrences and only one logical-property occurrence; no dir attribute is emitted.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/css-feature-summary.json",
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The Spanish search results render dates with localized month names (for example 25/marzo/2025), and language variants are explicitly offered.",
      "pathIds": [
        "home",
        "irpf"
      ],
      "artifacts": [
        "evidence/search-mobile.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The shared header links to an official date/time page and displays an explicit official time; no ambiguous transaction time was observed in sampled public flows.",
      "pathIds": [
        "home",
        "irpf"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "No forced continuity, confirmshaming, disguised ads, nagging wall, or preselected commercial choice appeared on the representative public routes.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/irpf-mobile.png",
        "evidence/registro-mobile.png",
        "evidence/contact-mobile.png",
        "evidence/search-mobile.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The search field uses native required validation and the tested 404 state explains the problem and offers recovery without blaming the user.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/search-mobile.png",
        "evidence/404-mobile.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "The only sampled user input is a correctly typed search control with label, placeholder, and required semantics; address/payment/sign-up autocomplete is not present on these routes.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-form.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "No commercial/subscription flow is present; account access is clearly labeled and the service advertises government electronic identification rather than an upsell/password-only commercial flow.",
      "pathIds": [
        "search",
        "registro",
        "not-found"
      ],
      "artifacts": [
        "evidence/home-recon.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The image probe found 3 oversized images, 6 legacy-format assets, 5 images without srcset, and 6 below-fold images without lazy loading; the 1,125 px QR is displayed at 80 px.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Trace recorded no long tasks and the network settled after load; no autoplay media or continuously running animation was observed.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence inspection against mapped Modern Web Guidance.",
      "evidence": "The page transfers 2.66 MB, including 302 KB third-party code, a 380 KB carousel JPEG, and more than 1.2 MB of first-party script; several below-fold assets load eagerly.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from site purpose and representative-route recon.",
      "evidence": "No declared intent indicates that this government portal currently exposes agent-facing transaction capabilities; the emerging WebMCP opportunity is therefore not scored.",
      "reason": "No declared intent indicates that this government portal currently exposes agent-facing transaction capabilities; the emerging WebMCP opportunity is therefore not scored.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from site purpose and representative-route recon.",
      "evidence": "No sampled task requires on-device generative inference, and there is no declared intent to offer it; absence is not a quality failure.",
      "reason": "No sampled task requires on-device generative inference, and there is no declared intent to offer it; absence is not a quality failure.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "After ten real mobile-menu open/close cycles, snapshot self-size grew only 30,389 bytes and DOM count by one; no unbounded trend was observed (medium confidence due separate snapshots/no forced GC).",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/heap-comparison-summary.json",
        "evidence/memory-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Baseline heap summary was about 14.1 MB self size with 268,643 heap nodes, proportionate to this content-heavy MPA.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/heap-comparison-summary.json",
        "evidence/memory-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path inspection with the evidence primitive(s) referenced in the artifact manifest.",
      "evidence": "Ten menu cycles changed live DOM count by one and snapshot size by 0.2%; no accumulating detached/listener symptom was observed, though constructor-level retained-path analysis was unavailable.",
      "pathIds": [
        "home",
        "irpf",
        "registro",
        "contact",
        "search"
      ],
      "artifacts": [
        "evidence/heap-comparison-summary.json",
        "evidence/memory-metrics.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03",
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07",
        "F08",
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F16",
        "F17"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F18",
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No declared agent-facing or on-device-inference intent; both emerging checks were judged not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Public landing page and global navigation; represents the shared site shell, prominent tasks, campaigns and content discovery.",
      "url": "https://sede.agenciatributaria.gob.es/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "forced-colors: active",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "irpf",
      "description": "Tax topic/listing archetype and a high-traffic information journey, including highlighted procedures and assistance.",
      "url": "https://sede.agenciatributaria.gob.es/Sede/irpf.html",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "registro",
      "description": "Primary electronic-registration journey entry point; represents task routing into official transactions.",
      "url": "https://sede.agenciatributaria.gob.es/Sede/registro.html",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "pass"
    },
    {
      "id": "contact",
      "description": "Assistance/contact archetype, checked for clear recovery and support routes.",
      "url": "https://sede.agenciatributaria.gob.es/Sede/contacta-nosotros.html",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Completed public search flow for “renta”; represents form submission, results, filtering, and a core information-finding task.",
      "url": "https://sede.agenciatributaria.gob.es/Sede/search.html?q=renta",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "pass"
    },
    {
      "id": "not-found",
      "description": "Intentional unknown route used to inspect HTTP/error recovery state.",
      "url": "https://sede.agenciatributaria.gob.es/Sede/this-page-does-not-exist-audit.html",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "summary": "The site does not follow the user’s dark color-scheme preference.",
      "evidence": "The dark-emulated screenshot remains the same white surface as light mode; computed `color-scheme` is `normal`, and the 339 KB stylesheet has zero prefers-color-scheme rules.",
      "suggestedFix": "Declare `color-scheme: light dark` and define preference-driven surface, text, border, and form-control colors with `prefers-color-scheme` or `light-dark()`.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/css-feature-summary.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F02",
      "severity": "medium",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "summary": "Route and state changes do not use View Transitions.",
      "evidence": "CSS inspection found zero view-transition rules across the shared stylesheet; this MPA changes between core routes without cross-document transition styling.",
      "suggestedFix": "Add `@view-transition { navigation: auto; }` with restrained shared-element styling, preserving the reduced-motion treatment.",
      "effort": "medium",
      "artifacts": [
        "evidence/css-feature-summary.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "summary": "Long pages do not provide scroll-state-aware navigation chrome.",
      "evidence": "The 6,259 px home page uses static header/navigation chrome; CSS inspection found no scroll-state queries or scroll-timeline support.",
      "suggestedFix": "Use a sticky, compact header or progress/scroll affordance driven by scroll-state/container queries, without obscuring content.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/css-feature-summary.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F04",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "summary": "Dropdown and menu positioning relies on legacy custom/Bootstrap behavior rather than anchored positioning.",
      "evidence": "DOM inspection shows dropdown/collapse controls but no popover, anchor-name, position-anchor, or position-try usage in the shared shell.",
      "suggestedFix": "Move transient menus/tooltips to popover plus CSS anchor positioning and provide position-try fallbacks near viewport edges.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-recon.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F05",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "summary": "Shared disclosure and menu controls use custom collapse markup instead of modern semantic primitives.",
      "evidence": "The rendered shell has zero dialog/popover elements; mobile footer disclosures are buttons wired through data-toggle collapse rather than details, and menus use custom dropdown markup.",
      "suggestedFix": "Use `<details>` for footer disclosures and popover/dialog for transient/modal UI, preserving names, focus, and light-dismiss behavior.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-recon.json",
        "evidence/home-mobile.png"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F06",
      "severity": "low",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "css",
      "summary": "Components respond only through viewport-era CSS rather than their own containers.",
      "evidence": "The 339 KB shared stylesheet contains zero `@container` rules; reusable cards and result/filter components are therefore coupled to global breakpoints.",
      "suggestedFix": "Introduce `container-type: inline-size` on reusable regions and local `@container` rules for cards, result/filter layouts, and dense navigation.",
      "effort": "medium",
      "artifacts": [
        "evidence/css-feature-summary.json",
        "evidence/search-mobile.png"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F07",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Mobile load performance misses the Core Web Vitals bar.",
      "evidence": "Lighthouse measured LCP 11.1 s, FCP 4.2 s, Speed Index 7.1 s, and CLS 0.154 (performance 0.54); an independent trace measured LCP 5.22 s and FCP 3.67 s.",
      "suggestedFix": "Prioritize the LCP resource, compress text and images, reduce render-blocking work, and reserve all media space; verify under mobile throttling.",
      "effort": "large",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F08",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Late content shifts exceed the stable-layout target.",
      "evidence": "Lighthouse recorded CLS 0.154 with two shift clusters; 11 of 12 images lacked explicit dimensions, while a separate mobile layout observation still recorded CLS 0.022 after waiting.",
      "suggestedFix": "Set intrinsic width/height or aspect-ratio for every image and reserve carousel/widget space before resources arrive.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json",
        "evidence/home-mobile-layout.json",
        "evidence/home-images.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Critical resources are large, uncompressed, cache-poor, and render-blocking.",
      "evidence": "HAR recorded 2.66 MB: 1.55 MB script, 383 KB CSS, and 658 KB images. The 614 KB classic aeat.07.js has neither async nor defer; large text resources were uncompressed and many images/scripts lacked cache headers.",
      "suggestedFix": "Compress text with Brotli, defer non-critical classic scripts, split/inline only critical CSS, add immutable caching for versioned assets, and optimize LCP image discovery.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-dom.json",
        "evidence/home-recon.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F10",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Most shipped JavaScript and CSS is unused on the landing page.",
      "evidence": "Lighthouse estimated 864 KiB unused JavaScript and 358 KiB unused CSS; two first-party scripts alone transferred about 1.25 MB.",
      "suggestedFix": "Split the shared bundle by route/component, remove obsolete code, and load the click-to-call integration only when the user invokes it.",
      "effort": "large",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Shared controls have invalid or missing accessible names/relationships.",
      "evidence": "Lighthouse accessibility found the Area personal link has no discernible name and four footer buttons have aria-controls values that reference nonexistent IDs.",
      "suggestedFix": "Give the account link an accessible name and make every disclosure button’s aria-controls exactly match an existing panel ID; keep aria-expanded synchronized.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Keyboard focus is not visibly indicated on several shared controls.",
      "evidence": "The focus probe found no outline or focus box-shadow on the language button, mobile-menu button, search submit button, carousel CTA, or next-slide control, while many links did receive a yellow focus ring.",
      "suggestedFix": "Apply a consistent high-contrast `:focus-visible` ring to every interactive element and verify a complete keyboard walk.",
      "effort": "small",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-recon.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F13",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Image sizing and delivery have avoidable quality defects.",
      "evidence": "The image audit found 11 images without dimensions, 3 oversized images, 6 legacy-format images, and 5 without responsive sources; Lighthouse also flagged an incorrect call-widget aspect ratio and low-resolution icons.",
      "suggestedFix": "Add intrinsic dimensions and responsive `srcset`/`sizes`, preserve aspect ratios, and replace photographic PNG/JPEG assets with right-sized AVIF/WebP variants.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F14",
      "severity": "low",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Large first-party scripts lack valid source maps.",
      "evidence": "Lighthouse reported missing source maps for the 614 KB aeat.07.js and 635 KB clickC.js assets.",
      "suggestedFix": "Publish production source maps with controlled access or remove stale sourceMappingURL references; use them to diagnose remaining bundle waste.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F15",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Key public pages lack meta descriptions.",
      "evidence": "Route metadata found no description on the home or Contacta con nosotros pages; Lighthouse failed the home meta-description audit.",
      "suggestedFix": "Add concise, unique descriptions that state the page purpose and primary service for every indexable template.",
      "effort": "small",
      "artifacts": [
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml",
        "evidence/lighthouse-summary.json",
        "evidence/home-lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F16",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Canonical and sitemap signals are incomplete.",
      "evidence": "None of five representative pages exposed a canonical link; `/sitemap.xml` returned 404, while robots.txt lists only disallow rules and no sitemap location.",
      "suggestedFix": "Emit self-referencing canonicals on public templates and publish an XML sitemap referenced from robots.txt; retain NOINDEX only for internal search results.",
      "effort": "medium",
      "artifacts": [
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F17",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Public entity and content templates lack structured/share metadata.",
      "evidence": "Across home, IRPF, registration, contact, and search templates, the probe found zero JSON-LD blocks and zero Open Graph tags.",
      "suggestedFix": "Add accurate Organization/WebSite JSON-LD and template-specific structured data where applicable, plus Open Graph/Twitter preview metadata matching visible content.",
      "effort": "medium",
      "artifacts": [
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F18",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Analytics cookies are set without Secure and with SameSite=None.",
      "evidence": "Cookie evidence found both `_ga` cookies lacked Secure, used SameSite=None, and persisted for 400 days. HTTPS and HSTS are present, but the cookie posture weakens the transport baseline.",
      "suggestedFix": "Set Secure and an appropriate SameSite value for all cookies, shorten analytics lifetime, and verify consent/necessity before setting analytics identifiers.",
      "effort": "small",
      "artifacts": [
        "evidence/home-cookies.json",
        "evidence/home-trackers.json",
        "evidence/home-headers.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "Tracking starts on page load with a persistent analytics footprint.",
      "evidence": "The load contacted four third-party origins including Google Tag Manager and Google Analytics, transferred 302 KB third-party data, and set 400-day `_ga` identifiers; no consent interaction preceded the requests.",
      "suggestedFix": "Minimize or remove client analytics, gate non-essential tracking behind an explicit choice where required, and use short-lived, privacy-preserving first-party measurement.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-cookies.json",
        "evidence/home-trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F20",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "The CSP and defensive header set are incomplete.",
      "evidence": "Headers evidence shows CSP contains only `frame-ancestors`; X-Content-Type-Options, Referrer-Policy, and Permissions-Policy are absent. HSTS and clickjacking controls are present.",
      "suggestedFix": "Deploy a nonce/hash-based resource CSP, `X-Content-Type-Options: nosniff`, a strict Referrer-Policy, and a minimal Permissions-Policy, testing in report-only mode first.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F21",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "internationalization",
      "summary": "The shared layout is not robust for bidirectional writing modes.",
      "evidence": "The site provides multiple language variants and sets lang=es, but the 339 KB stylesheet contains 1,007 physical left/right property occurrences and only one logical-property occurrence; no dir attribute is emitted.",
      "suggestedFix": "Use inline/block logical properties and emit the correct `dir` per locale so translated layouts can support RTL without template forks.",
      "effort": "large",
      "artifacts": [
        "evidence/css-feature-summary.json",
        "evidence/route-metadata.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F22",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "summary": "Image delivery wastes bytes and misses responsive optimization.",
      "evidence": "The image probe found 3 oversized images, 6 legacy-format assets, 5 images without srcset, and 6 below-fold images without lazy loading; the 1,125 px QR is displayed at 80 px.",
      "suggestedFix": "Generate responsive AVIF/WebP sources, right-size the QR and carousel assets, and lazy-load below-fold media with intrinsic dimensions.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    },
    {
      "id": "F23",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "summary": "Third-party and decorative resources are disproportionate to this mostly informational page.",
      "evidence": "The page transfers 2.66 MB, including 302 KB third-party code, a 380 KB carousel JPEG, and more than 1.2 MB of first-party script; several below-fold assets load eagerly.",
      "suggestedFix": "Set a route-level byte budget, defer third-party/click-to-call code until needed, and lazy-load non-critical visual media.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-images.json"
      ],
      "pathId": "home",
      "url": "https://sede.agenciatributaria.gob.es/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Cut the critical load path and bundle weight",
      "priority": 1,
      "findingIds": [
        "F07",
        "F09",
        "F10",
        "F23"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Repair shared accessible names, ARIA relationships, and focus indicators",
      "priority": 2,
      "findingIds": [
        "F11",
        "F12"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Harden cookies, CSP, privacy, and defensive headers",
      "priority": 3,
      "findingIds": [
        "F18",
        "F19",
        "F20"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Build a responsive image pipeline and reserve media space",
      "priority": 4,
      "findingIds": [
        "F08",
        "F13",
        "F22"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Complete descriptions, canonicals, sitemap, and structured/share metadata",
      "priority": 5,
      "findingIds": [
        "F15",
        "F16",
        "F17"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Add system dark mode and modern responsive/transition primitives",
      "priority": 6,
      "findingIds": [
        "F01",
        "F02",
        "F03",
        "F04",
        "F05",
        "F06"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Migrate layout CSS to logical properties",
      "priority": 7,
      "findingIds": [
        "F21"
      ],
      "guidanceId": "translator",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Publish usable production source maps",
      "priority": 8,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-22T20-33-53-771Z"
}
