{
  "url": "https://es.scribd.com",
  "auditedAt": "2026-07-23T10:23:22.763Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete model audit across five representative public templates/journeys. The requested Spanish host redirects most inspected paths to English; this is reported as a finding rather than an execution blocker.",
  "page": {
    "appType": "hybrid",
    "framework": "Next.js/React-like marketing and category surfaces plus Auth0-hosted signup",
    "notes": "Public document discovery/subscription service. Covered home, category, search, detail, and signup. Did not submit personal data, create an account, purchase, upload a document, or test authenticated reading/cancellation."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "images",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "lighthouse+axe-core",
    "heap-summary",
    "robots.txt",
    "modern-web-guidance"
  ],
  "guidanceConsulted": [
    "accessibility",
    "privacy",
    "security",
    "forms",
    "dark-mode",
    "performance",
    "fluid-scaling",
    "optimize-image-priority",
    "break-up-long-tasks",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "improve-text-layout-and-legibility",
    "validate-input-after-interaction",
    "required-field-feedback",
    "passkeys",
    "translator",
    "language-detection",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "html",
    "defer-rendering-heavy-content"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/category-desktop.png",
      "caption": "category desktop",
      "findingIds": [
        "F2"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/category-discoverability-crawler.png",
      "caption": "category discoverability crawler",
      "condition": "JavaScript disabled",
      "findingIds": [
        "F7",
        "F8"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/category-discoverability-rendered.png",
      "caption": "category discoverability rendered",
      "findingIds": [
        "F7",
        "F8"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/category-discoverability.json",
      "caption": "category discoverability",
      "findingIds": [
        "F7",
        "F8"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/category-dom.json",
      "caption": "category dom",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/category-recon.json",
      "caption": "category recon",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F9"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/document-desktop.png",
      "caption": "document desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/document-discoverability-crawler.png",
      "caption": "document discoverability crawler",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/document-discoverability-rendered.png",
      "caption": "document discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/document-discoverability.json",
      "caption": "document discoverability",
      "findingIds": [
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/guidance-consulted.md",
      "caption": "guidance consulted",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F9"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "heap baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.json",
      "caption": "heap post",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F3"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F2",
        "F3",
        "F11",
        "F14"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": [
        "F7"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F2",
        "F6",
        "F11"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F5",
        "F10",
        "F12"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F4"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": [
        "F4"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F5",
        "F12"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": [
        "F4",
        "F5",
        "F6",
        "F13"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe",
      "findingIds": [
        "F3",
        "F6",
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots.json",
      "caption": "robots",
      "findingIds": [
        "F15"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search-mobile.png",
      "caption": "search mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F2"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/signup-desktop.png",
      "caption": "signup desktop",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/signup-probe.json",
      "caption": "signup probe",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F10",
        "F12"
      ]
    }
  ],
  "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": "a screenshot or computed background under an emulated prefers-color-scheme: dark condition will reveal whether surfaces re-tint; the page CSS / a color-scheme declaration is corrob Evidence actually used: Compared light/dark captures and computed color-scheme; Lighthouse accessibility and visible controls corroborated contrast, while the page reported zero active animations.",
      "evidence": "The dark-emulated screenshot is pixel-identical in palette to the light capture, and the computed platform probe reports colorScheme=\"normal\".",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F3"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "a transition video, or an in-page probe of getAnimations()/computed animation under an emulated prefers-reduced-motion: reduce condition, can show whether motion stops. The model c Evidence actually used: Compared light/dark captures and computed color-scheme; Lighthouse accessibility and visible controls corroborated contrast, while the page reported zero active animations.",
      "evidence": "Compared light/dark captures and computed color-scheme; Lighthouse accessibility and visible controls corroborated contrast, while the page reported zero active animations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot under emulated prefers-contrast: more / forced-colors, or an axe/contrast probe, can show whether controls and text survive. The model chooses. Evidence actually used: Compared light/dark captures and computed color-scheme; Lighthouse accessibility and visible controls corroborated contrast, while the page reported zero active animations.",
      "evidence": "Compared light/dark captures and computed color-scheme; Lighthouse accessibility and visible controls corroborated contrast, while the page reported zero active animations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "pass",
      "confidence": "medium",
      "method": "a transition video of a route/state change shows whether it animates; the page source / ::view-transition usage corroborates. The model chooses. Evidence actually used: Screenshot/DOM/platform inspection found no active animations or scroll-linked effects on the representative paths; navigation, scrolling, and controls remained platform-standard.",
      "evidence": "Screenshot/DOM/platform inspection found no active animations or scroll-linked effects on the representative paths; navigation, scrolling, and controls remained platform-standard.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "medium",
      "method": "source/CSS inspection for animation-timeline: scroll()/view(); a long-task / scroll-handler probe can flag the main-thread anti-pattern. The model chooses. Evidence actually used: Screenshot/DOM/platform inspection found no active animations or scroll-linked effects on the representative paths; navigation, scrolling, and controls remained platform-standard.",
      "evidence": "Screenshot/DOM/platform inspection found no active animations or scroll-linked effects on the representative paths; navigation, scrolling, and controls remained platform-standard.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "CSS inspection for scroll-snap / overscroll-behavior / physics-based easing vs custom pointermove listeners. The model chooses. Evidence actually used: Screenshot/DOM/platform inspection found no active animations or scroll-linked effects on the representative paths; navigation, scrolling, and controls remained platform-standard.",
      "evidence": "Screenshot/DOM/platform inspection found no active animations or scroll-linked effects on the representative paths; navigation, scrolling, and controls remained platform-standard.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "a transition video of scrolling, or CSS inspection for scroll-state container queries. The model chooses. Evidence actually used: Home, category, search, and document screenshots/DOM showed sticky global search, breadcrumbs, descriptive document links, and stable orientation without detached overlays.",
      "evidence": "Home, category, search, and document screenshots/DOM showed sticky global search, breadcrumbs, descriptive document links, and stable orientation without detached overlays.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "medium",
      "method": "CSS inspection for anchor-name / position-anchor / position-try on overlays; a screenshot of an open overlay near a viewport edge can show drift. The model chooses. Evidence actually used: Home, category, search, and document screenshots/DOM showed sticky global search, breadcrumbs, descriptive document links, and stable orientation without detached overlays.",
      "evidence": "Home, category, search, and document screenshots/DOM showed sticky global search, breadcrumbs, descriptive document links, and stable orientation without detached overlays.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "medium",
      "method": "CSS inspection for ::highlight / scroll-marker; a transition video can show whether attention is cued after navigation. The model chooses. Evidence actually used: Home, category, search, and document screenshots/DOM showed sticky global search, breadcrumbs, descriptive document links, and stable orientation without detached overlays.",
      "evidence": "Home, category, search, and document screenshots/DOM showed sticky global search, breadcrumbs, descriptive document links, and stable orientation without detached overlays.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "a screenshot on load, or a DOM probe for full-viewport overlays present before interaction. The model chooses. Evidence actually used: Initial screenshots and DOM directly inspected the fixed role=dialog consent surface and underlying content/chrome.",
      "evidence": "Desktop, mobile, category, and search screenshots show a fixed consent panel covering most or all of the first viewport before any user interaction. Mobile users see no page content behind the full-height panel.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F2"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "DOM/source inspection for popover / <dialog> / <details> vs custom overlay divs with manual dismiss handling. The model chooses. Evidence actually used: Initial screenshots and DOM directly inspected the fixed role=dialog consent surface and underlying content/chrome.",
      "evidence": "The platform probe found 0 dialog elements and 2 role=dialog containers; screenshots show a custom fixed modal surface.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot plus layout metrics can show the proportion of the viewport given to chrome vs content. The model chooses. Evidence actually used: Initial screenshots and DOM directly inspected the fixed role=dialog consent surface and underlying content/chrome.",
      "evidence": "Initial screenshots and DOM directly inspected the fixed role=dialog consent surface and underlying content/chrome.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "layout metrics (scrollWidth vs innerWidth) and a screenshot at an emulated narrow mobile viewport reveal overflow. The model chooses. Evidence actually used: 360x800 layout measured scrollWidth=clientWidth=360 with viewport meta and zero horizontal overflow; screenshots and focus/target probes covered mobile and keyboard affordances.",
      "evidence": "360x800 layout measured scrollWidth=clientWidth=360 with viewport meta and zero horizontal overflow; screenshots and focus/target probes covered mobile and keyboard affordances.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "high",
      "method": "CSS inspection for @container / container-type; a computed-style probe of the same component in a wide vs narrow container shows whether it adapts. The model chooses. Evidence actually used: 360x800 layout measured scrollWidth=clientWidth=360 with viewport meta and zero horizontal overflow; screenshots and focus/target probes covered mobile and keyboard affordances.",
      "evidence": "360x800 layout measured scrollWidth=clientWidth=360 with viewport meta and zero horizontal overflow; screenshots and focus/target probes covered mobile and keyboard affordances.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "pass",
      "confidence": "high",
      "method": "a focus probe (focus an element, read the computed outline) or an axe target-size check; a screenshot of a focused control corroborates. The model chooses. Evidence actually used: 360x800 layout measured scrollWidth=clientWidth=360 with viewport meta and zero horizontal overflow; screenshots and focus/target probes covered mobile and keyboard affordances.",
      "evidence": "360x800 layout measured scrollWidth=clientWidth=360 with viewport meta and zero horizontal overflow; screenshots and focus/target probes covered mobile and keyboard affordances.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "screenshot the first viewport and key scrolled states; inspect heading structure, nav labels, button text, and visual hierarchy; a task walkthrough can show whether the next action Evidence actually used: The home search, populated search route, category listing, document detail, and signup CTA were reached successfully; screenshots expose clear search, document links, and account choices.",
      "evidence": "The home search, populated search route, category listing, document detail, and signup CTA were reached successfully; screenshots expose clear search, document links, and account choices.",
      "pathIds": [
        "home",
        "search",
        "category",
        "document",
        "signup"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "run the flow manually with screenshots/DOM snapshots at each step; compare expected vs actual path length; inspect form requirements, navigation continuity, and blockers. The model Evidence actually used: The home search, populated search route, category listing, document detail, and signup CTA were reached successfully; screenshots expose clear search, document links, and account choices.",
      "evidence": "The home search, populated search route, category listing, document detail, and signup CTA were reached successfully; screenshots expose clear search, document links, and account choices.",
      "pathIds": [
        "home",
        "search",
        "category",
        "document",
        "signup"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "exercise network delay/failure, invalid input, empty data and success states; screenshot the state messaging and recovery controls; inspect whether browser history and focus remain Evidence actually used: The home search, populated search route, category listing, document detail, and signup CTA were reached successfully; screenshots expose clear search, document links, and account choices.",
      "evidence": "The home search, populated search route, category listing, document detail, and signup CTA were reached successfully; screenshots expose clear search, document links, and account choices.",
      "pathIds": [
        "home",
        "search",
        "category",
        "document",
        "signup"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse reports LCP/CLS/TBT directly and the model may run it; layout metrics + a layout-shift observer + a long-task observer (the evidence primitives) give the same signal fir Evidence actually used: Lighthouse, trace, layout, HAR, images, and script attribute probes measured LCP/TBT/CLS, blocking work, delivery, image sizing, and unused code.",
      "evidence": "Lighthouse measured LCP 18.5 s, TBT 715 ms, Speed Index 7.8 s, and performance score 0.40. An unthrottled trace was much faster (LCP 1.48 s), showing the weakness is condition-sensitive rather than universal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F4"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "the layout primitive's CLS observer captures shifts; a transition video of the first seconds shows content jumping. The model chooses. Evidence actually used: Lighthouse, trace, layout, HAR, images, and script attribute probes measured LCP/TBT/CLS, blocking work, delivery, image sizing, and unused code.",
      "evidence": "Lighthouse, trace, layout, HAR, images, and script attribute probes measured LCP/TBT/CLS, blocking work, delivery, image sizing, and unused code.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "the layout primitive records long tasks; a heap summary shows the object population; Lighthouse reports TBT. The model chooses. Evidence actually used: Lighthouse, trace, layout, HAR, images, and script attribute probes measured LCP/TBT/CLS, blocking work, delivery, image sizing, and unused code.",
      "evidence": "Lighthouse measured LCP 18.5 s, TBT 715 ms, Speed Index 7.8 s, and performance score 0.40. An unthrottled trace was much faster (LCP 1.48 s), showing the weakness is condition-sensitive rather than universal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F4"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "a HAR summary can reveal cache headers, redirects, render-blocking candidates, weight offenders and dependency shape; a trace/Lighthouse insight report can corroborate LCP discover Evidence actually used: Lighthouse, trace, layout, HAR, images, and script attribute probes measured LCP/TBT/CLS, blocking work, delivery, image sizing, and unused code.",
      "evidence": "HAR recorded 2.85 MB across 73 requests, including 2.13 MB of JavaScript. Lighthouse estimated 909 KiB unused JavaScript, including Stripe, Survicate, multiple Google tags, Facebook, and application chunks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F5"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse/trace/code-coverage style evidence can flag unused JS/CSS, duplicated JavaScript and legacy code; a HAR summary shows third-party byte cost and request count. The model  Evidence actually used: Lighthouse, trace, layout, HAR, images, and script attribute probes measured LCP/TBT/CLS, blocking work, delivery, image sizing, and unused code.",
      "evidence": "HAR recorded 2.85 MB across 73 requests, including 2.13 MB of JavaScript. Lighthouse estimated 909 KiB unused JavaScript, including Stripe, Survicate, multiple Google tags, Facebook, and application chunks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F5"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "confidence": "high",
      "method": "axe-core (injectable via the evaluate primitive) or Lighthouse's a11y audits enumerate these; a DOM probe of the accessibility-relevant attributes is a first-party alternative. The Evidence actually used: Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "evidence": "Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "axe contrast rules, a Lighthouse contrast audit, or an in-page probe computing contrast ratios from computed colours. The model chooses. Evidence actually used: Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "evidence": "Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "pass",
      "confidence": "high",
      "method": "axe/Lighthouse structural audits; a focus-walk probe (tab through, read activeElement + computed outline) is a first-party alternative. The model chooses. Evidence actually used: Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "evidence": "Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot of body and heading text, plus CSS inspection for text-wrap / text alignment / font fallback handling. The model chooses. Evidence actually used: Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "evidence": "Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse/axe target-size, meta-viewport and media-caption audits are useful signals; screenshots at narrow and zoomed conditions plus DOM/media inspection can corroborate. The mo Evidence actually used: Lighthouse axe-based accessibility scored 1.0 for labels, names, contrast, heading order, and alt; mobile screenshots and target-size probe tested reflow and touch sizing.",
      "evidence": "The platform probe found 16x16 consent checkboxes, many 15–23 px-high links, and 1 px skip/back-to-top controls. Lighthouse automated accessibility otherwise scored 1.0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F6"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "capture Runtime/Log CDP events, or a probe that reads collected errors; Lighthouse reports this too. The model chooses. Evidence actually used: Lighthouse and DOM/network probes found no console errors, valid metadata/viewport, responsive images with dimensions, working bfcache, and no detected sensitive secrets.",
      "evidence": "Lighthouse and DOM/network probes found no console errors, valid metadata/viewport, responsive images with dimensions, working bfcache, and no detected sensitive secrets.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "high",
      "method": "a DOM/source probe for doctype/charset/img dimensions; CSS inspection for repetition; Lighthouse best-practices audits cover the rest. The model chooses. Evidence actually used: Lighthouse and DOM/network probes found no console errors, valid metadata/viewport, responsive images with dimensions, working bfcache, and no detected sensitive secrets.",
      "evidence": "Lighthouse and DOM/network probes found no console errors, valid metadata/viewport, responsive images with dimensions, working bfcache, and no detected sensitive secrets.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse best-practices audits and DevTools inspector/deprecation signals can surface these; DOM/source probes can verify paste handlers and prompt timing. The model chooses. Evidence actually used: Lighthouse and DOM/network probes found no console errors, valid metadata/viewport, responsive images with dimensions, working bfcache, and no detected sensitive secrets.",
      "evidence": "Lighthouse and DOM/network probes found no console errors, valid metadata/viewport, responsive images with dimensions, working bfcache, and no detected sensitive secrets.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "a DOM probe reads <title> and meta[name=description]; Lighthouse SEO audits cover the same ground. The model chooses. Evidence actually used: DOM, Lighthouse SEO, robots, canonical/hreflang metadata, JSON-LD, and browser/crawler comparisons covered title, links, indexing, and share metadata across templates.",
      "evidence": "DOM, Lighthouse SEO, robots, canonical/hreflang metadata, JSON-LD, and browser/crawler comparisons covered title, links, indexing, and share metadata across templates.",
      "pathIds": [
        "home",
        "category",
        "document"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/robots.json",
        "evidence/category-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "a DOM probe for anchor hrefs, viewport meta, and robots; Lighthouse SEO audits corroborate. The model chooses. Evidence actually used: DOM, Lighthouse SEO, robots, canonical/hreflang metadata, JSON-LD, and browser/crawler comparisons covered title, links, indexing, and share metadata across templates.",
      "evidence": "The discoverability primitive found 2% rendered-word coverage, classified the category as a JS shell, and found neither title nor h1 in raw HTML. Browser/crawler screenshot pairs visibly diverge. Lighthouse SEO identified two “Learn more” links pointing to copyright FAQs, reducing context for crawlers and assistive navigation.",
      "pathIds": [
        "home",
        "category",
        "document"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/robots.json",
        "evidence/category-discoverability.json"
      ],
      "findingIds": [
        "F8",
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "inspect response status and headers, <link rel=canonical>, hreflang links, robots meta, robots.txt and sitemap.xml; Lighthouse SEO audits cover several of these. The model chooses. Evidence actually used: DOM, Lighthouse SEO, robots, canonical/hreflang metadata, JSON-LD, and browser/crawler comparisons covered title, links, indexing, and share metadata across templates.",
      "evidence": "DOM, Lighthouse SEO, robots, canonical/hreflang metadata, JSON-LD, and browser/crawler comparisons covered title, links, indexing, and share metadata across templates.",
      "pathIds": [
        "home",
        "category",
        "document"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/robots.json",
        "evidence/category-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "inspect JSON-LD/microdata and social preview tags against visible content; Lighthouse has a manual structured-data audit, and ad-hoc probes can parse schema.org blocks. The model c Evidence actually used: DOM, Lighthouse SEO, robots, canonical/hreflang metadata, JSON-LD, and browser/crawler comparisons covered title, links, indexing, and share metadata across templates.",
      "evidence": "DOM, Lighthouse SEO, robots, canonical/hreflang metadata, JSON-LD, and browser/crawler comparisons covered title, links, indexing, and share metadata across templates.",
      "pathIds": [
        "home",
        "category",
        "document"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/robots.json",
        "evidence/category-discoverability.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "inspect response headers / page protocol via an evaluate probe or the network layer; Lighthouse best-practices flags HTTPS and CSP issues. The model chooses. Evidence actually used: Headers, cookies, trackers, HAR, secrets scan, and signup credential probes directly assessed transport, browser policies, third parties, permissions/auth context, and secrets.",
      "evidence": "Headers capture found no CSP, X-Content-Type-Options, X-Frame-Options/frame-ancestors, Referrer-Policy, or Permissions-Policy; HSTS was present. Two 400-day identifier cookies use SameSite=None and are not HttpOnly.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F9"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "inspect network requests and third-party origins; a probe of analytics/beacon calls. The model chooses. Evidence actually used: Headers, cookies, trackers, HAR, secrets scan, and signup credential probes directly assessed transport, browser policies, third parties, permissions/auth context, and secrets.",
      "evidence": "Tracker capture found 17 third-party origins and known Google Analytics/Ads, Facebook, Sentry, and Tag Manager trackers. HAR attributed 70 of 73 requests and almost all 2.85 MB to origins other than es.scribd.com. No sensitive client secret was detected.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "a probe for permission requests fired on load; source inspection for passkey / WebAuthn / navigator.credentials usage in auth flows. The model chooses. Evidence actually used: Headers, cookies, trackers, HAR, secrets scan, and signup credential probes directly assessed transport, browser policies, third parties, permissions/auth context, and secrets.",
      "evidence": "Headers, cookies, trackers, HAR, secrets scan, and signup credential probes directly assessed transport, browser policies, third parties, permissions/auth context, and secrets.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "inspect response headers and browser security state; Lighthouse/DevTools security audits can corroborate HSTS, clickjacking, Trusted Types, origin isolation and third-party cookie  Evidence actually used: Headers, cookies, trackers, HAR, secrets scan, and signup credential probes directly assessed transport, browser policies, third parties, permissions/auth context, and secrets.",
      "evidence": "Headers capture found no CSP, X-Content-Type-Options, X-Frame-Options/frame-ancestors, Referrer-Policy, or Permissions-Policy; HSTS was present. Two 400-day identifier cookies use SameSite=None and are not HttpOnly.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F9"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "load with scripting disabled or compare a no-JS fetch of the HTML against the rendered page; check for Baseline-aware fallbacks in source. The model chooses. Evidence actually used: No-JS discoverability comparisons across home/category/document, navigation screenshots, successful routes, and visible signup/reject controls assessed progressive enhancement and runtime/failure affordances.",
      "evidence": "The category discoverability capture reported isJsShell=true and only 2% content overlap; title and h1 were absent from raw HTML. The homepage had only 10% overlap, while the document page retained 23%.",
      "pathIds": [
        "home",
        "category",
        "document"
      ],
      "artifacts": [
        "evidence/category-discoverability.json",
        "evidence/document-discoverability.json"
      ],
      "findingIds": [
        "F7"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "exercise menus near viewport edges with a screenshot; a probe of async/visibility behaviour. The model chooses. Evidence actually used: No-JS discoverability comparisons across home/category/document, navigation screenshots, successful routes, and visible signup/reject controls assessed progressive enhancement and runtime/failure affordances.",
      "evidence": "No-JS discoverability comparisons across home/category/document, navigation screenshots, successful routes, and visible signup/reject controls assessed progressive enhancement and runtime/failure affordances.",
      "pathIds": [
        "home",
        "category",
        "document"
      ],
      "artifacts": [
        "evidence/category-discoverability.json",
        "evidence/document-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "a probe for a service worker registration and a web app manifest; test behaviour offline. The model chooses. Evidence actually used: No-JS discoverability comparisons across home/category/document, navigation screenshots, successful routes, and visible signup/reject controls assessed progressive enhancement and runtime/failure affordances.",
      "evidence": "Scribd is predominantly an online document service; installability/offline reading was not presented as a public-web core requirement on the inspected unauthenticated paths.",
      "reason": "Scribd is predominantly an online document service; installability/offline reading was not presented as a public-web core requirement on the inspected unauthenticated paths."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "simulate failed fetches/offline mode or inspect representative 404/500 routes; screenshots and DOM snapshots of error/loading/empty states show whether recovery is possible. The mo Evidence actually used: No-JS discoverability comparisons across home/category/document, navigation screenshots, successful routes, and visible signup/reject controls assessed progressive enhancement and runtime/failure affordances.",
      "evidence": "No-JS discoverability comparisons across home/category/document, navigation screenshots, successful routes, and visible signup/reject controls assessed progressive enhancement and runtime/failure affordances.",
      "pathIds": [
        "home",
        "category",
        "document"
      ],
      "artifacts": [
        "evidence/category-discoverability.json",
        "evidence/document-discoverability.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "a DOM probe for <html lang>/dir and CSS inspection for logical vs physical properties. The model chooses. Evidence actually used: Recon on the es hostname, category, and auth handoff directly recorded final URL, lang, canonical/hreflang, and ui_locales.",
      "evidence": "The recon probe requested es.scribd.com but ended at https://www.scribd.com/, with html lang=\"en-US\" and English title/content. The category and signup probes likewise ended on English pages; signup explicitly passed ui_locales=en.",
      "pathIds": [
        "home",
        "category",
        "signup"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/category-recon.json",
        "evidence/signup-probe.json"
      ],
      "findingIds": [
        "F1"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "source inspection for Intl.* usage vs hand-rolled formatting; a probe of rendered dates/numbers under a different locale. The model chooses. Evidence actually used: Recon on the es hostname, category, and auth handoff directly recorded final URL, lang, canonical/hreflang, and ui_locales.",
      "evidence": "The representative unauthenticated paths showed no dates, currencies, durations, or other locale-formatted data to test.",
      "reason": "The representative unauthenticated paths showed no dates, currencies, durations, or other locale-formatted data to test."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "source inspection for time-zone-aware date handling vs naive local Date math. The model chooses. Evidence actually used: Recon on the es hostname, category, and auth handoff directly recorded final URL, lang, canonical/hreflang, and ui_locales.",
      "evidence": "The representative paths contained no time-zone-sensitive event or scheduling surface.",
      "reason": "The representative paths contained no time-zone-sensitive event or scheduling surface."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "a screenshot of consent/upsell/cancel flows; source inspection for declarative button actions vs misleading controls. The model chooses. Evidence actually used: Consent and signup screenshots plus form probe inspected defaults, pricing/trial language, labels, autocomplete=email/new-password, and optional marketing consent.",
      "evidence": "Initial screenshots show all four optional-looking purposes checked, alongside text covering 53 IAB partners, precise geolocation, and device-characteristic scanning. Reject is available but requires action after the biased defaults are presented.",
      "pathIds": [
        "home",
        "signup"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/signup-probe.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "exercise a form, submit invalid input, and observe timing and clarity of errors via a screenshot or a :user-invalid / aria-invalid probe. The model chooses. Evidence actually used: Consent and signup screenshots plus form probe inspected defaults, pricing/trial language, labels, autocomplete=email/new-password, and optional marketing consent.",
      "evidence": "Consent and signup screenshots plus form probe inspected defaults, pricing/trial language, labels, autocomplete=email/new-password, and optional marketing consent.",
      "pathIds": [
        "home",
        "signup"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/signup-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "high",
      "method": "source/DOM inspection for autocomplete attributes on form fields; a probe of autofill affordances. The model chooses. Evidence actually used: Consent and signup screenshots plus form probe inspected defaults, pricing/trial language, labels, autocomplete=email/new-password, and optional marketing consent.",
      "evidence": "Consent and signup screenshots plus form probe inspected defaults, pricing/trial language, labels, autocomplete=email/new-password, and optional marketing consent.",
      "pathIds": [
        "home",
        "signup"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/signup-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "walkthrough checkout/subscription/auth/account flows when present; screenshot pricing, confirmation, cancellation and reauthentication states; inspect passkey/autocomplete support  Evidence actually used: Consent and signup screenshots plus form probe inspected defaults, pricing/trial language, labels, autocomplete=email/new-password, and optional marketing consent.",
      "evidence": "Consent and signup screenshots plus form probe inspected defaults, pricing/trial language, labels, autocomplete=email/new-password, and optional marketing consent.",
      "pathIds": [
        "home",
        "signup"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/signup-probe.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "pass",
      "confidence": "high",
      "method": "inspect transferred image bytes vs displayed size; source inspection for modern formats and resolution handling. The model chooses. Evidence actually used: HAR, trackers, images, trace, and Lighthouse unused-code data quantified asset optimization, background work, and third-party/media cost.",
      "evidence": "HAR, trackers, images, trace, and Lighthouse unused-code data quantified asset optimization, background work, and third-party/media cost.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "a long-task / network probe for background fetches and processing while idle or backgrounded. The model chooses. Evidence actually used: HAR, trackers, images, trace, and Lighthouse unused-code data quantified asset optimization, background work, and third-party/media cost.",
      "evidence": "HAR, trackers, images, trace, and Lighthouse unused-code data quantified asset optimization, background work, and third-party/media cost.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "a HAR summary shows third-party bytes, font/media weight and caching; screenshots/video reveal autoplay and decorative media; trace/layout evidence shows whether media/animation ke Evidence actually used: HAR, trackers, images, trace, and Lighthouse unused-code data quantified asset optimization, background work, and third-party/media cost.",
      "evidence": "HAR measured 2.85 MB total with 2.13 MB scripts and 2.85 MB attributed to non-es.scribd.com origins; large items include multiple Google tags, Stripe, Facebook, Survicate, and consent tooling before user intent.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "issues",
      "confidence": "high",
      "method": "source inspection for WebMCP / agentic-tool registration and agent-readable affordances. The model chooses. Evidence actually used: robots.txt, no-JS comparisons, metadata, and platform probe assessed crawler access, structured content, and agent/tool surfaces.",
      "evidence": "The platform probe found no manifest/tool surface, and robots.txt disallows ClaudeBot, Claude-Web, CCBot, Bytespider, and others. Document raw HTML preserves some metadata but only 23% rendered-word coverage.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/robots.json",
        "evidence/document-discoverability.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "source inspection for built-in AI (language model / summariser) usage. The model chooses. Evidence actually used: robots.txt, no-JS comparisons, metadata, and platform probe assessed crawler access, structured content, and agent/tool surfaces.",
      "evidence": "No user-facing inference or summarisation feature was presented on the inspected paths, so an on-device implementation requirement cannot be judged.",
      "reason": "No user-facing inference or summarisation feature was presented on the inspected paths, so an on-device implementation requirement cannot be judged."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "compare heap snapshots for retained growth - a baseline, then one taken after repeating the interaction with `--interact` about 10x (the memory-tracer methodology: baseline -> repe Evidence actually used: Baseline and post-interaction heap summaries compared totals after ten repeated menu/scroll cycles: 739,658 to 736,131 nodes and 42,034,510 to 41,897,076 bytes, with no retained growth signal.",
      "evidence": "Baseline and post-interaction heap summaries compared totals after ten repeated menu/scroll cycles: 739,658 to 736,131 nodes and 42,034,510 to 41,897,076 bytes, with no retained growth signal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "a single `heap` summary's totals (nodeCount, totalSelfSizeBytes, constructor population) plus Performance.getMetrics (Nodes, JSHeapUsedSize) give the current footprint to judge aga Evidence actually used: Baseline and post-interaction heap summaries compared totals after ten repeated menu/scroll cycles: 739,658 to 736,131 nodes and 42,034,510 to 41,897,076 bytes, with no retained growth signal.",
      "evidence": "Baseline and post-interaction heap summaries compared totals after ten repeated menu/scroll cycles: 739,658 to 736,131 nodes and 42,034,510 to 41,897,076 bytes, with no retained growth signal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "the `heap` summary by constructor (Detached* nodes) compared across a before/after pair shows a growing detached-DOM population; an `evaluate` probe can sample listener/timer count Evidence actually used: Baseline and post-interaction heap summaries compared totals after ten repeated menu/scroll cycles: 739,658 to 736,131 nodes and 42,034,510 to 41,897,076 bytes, with no retained growth signal.",
      "evidence": "Baseline and post-interaction heap summaries compared totals after ten repeated menu/scroll cycles: 739,658 to 736,131 nodes and 42,034,510 to 41,897,076 bytes, with no retained growth signal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F3"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F2",
        "F14"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F4",
        "F5"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F6"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F8",
        "F13"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F9",
        "F10"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F7"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F1"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Entry and marketing template; inspected initial consent state, primary search/navigation, responsive layout, preferences, network, security, accessibility, performance, and no-JS rendering.",
      "url": "https://es.scribd.com",
      "conditions": [
        "desktop 1440x900",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "no JavaScript",
        "Lighthouse mobile throttling"
      ],
      "result": "issues"
    },
    {
      "id": "category",
      "description": "Representative document-category/listing template discovered from the homepage navigation.",
      "url": "https://es.scribd.com/docs/Computers",
      "conditions": [
        "desktop 1440x900",
        "no JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Representative primary discovery journey using a populated search query.",
      "url": "https://es.scribd.com/search?query=javascript",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "document",
      "description": "Representative document/detail and reading template selected from the Computers category.",
      "url": "https://es.scribd.com/document/483472295/Tutorial-1-Blender-pdf",
      "conditions": [
        "desktop 1440x900",
        "no JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "signup",
      "description": "Representative account-creation form reached from the primary free-trial CTA; inspected labels, autofill, consent, and auth choices without submitting personal data.",
      "url": "https://es.scribd.com/oauth/signup",
      "conditions": [
        "desktop 1440x900"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F1",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "internationalization",
      "summary": "The Spanish hostname redirects visitors to the English site and declares English document language.",
      "evidence": "The recon probe requested es.scribd.com but ended at https://www.scribd.com/, with html lang=\"en-US\" and English title/content. The category and signup probes likewise ended on English pages; signup explicitly passed ui_locales=en.",
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/category-recon.json",
        "evidence/signup-probe.json"
      ],
      "suggestedFix": "Preserve the Spanish locale through redirects and auth handoffs, render translated content, set lang=\"es\", and keep localized canonical/hreflang signals aligned.",
      "effort": "large"
    },
    {
      "id": "F2",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "summary": "A consent wall obscures the content on every fresh entry, especially on mobile.",
      "evidence": "Desktop, mobile, category, and search screenshots show a fixed consent panel covering most or all of the first viewport before any user interaction. Mobile users see no page content behind the full-height panel.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/category-desktop.png",
        "evidence/search-mobile.png"
      ],
      "suggestedFix": "Use a compact, non-blocking consent surface with essential-only defaults and an equally prominent reject action; keep core content usable before a choice.",
      "effort": "medium"
    },
    {
      "id": "F3",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "css",
      "summary": "The experience does not adapt to the user’s dark color-scheme preference.",
      "evidence": "The dark-emulated screenshot is pixel-identical in palette to the light capture, and the computed platform probe reports colorScheme=\"normal\".",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Declare color-scheme and use prefers-color-scheme or light-dark() tokens for surfaces, text, controls, and the consent UI.",
      "effort": "medium"
    },
    {
      "id": "F4",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "The throttled mobile load is slow and main-thread heavy.",
      "evidence": "Lighthouse measured LCP 18.5 s, TBT 715 ms, Speed Index 7.8 s, and performance score 0.40. An unthrottled trace was much faster (LCP 1.48 s), showing the weakness is condition-sensitive rather than universal.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "suggestedFix": "Profile the throttled LCP chain, prioritize the hero/LCP resource, delay non-critical third-party work, and split or defer long JavaScript tasks.",
      "effort": "large"
    },
    {
      "id": "F5",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "defer-rendering-heavy-content",
      "guidanceCategory": "performance",
      "summary": "The entry page ships a large amount of unused JavaScript and non-critical third-party code.",
      "evidence": "HAR recorded 2.85 MB across 73 requests, including 2.13 MB of JavaScript. Lighthouse estimated 909 KiB unused JavaScript, including Stripe, Survicate, multiple Google tags, Facebook, and application chunks.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Load payment, survey, advertising, and analytics code only after intent/consent; consolidate tags and route-split application bundles.",
      "effort": "large"
    },
    {
      "id": "F6",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Several interactive targets are too small for reliable touch use.",
      "evidence": "The platform probe found 16x16 consent checkboxes, many 15–23 px-high links, and 1 px skip/back-to-top controls. Lighthouse automated accessibility otherwise scored 1.0.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Expand interactive hit areas to at least 24x24 CSS px (prefer 44x44 for primary touch controls) without shrinking visible focus indicators.",
      "effort": "small"
    },
    {
      "id": "F7",
      "severity": "high",
      "confidence": "high",
      "pathId": "category",
      "url": "https://es.scribd.com/docs/Computers",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Core listing content is effectively unavailable without JavaScript.",
      "evidence": "The category discoverability capture reported isJsShell=true and only 2% content overlap; title and h1 were absent from raw HTML. The homepage had only 10% overlap, while the document page retained 23%.",
      "artifacts": [
        "evidence/category-discoverability.json",
        "evidence/category-discoverability-rendered.png",
        "evidence/category-discoverability-crawler.png",
        "evidence/home-discoverability.json"
      ],
      "suggestedFix": "Server-render category headings, document links, and essential descriptions as semantic HTML, then hydrate enhancements progressively.",
      "effort": "large"
    },
    {
      "id": "F8",
      "severity": "high",
      "confidence": "high",
      "pathId": "category",
      "url": "https://es.scribd.com/docs/Computers",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Non-JavaScript crawlers receive almost none of the category’s meaningful content.",
      "evidence": "The discoverability primitive found 2% rendered-word coverage, classified the category as a JS shell, and found neither title nor h1 in raw HTML. Browser/crawler screenshot pairs visibly diverge.",
      "artifacts": [
        "evidence/category-discoverability.json",
        "evidence/category-discoverability-rendered.png",
        "evidence/category-discoverability-crawler.png"
      ],
      "suggestedFix": "Render category content and real document hrefs in the HTTP response; retain canonical, hreflang, title, and description in crawler-visible markup.",
      "effort": "large"
    },
    {
      "id": "F9",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Important browser security policies are missing and first-party identifiers use permissive cookie settings.",
      "evidence": "Headers capture found no CSP, X-Content-Type-Options, X-Frame-Options/frame-ancestors, Referrer-Policy, or Permissions-Policy; HSTS was present. Two 400-day identifier cookies use SameSite=None and are not HttpOnly.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy an enforceable CSP, nosniff, clickjacking defense, Referrer-Policy, and least-privilege Permissions-Policy; tighten identifier cookie scope, lifetime, and SameSite.",
      "effort": "medium"
    },
    {
      "id": "F10",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "The initial page has an unusually broad tracking and third-party footprint.",
      "evidence": "Tracker capture found 17 third-party origins and known Google Analytics/Ads, Facebook, Sentry, and Tag Manager trackers. HAR attributed 70 of 73 requests and almost all 2.85 MB to origins other than es.scribd.com. No sensitive client secret was detected.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/secrets.json"
      ],
      "suggestedFix": "Apply data minimisation, gate optional trackers behind consent, remove duplicate analytics/ad tags, shorten retention, and proxy or self-host essential assets where appropriate.",
      "effort": "large"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "The consent interface preselects targeted advertising, personalization, storage, and performance cookies.",
      "evidence": "Initial screenshots show all four optional-looking purposes checked, alongside text covering 53 IAB partners, precise geolocation, and device-characteristic scanning. Reject is available but requires action after the biased defaults are presented.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Default optional purposes off, separate essential processing from advertising, explain each purpose plainly, and make accept/reject/save equally clear and persistent.",
      "effort": "medium"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "summary": "Third-party scripts dominate the page’s transfer and execution budget.",
      "evidence": "HAR measured 2.85 MB total with 2.13 MB scripts and 2.85 MB attributed to non-es.scribd.com origins; large items include multiple Google tags, Stripe, Facebook, Survicate, and consent tooling before user intent.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Set a third-party byte/request budget, load integrations on demand, remove duplicate tags, and defer background analytics until idle and consented.",
      "effort": "large"
    },
    {
      "id": "F13",
      "severity": "low",
      "confidence": "high",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Some links use generic text that does not describe their destination.",
      "evidence": "Lighthouse SEO identified two “Learn more” links pointing to copyright FAQs, reducing context for crawlers and assistive navigation.",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Use destination-specific link text such as “Learn about Scribd copyright handling”.",
      "effort": "trivial"
    },
    {
      "id": "F14",
      "severity": "low",
      "confidence": "medium",
      "pathId": "home",
      "url": "https://es.scribd.com",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "summary": "The consent modal uses custom role-based containers rather than the native dialog primitive.",
      "evidence": "The platform probe found 0 dialog elements and 2 role=dialog containers; screenshots show a custom fixed modal surface.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Use a native dialog for the modal consent flow with explicit focus management and predictable close behavior, while keeping rejection available.",
      "effort": "medium"
    },
    {
      "id": "F15",
      "severity": "low",
      "confidence": "medium",
      "pathId": "document",
      "url": "https://es.scribd.com/document/483472295/Tutorial-1-Blender-pdf",
      "principleId": "be-agent-ready",
      "principleCheckId": "structured-agent-capabilities",
      "guidanceId": "webmcp",
      "guidanceCategory": "emerging",
      "summary": "Document discovery has no structured agent capability and major AI crawlers are explicitly blocked.",
      "evidence": "The platform probe found no manifest/tool surface, and robots.txt disallows ClaudeBot, Claude-Web, CCBot, Bytespider, and others. Document raw HTML preserves some metadata but only 23% rendered-word coverage.",
      "artifacts": [
        "evidence/robots.json",
        "evidence/document-discoverability.json"
      ],
      "suggestedFix": "If agent access is intentional, expose narrowly scoped read/search tools with clear authorization and safety boundaries, and align robots policy with that intent.",
      "effort": "large"
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Restore a real Spanish-localized journey across content and auth",
      "priority": 1,
      "findingIds": [
        "F1"
      ],
      "guidanceId": "translator",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Replace biased full-screen consent with essential-only, non-blocking consent",
      "priority": 2,
      "findingIds": [
        "F2",
        "F10",
        "F11"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Cut unused and third-party JavaScript from the critical load",
      "priority": 3,
      "findingIds": [
        "F4",
        "F5",
        "F12"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Server-render category and document discovery content",
      "priority": 4,
      "findingIds": [
        "F7",
        "F8"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Deploy missing browser security policies and tighten cookies",
      "priority": 5,
      "findingIds": [
        "F9"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Add preference-driven dark theming",
      "priority": 6,
      "findingIds": [
        "F3"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Increase touch target hit areas and improve generic link text",
      "priority": 7,
      "findingIds": [
        "F6",
        "F13"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Use a semantic dialog for the consent modal",
      "priority": 8,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Define and expose a safe agent-access policy if desired",
      "priority": 9,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "webmcp",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-23T10-23-22-763Z"
}
