{
  "url": "https://www.staseraintv.com",
  "auditedAt": "2026-07-19T16:14:54.009Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete atomic audit across four representative MPA templates. No local site config was available or applied.",
  "page": {
    "appType": "mpa",
    "framework": "none detected",
    "notes": "Public Italian TV schedule. Audited home, one channel detail, first-run listing, and tomorrow listing. Other channel pages share the same detail/listing templates and were not duplicated; no account, checkout, search, or authored form exists."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "images",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "heap-summary",
    "lighthouse",
    "static HTTP/CSS inspection",
    "Modern Web Guidance 0.0.172"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "component-specific-light-dark-theme",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "cross-document-transitions",
    "group-element-transitions",
    "faster-spa-view-transitions",
    "scrollytelling",
    "parallax-scroll-effects",
    "scroll-entry-exit-effects",
    "carousel-slide-effects",
    "physics-based-easing",
    "individual-transform-properties",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "dynamic-sibling-animations",
    "interactive-content-reveal",
    "pull-to-reveal",
    "swipe-to-remove",
    "shrinking-header-on-scroll",
    "scroll-progress-indicator",
    "scroll-position-aware-elements",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "soft-edge-content-fade",
    "scrollability-affordance-hints",
    "anchor-positioning-tab-underline",
    "position-aware-tooltips",
    "interest-triggered-tooltips",
    "interest-triggered-action-previews",
    "directional-navigation-transitions",
    "carousel-snap-highlights",
    "navigation-drawer",
    "stack-drill-down",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "declarative-dialog-popover-control",
    "animated-select-picker",
    "branded-select-styling",
    "brand-consistent-forms",
    "custom-select-picker-layouts",
    "rich-media-picker",
    "complex-shapes",
    "shaped-cutouts",
    "overflow-clipping-control",
    "visually-texture-content",
    "apply-webgl-shaders",
    "interactive-content-in-3d-scenes",
    "highlight-text-ranges",
    "prevent-text-wrapping",
    "customize-scrollbar-color-and-thickness",
    "export-html-media-from-canvas",
    "fluid-scaling",
    "calculate-with-intrinsic-sizes",
    "css-layout",
    "size-aware-styling",
    "content-based-styling",
    "child-state-based-styling",
    "design-token-reactivity",
    "dynamic-sibling-styling",
    "form-fields-automatically-fit-contents",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "required-field-feedback",
    "validate-input-after-interaction",
    "identify-inp-causes",
    "schedule-tasks-by-priority",
    "optimize-preload-priority",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "performance",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "optimize-image-priority",
    "conditional-async-dependencies",
    "expose-canvas-content-to-browser-features",
    "move-dom-element-without-losing-state",
    "precise-text-alignment",
    "visually-stable-mixed-fonts",
    "css",
    "html",
    "reduce-style-repetition",
    "security",
    "privacy",
    "batch-analytics-events",
    "full-session-analytics",
    "calculate-total-foreground-time",
    "passkeys",
    "passkey-registration",
    "passkey-authentication",
    "passkey-reauthentication",
    "passkey-conditional-create",
    "passkey-management",
    "flicker-free-client-side-ab-testing",
    "consistent-cross-document-transitions",
    "stabilize-reactive-state",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-top-layer-ui",
    "detect-initial-visibility-state",
    "sequence-distributed-events",
    "translator",
    "language-detection",
    "support-global-calendar-systems",
    "capture-location-agnostic-data",
    "format-human-readable-durations",
    "manage-recurring-intervals",
    "calculate-event-differentials",
    "coordinate-global-events",
    "model-partial-time-concepts",
    "search-hidden-content",
    "select-menu-interaction",
    "style-parent-with-has",
    "autofill-address-form",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "autofill-highlight-inputs",
    "deliver-optimized-decorative-images",
    "resolution-optimized-pseudo-elements",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "agentic-forms",
    "agentic-javascript-tools",
    "language-model",
    "summarizer"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/channel-discoverability-crawler.png",
      "caption": "channel discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/channel-discoverability-rendered.png",
      "caption": "channel discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/channel-discoverability.json",
      "caption": "channel discoverability"
    },
    {
      "type": "layout",
      "path": "evidence/channel-mobile-layout.json",
      "caption": "channel mobile layout"
    },
    {
      "type": "dom",
      "path": "evidence/channel-probe.json",
      "caption": "channel probe"
    },
    {
      "type": "screenshot",
      "path": "evidence/channel-rai1.png",
      "caption": "channel rai1"
    },
    {
      "type": "dom",
      "path": "evidence/cookies.json",
      "caption": "cookies"
    },
    {
      "type": "screenshot",
      "path": "evidence/first-run-listing.png",
      "caption": "first run listing"
    },
    {
      "type": "dom",
      "path": "evidence/headers.json",
      "caption": "headers"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark-reduced.png",
      "caption": "home dark reduced",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability"
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-baseline.json",
      "caption": "home heap baseline"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-post-scroll.json",
      "caption": "home heap post scroll"
    },
    {
      "type": "dom",
      "path": "evidence/home-images.json",
      "caption": "home images"
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile"
    },
    {
      "type": "dom",
      "path": "evidence/home-probe.json",
      "caption": "home probe"
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary"
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary"
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace"
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-details.json",
      "caption": "lighthouse details"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse"
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots"
    },
    {
      "type": "dom",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "sitemap"
    },
    {
      "type": "screenshot",
      "path": "evidence/tomorrow-listing.png",
      "caption": "tomorrow listing"
    },
    {
      "type": "dom",
      "path": "evidence/trackers.json",
      "caption": "trackers"
    }
  ],
  "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 visual and objective evidence gathered for this registered check.",
      "evidence": "The light/default and prefers-color-scheme: dark captures retain the same black page; the probe reports colorScheme \"normal\" and no prefers-color-scheme, color-scheme, or light-dark() CSS.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dark-reduced.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "The reduced-motion capture and animation probe found zero running animations; there is no auto-advance or non-essential motion to suppress.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Darken affected channel colors or use an accessible foreground token, test every channel palette, and add forced-colors/high-contrast styles that retain control boundaries.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Progressively enhance same-origin page changes with cross-document View Transitions and a no-motion fallback.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No scroll-linked animation or scrollytelling surface exists; the long page is a static listing.",
      "reason": "No scroll-linked animation or scrollytelling surface exists; the long page is a static listing.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No swipe, drag, carousel, or gesture-driven control exists on the representative templates.",
      "reason": "No swipe, drag, carousel, or gesture-driven control exists on the representative templates.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Keep a compact channel/date navigator available while scrolling and expose position/progress without obscuring content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No authored tooltip, popover, or anchored menu was present; the third-party consent surface is modal.",
      "reason": "No authored tooltip, popover, or anchored menu was present; the third-party consent surface is modal.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Keep a compact channel/date navigator available while scrolling and expose position/progress without obscuring content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Minimise pre-consent collection and present a compact, accessible consent choice with equally direct accept/reject actions; avoid blocking the schedule where consent is not required.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "The only modal surface is exposed as role=dialog by the consent provider; authored programme disclosures use real links/buttons rather than clickable divs.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Collapse unfilled ad slots, reserve only bounded ad space, and simplify repeated icon/navigation chrome around the schedule.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "Raw-CDP layout at 360×800 measured scrollWidth=clientWidth=360 and horizontalOverflowPx=0 on home and channel templates; viewport scaling remains allowed to 10×.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Add container-type to reusable listing regions and use size-aware container queries for card composition, with current media rules as fallback.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Give controls at least a 24×24 CSS px target (prefer 44×44 for touch), add spacing around inline links, and define a high-contrast :focus-visible ring.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "The first content state names today’s TV schedule, date, channels, times, programme titles, and direct links to full channel programming.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "The representative journey from today’s listing to Rai 1 details and to tomorrow/first-run listings completed through real href links without an account wall.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "Current date, channel colours/names, LIVE markers, and programme times make the normal loaded state explicit; navigation back to dated listings remains available.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Reserve all late content, prioritise the actual LCP element, and delay consent/ad work that competes with primary schedule rendering.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Reserve all late content, prioritise the actual LCP element, and delay consent/ad work that competes with primary schedule rendering.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "The raw-CDP trace recorded zero long tasks and 0 ms total blocking time over 9.15 s; Lighthouse corroborated low 90 ms TBT.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Reserve all late content, prioritise the actual LCP element, and delay consent/ad work that competes with primary schedule rendering. Load analytics/advertising only after the relevant consent and need, remove duplicate integrations, and conditionally load below-fold media.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Load analytics/advertising only after the relevant consent and need, remove duplicate integrations, and conditionally load below-fold media.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Add concise programme-title alt text where artwork is meaningful, empty alt for decoration, and descriptive title attributes for every embedded video.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Darken affected channel colors or use an accessible foreground token, test every channel palette, and add forced-colors/high-contrast styles that retain control boundaries.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Add semantic landmarks and one page H1, keep consent headings within a coherent dialog structure, and make focus order/rings match reading order.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Increase body/interactive text size and line-height, group times and titles semantically, and use text wrapping and spacing tokens for scanability.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Give controls at least a 24×24 CSS px target (prefer 44×44 for touch), add spacing around inline links, and define a high-contrast :focus-visible ring. Add concise programme-title alt text where artwork is meaningful, empty alt for decoration, and descriptive title attributes for every embedded video.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F08",
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Change every same-site asset URL to HTTPS or relative URLs, then resolve the reported inspector and BFCache blockers.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Set intrinsic width/height or aspect-ratio, use responsive srcset/sizes, lazy-load below-fold artwork, and encode suitable assets as WebP/AVIF.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Change every same-site asset URL to HTTPS or relative URLs, then resolve the reported inspector and BFCache blockers.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "Home and Rai 1 pages have distinct descriptive titles and non-empty Italian meta descriptions in both raw and rendered HTML.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "The probe found real hrefs on essentially all links, a scalable viewport meta, index,follow, and descriptive channel/programme labels.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Publish robots.txt and an XML sitemap, add self-referencing canonicals, and keep those signals consistent across today/tomorrow/channel templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Add accurate schema.org BroadcastEvent/TVSeries or ItemList data where appropriate, plus Open Graph title, description, image, and canonical URL.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Set HSTS, a restrictive CSP including frame-ancestors, nosniff, Referrer-Policy and Permissions-Policy; use HTTPS-only Secure cookies and the least-permissive SameSite value.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Default to no optional tracking, reduce vendors and retention, gate all analytics/ads until consent, and provide a one-click reject choice equal to accept.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No authentication flow or browser permission request exists on this public read-only schedule.",
      "reason": "No authentication flow or browser permission request exists on this public read-only schedule.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Set HSTS, a restrictive CSP including frame-ancestors, nosniff, Referrer-Policy and Permissions-Policy; use HTTPS-only Secure cookies and the least-permissive SameSite value.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "Discoverability found 81% raw-content coverage on home and 70% on Rai 1, with titles/descriptions and core programme text available without JavaScript; neither page is a JS shell.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "Four MPA templates loaded their core content and navigation under fresh sessions; the modal consent surface remained bounded to the viewport and page links stayed usable after reload.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "This is a public MPA content listing rather than an app; installability/offline operation is not essential to its core task.",
      "reason": "This is a public MPA content listing rather than an app; installability/offline operation is not essential to its core task.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Serve an intentional branded 404/error page with a route back to today’s schedule; distinguish retryable network failures from missing pages.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Format dates/times with Intl.DateTimeFormat for the declared locale and replace layout-critical left/right properties with inline/block logical equivalents.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Format dates/times with Intl.DateTimeFormat for the declared locale and replace layout-critical left/right properties with inline/block logical equivalents.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "The schedules describe one local Italian broadcast context and expose no cross-zone event coordination flow.",
      "reason": "The schedules describe one local Italian broadcast context and expose no cross-zone event coordination flow.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Default to no optional tracking, reduce vendors and retention, gate all analytics/ads until consent, and provide a one-click reject choice equal to accept.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No authored form or editable input exists in the representative site templates.",
      "reason": "No authored form or editable input exists in the representative site templates.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No authored form or editable input exists in the representative site templates.",
      "reason": "No authored form or editable input exists in the representative site templates.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No checkout, subscription, authentication, or account-management flow exists.",
      "reason": "No checkout, subscription, authentication, or account-management flow exists.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Set intrinsic width/height or aspect-ratio, use responsive srcset/sizes, lazy-load below-fold artwork, and encode suitable assets as WebP/AVIF.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "The trace recorded no long main-thread tasks and the network capture settled at 40 requests; no continuous autoplay animation or background processing was observed.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual and objective evidence gathered for this registered check.",
      "evidence": "Set a route-level byte budget, defer below-fold embeds/images, self-host or trim fonts, and remove or consent-gate low-value third parties.",
      "pathIds": [
        "home"
      ],
      "artifacts": [],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No declared agent-facing intent or transactional capability exists; this public schedule is already largely server-rendered for machine reading.",
      "reason": "No declared agent-facing intent or transactional capability exists; this public schedule is already largely server-rendered for machine reading.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-template DOM/interaction review.",
      "evidence": "No user task on this simple schedule requires on-device inference.",
      "reason": "No user task on this simple schedule requires on-device inference.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "After ten full-page scroll down/up cycles, heap self size was 15.87 MB versus 15.80 MB baseline (+0.43%) and Array count decreased by two, with no unbounded retained-growth signal.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "Heap snapshots measured about 15.8 MB self size and 285k snapshot nodes, proportionate to a page whose large population is mostly the third-party consent UI.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Representative template review using screenshots, DOM/evaluate probes, and relevant objective artifacts.",
      "evidence": "Neither baseline nor post-scroll heap summaries contained a Detached* constructor; post-scroll constructor populations were essentially unchanged.",
      "pathIds": [
        "home",
        "channel-detail",
        "first-run-listing",
        "tomorrow-listing"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F02",
        "F13",
        "F14",
        "F08"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F16"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F16",
        "F22"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All registered checks were judged not applicable for this public, read-only Italian TV-listing site with no declared agent-facing capability."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and today listing: primary discovery task, consent, responsive layout, performance, privacy and accessibility.",
      "url": "https://www.staseraintv.com/",
      "conditions": [
        "desktop",
        "360x800 mobile",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "channel-detail",
      "description": "Rai 1 channel detail: representative channel schedule/detail template and route continuity.",
      "url": "https://www.staseraintv.com/programmi_stasera_rai1.html",
      "conditions": [
        "desktop",
        "360x800 mobile",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "first-run-listing",
      "description": "First-run prime-time page: representative filtered/listing archetype.",
      "url": "https://www.staseraintv.com/programmi_primavisione_primaserata_stasera.html",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "tomorrow-listing",
      "description": "Tomorrow page: representative date-navigation journey and repeated listing template.",
      "url": "https://www.staseraintv.com/domani_index.html",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "summary": "The fixed black palette does not follow the user’s light/dark preference.",
      "evidence": "The light/default and prefers-color-scheme: dark captures retain the same black page; the probe reports colorScheme \"normal\" and no prefers-color-scheme, color-scheme, or light-dark() CSS.",
      "suggestedFix": "Declare color-scheme and map surfaces/text through preference-aware tokens, while preserving the existing dark presentation for users who prefer it.",
      "effort": "small",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dark-reduced.png"
      ],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F02",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "Programme cards and controls include text below WCAG contrast minimums.",
      "summary": "Lighthouse accessibility found white text on Rai 3 green at 3.77:1, white text on Italia 1 blue at 4.47:1, and the Pagina 2 button at 3.65:1. The stylesheet also has no forced-colors or prefers-contrast adaptation.",
      "evidence": "Darken affected channel colors or use an accessible foreground token, test every channel palette, and add forced-colors/high-contrast styles that retain control boundaries.",
      "suggestedFix": "small",
      "effort": [
        "evidence/lighthouse-details.json",
        "evidence/home-mobile.png"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "Navigation between the long listing and channel/detail pages swaps abruptly.",
      "summary": "Static MPA links were exercised between four templates; the probe finds no authored view-transition CSS and no cross-document @view-transition rule.",
      "evidence": "Progressively enhance same-origin page changes with cross-document View Transitions and a no-motion fallback.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-probe.json",
        "evidence/channel-rai1.png"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F04",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-progress-indicator",
      "guidanceCategory": "The 7,445 px homepage provides no persistent position or progress cue.",
      "summary": "The mobile full-page capture shows a very long sequence of channel cards; CSS inspection found no scroll-state query, sticky shrinking header, or progress indicator, and navigation controls disappear far above the current card.",
      "evidence": "Keep a compact channel/date navigator available while scrolling and expose position/progress without obscuring content.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F05",
      "severity": "high",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "A consent wall obscures the primary TV listings on every fresh page load.",
      "summary": "Desktop, mobile, and channel screenshots show a modal covering the first viewport before interaction, with the page dimmed behind it.",
      "evidence": "Minimise pre-consent collection and present a compact, accessible consent choice with equally direct accept/reject actions; avoid blocking the schedule where consent is not required.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-desktop.png",
        "evidence/channel-rai1.png",
        "evidence/home-mobile.png"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F06",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "reduce-style-repetition",
      "guidanceCategory": "Large empty ad slots and dense icon chrome push schedules far below the fold.",
      "summary": "The full-page mobile capture contains large blank regions between programme groups and repeated icon grids at both ends; useful schedule content occupies a minority of several viewport-height segments.",
      "evidence": "Collapse unfilled ad slots, reserve only bounded ad space, and simplify repeated icon/navigation chrome around the schedule.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-mobile.png",
        "evidence/home-dark-reduced.png"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F07",
      "severity": "low",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "Components only adapt through viewport media queries, not their available container.",
      "summary": "The site stylesheet has three @media blocks but zero @container rules; reused channel cards are laid out by global viewport assumptions.",
      "evidence": "Add container-type to reusable listing regions and use size-aware container queries for card composition, with current media rules as fallback.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F08",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "Many primary links and buttons are too small and keyboard focus is not visibly styled.",
      "summary": "The probe measured [continua] links at 56×15 px and programme buttons at 223×21 px; focusing the first navigation link produced outline-style none.",
      "evidence": "Give controls at least a 24×24 CSS px target (prefer 44×44 for touch), add spacing around inline links, and define a high-contrast :focus-visible ring.",
      "suggestedFix": "small",
      "effort": [
        "evidence/home-probe.json",
        "evidence/home-mobile.png"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F09",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-resilient",
      "principleCheckId": "network-and-http-failure-states",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "Missing site resources and routes fall back to a bare Apache 404 with no recovery.",
      "summary": "Both /robots.txt and /sitemap.xml returned the default Apache 404 document, which provides no site navigation, search, or route back to the schedule.",
      "evidence": "Serve an intentional branded 404/error page with a route back to today’s schedule; distinguish retryable network failures from missing pages.",
      "suggestedFix": "small",
      "effort": [
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F10",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "Cold-load performance and visual stability miss the Core Web Vitals bar.",
      "summary": "Lighthouse measured LCP 13.9 s and CLS 0.222; raw-CDP mobile layout measured CLS 0.109 on home and 0.243 on the Rai 1 detail. The trace was fast in a separate warm-like run (LCP 1.15 s), so the slow-path variance itself needs attention.",
      "evidence": "Reserve all late content, prioritise the actual LCP element, and delay consent/ad work that competes with primary schedule rendering.",
      "suggestedFix": "large",
      "effort": [
        "evidence/lighthouse-summary.json",
        "evidence/home-mobile-layout.json",
        "evidence/channel-mobile-layout.json",
        "evidence/home-trace-summary.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F11",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "Third-party JavaScript dominates transfer and much of it is unused on load.",
      "summary": "HAR recorded 580,101 script bytes out of 774,849 total transferred bytes; Lighthouse estimated 266 KiB of unused JavaScript and 14 KiB of unused CSS.",
      "evidence": "Load analytics/advertising only after the relevant consent and need, remove duplicate integrations, and conditionally load below-fold media.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F12",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "Programme artwork and embedded videos lack accessible alternatives.",
      "summary": "The image primitive found 8 of 11 images without alt text; the DOM probe found untitled YouTube iframes, and Lighthouse failed the frame-title audit.",
      "evidence": "Add concise programme-title alt text where artwork is meaningful, empty alt for decoration, and descriptive title attributes for every embedded video.",
      "suggestedFix": "small",
      "effort": [
        "evidence/home-images.json",
        "evidence/home-probe.json",
        "evidence/lighthouse-details.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F13",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "The document lacks useful landmarks and the consent UI overwhelms the heading outline.",
      "summary": "The probe found no header/nav/main/aside/footer landmarks. On home, consent markup introduced multiple H1s plus hundreds of vendor H2s, while focused navigation had outline-style none.",
      "evidence": "Add semantic landmarks and one page H1, keep consent headings within a coherent dialog structure, and make focus order/rings match reading order.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-probe.json",
        "evidence/channel-probe.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F14",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "improve-text-layout-and-legibility",
      "guidanceCategory": "Schedule text is dense and frequently rendered at small sizes.",
      "summary": "The mobile screenshot shows long 14 px schedule lines and 15 px-high continuation links packed into saturated cards, with little line spacing or grouping.",
      "evidence": "Increase body/interactive text size and line-height, group times and titles semantically, and use text wrapping and spacing tokens for scanability.",
      "suggestedFix": "small",
      "effort": [
        "evidence/home-mobile.png",
        "evidence/home-probe.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F15",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "The page logs mixed-content errors and triggers browser hygiene failures.",
      "summary": "Lighthouse captured repeated blocked requests for http://www.staseraintv.com/favicon.ico, reported an inspector issue, and found a BFCache failure.",
      "evidence": "Change every same-site asset URL to HTTPS or relative URLs, then resolve the reported inspector and BFCache blockers.",
      "suggestedFix": "small",
      "effort": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-details.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F16",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "Every audited image lacks explicit dimensions and responsive delivery.",
      "summary": "The image primitive found 11/11 images without width/height, 9/11 without srcset, 8 below-fold images without lazy loading, and all 11 in legacy PNG/JPEG formats.",
      "evidence": "Set intrinsic width/height or aspect-ratio, use responsive srcset/sizes, lazy-load below-fold artwork, and encode suitable assets as WebP/AVIF.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-images.json",
        "evidence/home-mobile-layout.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F17",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "Canonical discovery infrastructure is incomplete.",
      "summary": "The probe found no canonical URL, while /robots.txt and /sitemap.xml both returned HTTP 404. Public pages otherwise returned 200 and explicitly allowed indexing.",
      "evidence": "Publish robots.txt and an XML sitemap, add self-referencing canonicals, and keep those signals consistent across today/tomorrow/channel templates.",
      "suggestedFix": "small",
      "effort": [
        "evidence/home-probe.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F18",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "TV listings have no structured or social-preview metadata.",
      "summary": "Across home and Rai 1 templates the probe found zero JSON-LD blocks and zero Open Graph tags despite visible programme/channel entities.",
      "evidence": "Add accurate schema.org BroadcastEvent/TVSeries or ItemList data where appropriate, plus Open Graph title, description, image, and canonical URL.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-probe.json",
        "evidence/channel-probe.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F19",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "Transport is HTTPS, but browser-enforced security headers and cookie protections are absent.",
      "summary": "The headers primitive found no CSP, HSTS, nosniff, clickjacking, Referrer-Policy, or Permissions-Policy. All five observed cookies lacked Secure and used SameSite=None; Lighthouse also found an HTTP favicon request.",
      "evidence": "Set HSTS, a restrictive CSP including frame-ancestors, nosniff, Referrer-Policy and Permissions-Policy; use HTTPS-only Secure cookies and the least-permissive SameSite value.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/lighthouse-summary.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F20",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "Tracking and consent scope are disproportionate to a simple TV schedule.",
      "summary": "Before any visible consent choice was made, the tracker primitive saw 8 third-party origins and four known tracker hosts; the consent dialog states that 210 partners may process device/personal data, while long-lived analytics/consent cookies last 390–400 days.",
      "evidence": "Default to no optional tracking, reduce vendors and retention, gate all analytics/ads until consent, and provide a one-click reject choice equal to accept.",
      "suggestedFix": "large",
      "effort": [
        "evidence/trackers.json",
        "evidence/cookies.json",
        "evidence/home-desktop.png",
        "evidence/home-summary.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F21",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-internationalised",
      "principleCheckId": "locale-aware-data",
      "guidanceId": "support-global-calendar-systems",
      "guidanceCategory": "Date/time output is hard-coded for one locale and layout CSS relies on physical directions.",
      "summary": "The probe found Italian lang but rendered fixed numeric dates such as 19/07/2026; stylesheet inspection found 29 left/right physical-property uses and no evidence of locale-aware formatting or logical properties.",
      "evidence": "Format dates/times with Intl.DateTimeFormat for the declared locale and replace layout-critical left/right properties with inline/block logical equivalents.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-probe.json",
        "evidence/channel-probe.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    },
    {
      "id": "F22",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "Third-party scripts, fonts, trackers, and eager media outweigh the site’s simple content task.",
      "summary": "HAR transferred 775 KB across 40 requests, including 580 KB of script; 8 third-party origins loaded and 8 below-fold images were eager, despite the core experience being text schedules and small artwork.",
      "evidence": "Set a route-level byte budget, defer below-fold embeds/images, self-host or trim fonts, and remove or consent-gate low-value third parties.",
      "suggestedFix": "medium",
      "effort": [
        "evidence/home-summary.json",
        "evidence/trackers.json",
        "evidence/home-images.json"
      ],
      "artifacts": [],
      "pathId": "home",
      "url": "https://www.staseraintv.com/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Remove the blocking, over-broad pre-consent tracking experience",
      "priority": 1,
      "findingIds": [
        "F05",
        "F20",
        "F22"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Fix LCP/CLS and reserve all media/ad space",
      "priority": 2,
      "findingIds": [
        "F10",
        "F16"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Restore semantic structure, alternatives, focus, targets, and contrast",
      "priority": 3,
      "findingIds": [
        "F02",
        "F08",
        "F12",
        "F13",
        "F14"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Deploy transport headers and secure cookie policy",
      "priority": 4,
      "findingIds": [
        "F19",
        "F15"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Trim and defer third-party code and media",
      "priority": 5,
      "findingIds": [
        "F11",
        "F22"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Publish canonical, robots, sitemap, and entity metadata",
      "priority": 6,
      "findingIds": [
        "F17",
        "F18"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Add preference-aware theming and high-contrast support",
      "priority": 7,
      "findingIds": [
        "F01",
        "F02"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Simplify chrome and add long-page navigation cues",
      "priority": 8,
      "findingIds": [
        "F04",
        "F06"
      ],
      "guidanceId": "scroll-progress-indicator",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Add intentional error recovery and resilient 404 handling",
      "priority": 9,
      "findingIds": [
        "F09"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Modernise container responsiveness, transitions, and locale formatting",
      "priority": 10,
      "findingIds": [
        "F03",
        "F07",
        "F21"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 4,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-19T16-14-54-009Z"
}
