{
  "url": "https://policies.google.com",
  "auditedAt": "2026-07-18T02:51:28.804Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across 58 checks and six representative paths.",
  "page": {
    "appType": "mpa",
    "framework": "Google server-rendered IdentityPoliciesUi",
    "notes": "Public multilingual legal-information MPA. Covered the hub, two legal documents, a technologies index, FAQ, localization, and a failure route. Product account settings, signed-in experiences, downloadable PDFs, archived terms, and external safety/account destinations were not covered because they are separate hosts or authenticated/product flows."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "images",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "heap-summary",
    "lighthouse",
    "curl HTTP probes",
    "Modern Web Guidance search/retrieve"
  ],
  "guidanceConsulted": [
    "accessibility",
    "accessible-error-announcement",
    "adapt-scrollbar-to-contrast-preferences",
    "agentic-forms",
    "agentic-javascript-tools",
    "anchor-positioning-tab-underline",
    "animated-select-picker",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "apply-webgl-shaders",
    "autofill-address-form",
    "autofill-highlight-inputs",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "batch-analytics-events",
    "brand-consistent-forms",
    "branded-select-styling",
    "break-up-long-tasks",
    "calculate-event-differentials",
    "calculate-total-foreground-time",
    "calculate-with-intrinsic-sizes",
    "capture-location-agnostic-data",
    "carousel-slide-effects",
    "carousel-snap-highlights",
    "child-state-based-styling",
    "complex-shapes",
    "component-specific-light-dark-theme",
    "conditional-async-dependencies",
    "consistent-cross-document-transitions",
    "content-based-styling",
    "coordinate-global-events",
    "cross-document-transitions",
    "css",
    "css-layout",
    "customize-scrollbar-color-and-thickness",
    "custom-select-picker-layouts",
    "dark-mode",
    "declarative-dialog-popover-control",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "design-token-reactivity",
    "detect-initial-visibility-state",
    "directional-navigation-transitions",
    "dynamic-sibling-animations",
    "dynamic-sibling-styling",
    "efficient-background-processing",
    "export-html-media-from-canvas",
    "expose-canvas-content-to-browser-features",
    "faster-spa-view-transitions",
    "flicker-free-client-side-ab-testing",
    "fluid-scaling",
    "format-human-readable-durations",
    "form-fields-automatically-fit-contents",
    "forms",
    "full-session-analytics",
    "group-element-transitions",
    "highlight-text-ranges",
    "html",
    "identify-heavy-scripts",
    "identify-inp-causes",
    "improve-next-page-load-performance",
    "improve-text-layout-and-legibility",
    "individual-transform-properties",
    "interactions-in-complex-layouts",
    "interactive-content-in-3d-scenes",
    "interactive-content-reveal",
    "interest-triggered-action-previews",
    "interest-triggered-tooltips",
    "language-detection",
    "language-model",
    "light-dismiss-a-dialog",
    "manage-recurring-intervals",
    "model-partial-time-concepts",
    "move-dom-element-without-losing-state",
    "navigation-drawer",
    "optimize-image-priority",
    "optimize-preload-priority",
    "optimize-script-priority",
    "overflow-clipping-control",
    "parallax-scroll-effects",
    "passkey-authentication",
    "passkey-conditional-create",
    "passkey-management",
    "passkey-reauthentication",
    "passkey-registration",
    "passkeys",
    "performance",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "persistent-top-layer-ui",
    "physics-based-easing",
    "platform-controls-dismiss-dialog",
    "position-aware-tooltips",
    "precise-text-alignment",
    "prevent-text-wrapping",
    "privacy",
    "pull-to-reveal",
    "reduce-style-repetition",
    "required-field-feedback",
    "resilient-context-menus-and-nested-dropdowns",
    "resolution-optimized-pseudo-elements",
    "rich-media-picker",
    "same-document-transitions",
    "schedule-tasks-by-priority",
    "scrollability-affordance-hints",
    "scroll-entry-exit-effects",
    "scroll-position-aware-elements",
    "scroll-progress-indicator",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "scrollytelling",
    "search-hidden-content",
    "security",
    "select-menu-interaction",
    "sequence-distributed-events",
    "shaped-cutouts",
    "shrinking-header-on-scroll",
    "size-aware-styling",
    "soft-edge-content-fade",
    "stabilize-reactive-state",
    "stack-drill-down",
    "style-parent-with-has",
    "summarizer",
    "support-global-calendar-systems",
    "swipe-to-remove",
    "translator",
    "validate-input-after-interaction",
    "visually-stable-font-fallbacks",
    "visually-stable-mixed-fonts",
    "visually-texture-content",
    "webmcp"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/entry-light.png",
      "caption": "Overview in light color scheme",
      "condition": "prefers-color-scheme: light",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/entry-dark.png",
      "caption": "Overview in dark color scheme",
      "condition": "prefers-color-scheme: dark",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/entry-high-contrast.png",
      "caption": "Overview under increased contrast preference",
      "condition": "prefers-contrast: more",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/entry-mobile.png",
      "caption": "Overview at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/privacy-mobile.png",
      "caption": "Privacy Policy at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F02",
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/terms-mobile.png",
      "caption": "Terms at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/technologies-mobile.png",
      "caption": "Technologies at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/faq-mobile.png",
      "caption": "FAQ at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/terms-ar-mobile.png",
      "caption": "Arabic RTL Terms at 360x800",
      "condition": "lang=ar; viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "404 failure state at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/entry-mobile-layout.json",
      "caption": "Overview mobile layout metrics",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/privacy-mobile-layout.json",
      "caption": "Privacy mobile layout metrics",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/terms-mobile-layout.json",
      "caption": "Terms mobile layout metrics",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "trace",
      "path": "evidence/entry-trace.json",
      "caption": "DevTools load trace",
      "condition": "desktop load",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/entry-trace-summary.json",
      "caption": "Compact load trace timings",
      "condition": "desktop load",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "har",
      "path": "evidence/entry.har",
      "caption": "Network archive for overview load",
      "condition": "desktop load",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/entry-summary.json",
      "caption": "Compact HAR signals",
      "condition": "desktop load",
      "findingIds": [
        "F06",
        "F07",
        "F12"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Lighthouse report",
      "condition": "mobile emulation",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Compact Lighthouse summary",
      "condition": "mobile emulation",
      "findingIds": [
        "F05",
        "F09",
        "F10"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/entry-dom.json",
      "caption": "Rendered overview DOM evidence",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/entry-discoverability.json",
      "caption": "Raw HTML vs rendered overview",
      "condition": "JavaScript disabled crawler",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/privacy-discoverability.json",
      "caption": "Raw HTML vs rendered Privacy Policy",
      "condition": "JavaScript disabled crawler",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/page-probe.json",
      "caption": "Metadata, CSS feature, focus, and document probe",
      "condition": "default",
      "findingIds": [
        "F01",
        "F03",
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/faq-controls.json",
      "caption": "FAQ control semantics probe",
      "condition": "FAQ",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "Animation probe under reduced motion",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "Baseline heap summary",
      "condition": "overview steady state",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-faq-post.json",
      "caption": "FAQ heap summary after attempted representative control exercise",
      "condition": "FAQ steady state",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Security response headers",
      "condition": "default",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie posture",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party and tracker origins",
      "condition": "default",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client secret scan",
      "condition": "default",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/entry-images.json",
      "caption": "Image delivery and semantics probe",
      "condition": "default",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/terms-ar-probe.json",
      "caption": "Arabic language/direction/content probe",
      "condition": "lang=ar",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/404-status.txt",
      "caption": "HTTP status for invalid route",
      "condition": "invalid route",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/guidance-search.json",
      "caption": "Initial Modern Web Guidance search",
      "condition": "catalog 0.0.172",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "Retrieved mapped Modern Web Guidance",
      "condition": "catalog 0.0.172",
      "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": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Light and dark screenshots show complete surface and control retinting.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-light.png",
        "evidence/entry-dark.png"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Under prefers-reduced-motion: reduce, the active animation count was 0.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The high-contrast capture preserves legible text, controls, links, and iconography; Lighthouse accessibility scored 1.00.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-high-contrast.png",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The page probe found no view-transition CSS on a multi-document navigation surface.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Scroll-linked motion (parallax, scrollytelling, entry/exit reveals) uses declarative CSS scroll-driven animations (off main thread) instead of scroll event listeners.",
      "reason": "No scroll-linked visual effect is present, so there is no scroll animation implementation to assess."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Gesture-driven interactions and entry/exit motion feel native (declarative overscroll/scroll-snap, physics-based easing, animating to intrinsic sizes, pull/swipe gestures) rather than fighting the platform with custom pointer handlers.",
      "reason": "The audited informational pages expose no gesture-driven interaction."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The privacy document measured 107,024 CSS px but the mobile chrome exposes no progress cue.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Tooltips, popovers and menus use CSS anchor positioning (with fallback positions) so they stay attached and reposition correctly rather than being manually positioned.",
      "reason": "No tooltip, popover, or floating menu was present on the representative paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Descriptive global links, prominent headings, and visible underlined policy actions establish clear navigation targets.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-light.png",
        "evidence/page-probe.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Load screenshots across five templates show content immediately with no interstitial or obscuring consent wall.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/privacy-mobile.png",
        "evidence/terms-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Overlays and rich controls use the right primitive: popover (with declarative light-dismiss) for transient UI, dialog for modal flows, details for disclosure, native-but-branded selects and pickers, rather than ad-hoc divs.",
      "reason": "No overlay, modal flow, picker, or disclosure control was present on the representative paths."
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Screenshots show a compact single-row header and content-first policy layouts without decorative application framing.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-light.png",
        "evidence/privacy-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "At 360px the entry, privacy, and terms layouts reported 0px horizontal overflow and CLS 0.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-mobile-layout.json",
        "evidence/privacy-mobile-layout.json",
        "evidence/terms-mobile-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Mobile screenshots visibly truncate policy titles and the CSS probe found no @container usage.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse accessibility and target-size audits passed; controls retain native semantic button/link behavior.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The first viewport names Privacy Policy and Terms of Service and gives descriptive “Read…” links.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-light.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Navigation from the overview to Privacy, Terms, Technologies, and FAQ resolves to complete, readable documents without an account wall.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json",
        "evidence/privacy-mobile.png",
        "evidence/terms-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The 404 response has no link or normal navigation for recovery.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse mobile LCP was 3,906 ms, above the 2.5 s good threshold.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "All measured 360px templates reported CLS 0 with no observed layout-shift entries.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-mobile-layout.json",
        "evidence/privacy-mobile-layout.json",
        "evidence/terms-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The trace found 0 long tasks and 0 ms total blocking time; Lighthouse TBT was 7 ms.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "HAR found a high-priority parser script and 108,729 font bytes in the critical load.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse estimated 248,941 unused JS bytes and 36,629 unused CSS bytes.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse accessibility scored 1.00; image-alt and link-name audits passed.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse accessibility scored 1.00 and light, dark, and contrast captures remain legible.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/entry-light.png",
        "evidence/entry-dark.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse heading-order, names, and accessibility audits passed; the DOM contains a skip-to-main-content control.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/faq-controls.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Mobile captures show comfortable line lengths, spacing, and unclipped article body text in English and Arabic.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/privacy-mobile.png",
        "evidence/terms-ar-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Viewport allows scaling to 5, layouts reflow at 360px with no overflow, and Lighthouse target-size passed.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/entry-mobile-layout.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse best-practices scored 1.00 and did not report console-error or runtime-exception failures.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "DOM reports HTML doctype, UTF-8, viewport meta; Lighthouse best-practices scored 1.00 and image aspect audits passed.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse found Cache-Control no-store prevents BFCache.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "DOM and Lighthouse found no meta description.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "All 34 observed anchors had hrefs, none used generic link text, viewport meta is present, and raw HTML contains full content.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/entry-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Lighthouse rejected the locale-query canonical; robots.txt and sitemap.xml returned 404.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Probe found zero Open Graph tags and zero JSON-LD blocks.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "HTTPS, CSP, nosniff, secure cookies and SameSite attributes were observed; no mixed content or sensitive client secret was found.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/secrets.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Tracker capture found seven third-party origins and active GTM/Analytics.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Permission prompts are requested in context (not on load), and authentication uses modern, phishing-resistant methods (passkeys / WebAuthn) where relevant rather than passwords alone.",
      "reason": "The public policy-reading paths request no permissions and contain no authentication flow; sign-in is an outbound account link."
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Headers lacked HSTS, Referrer-Policy, and framing restrictions.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Discoverability captures found 100% rendered-content coverage in raw HTML on overview and Privacy Policy, with no JS shell.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-discoverability.json",
        "evidence/privacy-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Five templates loaded without clipped content or runtime failures at 360px; no overlay or async control was present to destabilize.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/privacy-mobile.png",
        "evidence/terms-mobile.png",
        "evidence/technologies-mobile.png",
        "evidence/faq-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Where the site is an app, it is installable (web app manifest) and offers an offline fallback and works on flaky networks. (Contextual: a brochure or intrinsically-online site may reasonably not need this.)",
      "reason": "This public legal-content MPA is not an app-like workflow; offline installability is contextual and not required."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The invalid URL returns a truthful HTTP 404 and explicit “requested URL was not found” state.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/404-mobile.png",
        "evidence/404-status.txt"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "English emits lang=en-US/dir=ltr and Arabic emits lang=ar/dir=rtl with correctly mirrored navigation and readable RTL layout.",
      "pathIds": [
        "entry",
        "terms"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/terms-ar-probe.json",
        "evidence/terms-ar-mobile.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The Arabic Terms route translates and formats “17 March 2025” in Arabic reading order instead of retaining English copy.",
      "pathIds": [
        "entry",
        "terms"
      ],
      "artifacts": [
        "evidence/terms-ar-probe.json",
        "evidence/terms-ar-mobile.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Time handling survives time zones and DST: events coordinate across zones, partial time concepts are modelled, and stored times are unambiguous.",
      "reason": "The representative policy content contains effective calendar dates but no user-specific times, events, or time-zone calculations."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "No consent wall, upsell, disguised ad, forced continuity, or deceptive default appeared on any representative policy path.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/privacy-mobile.png",
        "evidence/terms-mobile.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Forms prevent and recover from mistakes humanely: validate after interaction (not prematurely), give clear required-field feedback, announce errors accessibly, and signal invalid fields visibly rather than blaming the user.",
      "reason": "No user-input form exists on the audited policy pages."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Input is assisted, not obstructed: correct autocomplete tokens so address, payment, sign-in and sign-up fields autofill, and inputs are highlighted/sized to help the user rather than trip them up.",
      "reason": "No user-input fields exist on the audited policy pages."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Checkout, subscription, consent, authentication and account-management flows are clear, reversible, and proportionate: pricing and commitments are visible, cancellation is findable, sensitive actions re-authenticate when appropriate, and users are not tricked into continuity.",
      "reason": "No checkout, subscription, consent, or account-management flow exists within the audited host paths."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Images probe found six images without intrinsic dimensions and two below-fold images not lazy-loaded.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Measured unused JS/CSS and eager analytics represent avoidable transfer/work.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "Seven third-party origins and a 159,899-byte tag-manager script are disproportionate for static policy content.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Where it makes sense, the site exposes structured, safe capabilities to agents via WebMCP tools, agentic forms, and agentic JavaScript tools rather than leaving agents to scrape and guess.",
      "reason": "These pages publish static legal information and expose no transactional capability that would benefit from a WebMCP tool."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for On-device inference (built-in language model, summariser) is used appropriately where it improves the experience, rather than shipping every task to a server.",
      "reason": "Summarization is optional for this authoritative legal corpus and absence of built-in inference is not a failure."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Active review of the representative paths found the stated outcome satisfied for Repeating a representative interaction (open/close a modal, navigate a route and back, infinite-scroll a list) about 10 times does not grow retained heap without bound; what is allocated during the interaction is released when it ends.",
      "reason": "The FAQ probe found no expandable controls and the site is a document-oriented MPA, so there is no representative repeated in-page interaction to exercise."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The baseline heap was 252,506 nodes and 11,749,279 self-size bytes, proportionate for this content MPA.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/heap-baseline.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Cross-path visual, DOM, Lighthouse, and objective primitive evidence as applicable",
      "evidence": "The heap constructor summary contained no Detached*, EventListener, or Timeout constructor among reported size leaders.",
      "pathIds": [
        "entry"
      ],
      "artifacts": [
        "evidence/heap-baseline.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F14",
        "F07",
        "F12"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "findingIds": [],
      "reason": "All checks were judged contextual and inapplicable to this informational site."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    }
  ],
  "paths": [
    {
      "id": "entry",
      "description": "Overview/landing template and primary navigation; selected as the entry page and policy hub.",
      "url": "https://policies.google.com/",
      "conditions": [
        "desktop light",
        "desktop dark",
        "prefers-contrast: more",
        "prefers-reduced-motion: reduce",
        "mobile 360x800",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "privacy",
      "description": "Privacy Policy, representing the longest legal-content template and its in-page reading journey.",
      "url": "https://policies.google.com/privacy",
      "conditions": [
        "mobile 360x800",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "terms",
      "description": "Terms of Service, representing dated/versioned legal content and localization.",
      "url": "https://policies.google.com/terms",
      "conditions": [
        "mobile 360x800",
        "Arabic RTL mobile"
      ],
      "result": "issues"
    },
    {
      "id": "technologies",
      "description": "Technologies listing, representing a section/index template.",
      "url": "https://policies.google.com/technologies",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "pass"
    },
    {
      "id": "faq",
      "description": "FAQ, representing dense question-and-answer content.",
      "url": "https://policies.google.com/faq",
      "conditions": [
        "mobile 360x800",
        "DOM controls probe"
      ],
      "result": "pass"
    },
    {
      "id": "not-found",
      "description": "Invalid route used to assess HTTP failure and recovery behavior.",
      "url": "https://policies.google.com/this-route-does-not-exist-audit",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "low",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "summary": "Page-to-page navigation uses abrupt document swaps rather than view transitions.",
      "evidence": "The page probe found no view-transition CSS, while navigation links lead between distinct policy documents.",
      "artifacts": [
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Add same-origin cross-document View Transitions for policy navigation, with reduced-motion behavior preserved.",
      "effort": "small"
    },
    {
      "id": "F02",
      "severity": "low",
      "confidence": "medium",
      "pathId": "privacy",
      "url": "https://policies.google.com/privacy",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-progress-indicator",
      "guidanceCategory": "user-experience",
      "summary": "Very long policy pages do not expose visible reading progress in the mobile chrome.",
      "evidence": "The privacy layout measured 107,024 CSS px of content, while the mobile screenshot shows only a static truncated header and no progress cue.",
      "artifacts": [
        "evidence/privacy-mobile-layout.json",
        "evidence/privacy-mobile.png"
      ],
      "suggestedFix": "Add a lightweight scroll progress indicator or section-aware header that respects reduced motion.",
      "effort": "small"
    },
    {
      "id": "F03",
      "severity": "medium",
      "confidence": "high",
      "pathId": "privacy",
      "url": "https://policies.google.com/privacy",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "css",
      "summary": "The mobile header clips or truncates the current-page title.",
      "evidence": "At 360px, the Privacy page header renders only “Policy”; Terms renders “Terms of Ser…”. The page probe found no container queries.",
      "artifacts": [
        "evidence/privacy-mobile.png",
        "evidence/terms-mobile.png",
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Make the header component adapt to its available inline size with a container query and preserve an unambiguous accessible/visible title.",
      "effort": "small"
    },
    {
      "id": "F04",
      "severity": "medium",
      "confidence": "high",
      "pathId": "not-found",
      "url": "https://policies.google.com/this-route-does-not-exist-audit",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "summary": "The 404 state explains the failure but offers no recovery action.",
      "evidence": "The invalid route correctly returned HTTP 404, but its screenshot contains no link back to Privacy & Terms, search, or primary navigation.",
      "artifacts": [
        "evidence/404-mobile.png",
        "evidence/404-status.txt"
      ],
      "suggestedFix": "Use a branded 404 template with a home/policy-hub link and the normal site navigation.",
      "effort": "small"
    },
    {
      "id": "F05",
      "severity": "medium",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Mobile lab LCP is above the good Core Web Vitals threshold.",
      "evidence": "Lighthouse measured LCP at 3,906 ms (performance 0.88); a separate desktop trace measured 1,109 ms, so the weakness is condition-dependent rather than universal.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/entry-trace-summary.json"
      ],
      "suggestedFix": "Profile the mobile LCP element and prioritize only its critical font/content dependencies while deferring nonessential scripts.",
      "effort": "medium"
    },
    {
      "id": "F06",
      "severity": "medium",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "performance",
      "summary": "A parser-inserted high-priority script and font chain compete with initial content.",
      "evidence": "The HAR identified a high-priority parser-inserted gstatic script as a render-blocking candidate; three fonts transferred 108,729 bytes and were among the slowest requests.",
      "artifacts": [
        "evidence/entry-summary.json",
        "evidence/network-key-signals.json"
      ],
      "suggestedFix": "Confirm whether the parser script can be deferred, subset/preload only the required font, and avoid loading noncritical font variants before content.",
      "effort": "medium"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "The policy hub ships substantial JavaScript that is unused during initial load.",
      "evidence": "Lighthouse estimated 248,941 bytes of unused JavaScript and 36,629 bytes of unused CSS. The HAR transferred 503,950 script bytes, including a 159,899-byte tag-manager script.",
      "artifacts": [
        "evidence/lighthouse-diagnostics.json",
        "evidence/entry-summary.json"
      ],
      "suggestedFix": "Split policy-page code by route and interaction, remove unused OneGoogle modules, and defer analytics/help bundles until needed or consented.",
      "effort": "large"
    },
    {
      "id": "F08",
      "severity": "low",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Cache-Control behavior prevents back/forward cache restoration.",
      "evidence": "Lighthouse’s BFCache audit failed because the main resource and a JavaScript request used Cache-Control: no-store.",
      "artifacts": [
        "evidence/lighthouse-diagnostics.json"
      ],
      "suggestedFix": "Avoid no-store on public, non-personalized policy documents where possible; isolate personalized state so normal history navigation can use BFCache.",
      "effort": "medium"
    },
    {
      "id": "F09",
      "severity": "medium",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "The policy hub has no meta description.",
      "evidence": "Both the DOM probe and Lighthouse report no meta[name=description].",
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Add a concise, page-specific meta description explaining the Privacy & Terms hub.",
      "effort": "trivial"
    },
    {
      "id": "F10",
      "severity": "low",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "The homepage canonical signal is not accepted as valid by Lighthouse.",
      "evidence": "The DOM exposes canonical https://policies.google.com/?hl=en-US, but Lighthouse’s canonical audit fails for the requested https://policies.google.com/ URL. robots.txt and sitemap.xml also returned 404.",
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/lighthouse-summary.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "suggestedFix": "Align canonical and locale URLs consistently, expose hreflang alternatives, and publish discoverable robots/sitemap endpoints for the multilingual policy corpus.",
      "effort": "medium"
    },
    {
      "id": "F11",
      "severity": "low",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "The public policy hub has no Open Graph or structured entity metadata.",
      "evidence": "The page probe found zero Open Graph tags and zero JSON-LD blocks.",
      "artifacts": [
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Add accurate Open Graph metadata and appropriate Organization/WebPage JSON-LD that matches the visible page.",
      "effort": "small"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "A privacy-policy hub loads analytics and seven third-party origins on first view.",
      "evidence": "The tracker capture found Google Tag Manager and Google Analytics among seven third-party origins; the HAR shows the tag-manager script alone transferred 159,899 bytes. No sensitive secret was found; detected Google API keys are public client configuration.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/entry-summary.json",
        "evidence/secrets.json"
      ],
      "suggestedFix": "Remove analytics from policy pages where possible, or gate and minimize it; load help/account integrations only after explicit use.",
      "effort": "medium"
    },
    {
      "id": "F13",
      "severity": "medium",
      "confidence": "medium",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Several defensive response policies are absent or permissive.",
      "evidence": "The headers capture found no HSTS header, no Referrer-Policy, and neither X-Frame-Options nor CSP frame-ancestors. CSP uses nonces and Trusted Types, but one policy still advertises unsafe-eval/unsafe-inline allowances.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Set explicit HSTS and Referrer-Policy, add frame-ancestors unless embedding is intentional, and remove obsolete unsafe allowances after validating the effective multi-policy CSP.",
      "effort": "medium"
    },
    {
      "id": "F14",
      "severity": "low",
      "confidence": "high",
      "pathId": "entry",
      "url": "https://policies.google.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "summary": "Small decorative images omit intrinsic dimensions and below-fold lazy loading.",
      "evidence": "The images primitive found all six images without width/height attributes and two below-fold images without loading=lazy; observed CLS remained 0 and no image was oversized.",
      "artifacts": [
        "evidence/entry-images.json",
        "evidence/entry-mobile-layout.json"
      ],
      "suggestedFix": "Declare intrinsic width/height and lazy-load below-fold decorative images; retain empty alt or presentational semantics for decoration.",
      "effort": "trivial"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Remove or defer unused policy-page JavaScript and analytics",
      "priority": 1,
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F12"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Restore complete discovery and sharing metadata",
      "priority": 2,
      "findingIds": [
        "F09",
        "F10",
        "F11"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Make mobile policy navigation adaptive and progress-aware",
      "priority": 3,
      "findingIds": [
        "F02",
        "F03"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Strengthen explicit browser security policies",
      "priority": 4,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Provide a branded, actionable 404 recovery path",
      "priority": 5,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Adopt view transitions for same-origin policy navigation",
      "priority": 6,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Declare intrinsic image sizes and lazy-load below-fold decoration",
      "priority": 7,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Make public documents eligible for BFCache",
      "priority": 8,
      "findingIds": [
        "F08"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 900,
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-18T02-51-28-804Z"
}
