{
  "url": "https://www.jennymovies.com",
  "auditedAt": "2026-07-25T20:17:41.882Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit across six representative routes/conditions. The age-verification provider handoff was not submitted because it requires real user identity; the on-site gate itself was fully inspected.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered HTML with authored CSS/JavaScript",
    "notes": "Public adult-content site with a jurisdictional age-verification gate on the homepage, browse/localized routes, contact form, legal content, sitemap, and standalone web manifest. Detail/media pages were not available from the gated initial response; category/listing, form, legal, locale, and error archetypes were sampled instead."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "axe-core",
    "lighthouse",
    "raw HTTP fetch",
    "Modern Web Guidance search/retrieve"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "declarative-dialog-popover-control",
    "light-dismiss-a-dialog",
    "forms",
    "required-field-feedback",
    "accessible-error-announcement",
    "performance",
    "optimize-image-priority",
    "security",
    "privacy",
    "html",
    "efficient-background-processing",
    "deliver-optimized-decorative-images",
    "agentic-forms",
    "webmcp",
    "coordinate-global-events",
    "size-aware-styling",
    "directional-navigation-transitions",
    "scroll-position-aware-elements",
    "position-aware-tooltips",
    "translator"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/axe.json",
      "caption": "axe",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/contact-dom.json",
      "caption": "contact dom"
    },
    {
      "type": "other",
      "path": "evidence/contact-form.json",
      "caption": "contact form",
      "findingIds": [
        "F09",
        "F16",
        "F19",
        "F20"
      ]
    },
    {
      "type": "other",
      "path": "evidence/contact-invalid-state.json",
      "caption": "contact invalid state",
      "findingIds": [
        "F09",
        "F16",
        "F19"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/contact-mobile.png",
      "caption": "contact mobile",
      "findingIds": [
        "F09"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies"
    },
    {
      "type": "other",
      "path": "evidence/french-i18n.json",
      "caption": "french i18n",
      "findingIds": [
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list"
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "guidance retrieved"
    },
    {
      "type": "other",
      "path": "evidence/guidance-searches.jsonl",
      "caption": "guidance searches"
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F15"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline"
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "heap post"
    },
    {
      "type": "screenshot",
      "path": "evidence/high-contrast.png",
      "caption": "high contrast"
    },
    {
      "type": "dom",
      "path": "evidence/home-dark-dom.json",
      "caption": "home dark dom",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F06",
        "F21"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F04",
        "F05",
        "F07",
        "F08"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-desktop.json",
      "caption": "home layout desktop"
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "home layout mobile"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile"
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace"
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/http-static-probes.txt",
      "caption": "http static probes",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": [
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/modern-features.json",
      "caption": "modern features",
      "findingIds": [
        "F03",
        "F05",
        "F06",
        "F07",
        "F17"
      ]
    },
    {
      "type": "other",
      "path": "evidence/platform-a11y.json",
      "caption": "platform a11y",
      "findingIds": [
        "F06",
        "F08",
        "F13",
        "F14"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/privacy-desktop.png",
      "caption": "privacy desktop",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/privacy-policy-dom.json",
      "caption": "privacy policy dom"
    },
    {
      "type": "other",
      "path": "evidence/privacy-probe.json",
      "caption": "privacy probe"
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion.json",
      "caption": "reduced motion",
      "findingIds": [
        "F02",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "other",
      "path": "evidence/site-discovery.txt",
      "caption": "site discovery",
      "findingIds": [
        "F13",
        "F17"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/tags-dom.json",
      "caption": "tags dom"
    },
    {
      "type": "other",
      "path": "evidence/tags-probe.json",
      "caption": "tags probe",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers"
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Honours prefers-color-scheme: a usable dark mode exists and is driven by the user's preference (color-scheme / prefers-color-scheme / light-dark()), not hard-coded light only.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Honours prefers-reduced-motion: non-essential animations and auto-advance are reduced or removed when the user asks for less motion.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The prefers-contrast screenshot kept modal text, borders, controls, and actions visible; axe found no confirmed contrast violation.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/high-contrast.png",
        "evidence/axe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for State and route changes use View Transitions (including same-document, cross-document and scroll-driven/staggered) rather than instant, jarring swaps.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "No scroll-linked animation exists, and CSS inspection found no scroll-event replacement or scroll-timeline misuse; trace recorded zero long tasks.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/modern-features.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The observed browse and form surfaces rely on native links, scrolling, and controls rather than custom pointer-drag handlers; mobile layout preserves native scrolling.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/contact-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Sticky/affixed UI reacts to scroll state and position (e.g. the new scroll-state(scrolled) query, shrinking headers, progress indicators) so chrome responds to position instead of static or JS-driven toggling.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Tooltips, popovers and menus use CSS anchor positioning (with fallback positions) so they stay attached and reposition correctly rather than being manually positioned.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Desktop and mobile screenshots show persistent labeled navigation and route-specific page headings; disclosure text clearly announces its effect.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/contact-mobile.png",
        "evidence/privacy-desktop.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The only load-time interstitial is a clearly explained, safety/regulatory age-verification choice with multiple providers and legal/support links, not a marketing interruption.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence 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.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The content and contact screenshots use a compact header and simple full-width content/form treatment without decorative side rails or excessive framing.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/contact-mobile.png",
        "evidence/privacy-desktop.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "At the requested narrow mobile condition the layout primitive reported 0 horizontal overflow and the mobile screenshots show a two-column/stacked adaptive layout.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/home-mobile.png",
        "evidence/contact-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Components adapt to their container with container queries (incl. anchored container queries) and content/state-based styling where reused at different sizes, not only global viewport breakpoints.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Touch targets are adequately sized and hover-only affordances have a non-hover fallback, and keyboard focus is visible, so the UI works for touch, pointer and keyboard alike.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The homepage gate states “Please verify your age” and offers clearly named providers; the contact page has a specific heading and a single “Send Your Message” action.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/contact-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The legal entry flow exposes several explicit verification providers and support/privacy links without hidden fields; the contact flow presents all fields and its submit action in one view.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/contact-mobile.png",
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Loading, empty, success, error, offline, and partial-completion states are visible and actionable; users can retry, undo, cancel, go back, or continue without losing context.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Lighthouse measured LCP 1.50s, CLS 0, and TBT 0; the trace measured FCP 349ms/LCP 365ms and zero blocking time.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Layout observation measured CLS 0 on mobile and 0.006 on desktop, both comfortably good; the gate uses bounded media boxes.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/home-layout-desktop.json",
        "evidence/images.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Trace and layout observers recorded no long tasks and 0ms total blocking time during the representative load.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-layout-desktop.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Critical resources are delivered efficiently: cache headers are useful, render-blocking chains are short, fonts do not block or shift text, HTTP delivery is modern, and network dependency trees do not delay the main content.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The HAR captured only 15 requests/134,490 transferred bytes, no JavaScript resource category, and no third-party code on the gated entry surface.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "axe reported no names/roles/labels violation; image inspection found no missing alt text, and contact controls have associated labels.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/axe.json",
        "evidence/images.json",
        "evidence/contact-form.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Visible screenshots are legible and axe/Lighthouse produced no confirmed color-contrast failure, although axe marked 18 nodes for manual contrast review.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/axe.json",
        "evidence/home-desktop.png",
        "evidence/contact-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Focus probing found no visible indicator on controls; the homepage also has no main landmark and the visual modal lacks dialog semantics.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/platform-a11y.json",
        "evidence/modern-features.json"
      ],
      "findingIds": [
        "F06",
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Contact and privacy screenshots show readable sizing, line height, wrapping, and spacing without clipping at their representative viewport.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/contact-mobile.png",
        "evidence/privacy-desktop.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for The experience remains usable when zoomed or reflowed, touch targets are large enough, media has captions or equivalents where needed, and the viewport does not prevent user scaling.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Lighthouse best-practices completed at 0.96 and did not report the errors-in-console binary audit as a failure.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Valid doctype and charset, images sized with correct aspect ratio, no deprecated APIs misused, and CSS/HTML are well structured and not needlessly repetitive. (HTTPS, CSP and permission hygiene are judged under be-private-and-secure, not here.)",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Lighthouse reported no deprecated API, vulnerable-library, permission-on-load, or browser-platform binary failure; no cookies or prompts appeared on load.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/cookies.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Homepage has a title/description, but /tags/ repeats the homepage title and heading instead of unique browse metadata.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/platform-a11y.json",
        "evidence/tags-probe.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Links use real hrefs and the viewport exists, but both response and page-level robots directives block indexing of a public sitemap entry.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/site-discovery.txt",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Public pages expose the indexing signals search engines need: successful HTTP status, canonical URL when appropriate, hreflang for localized variants, robots/sitemap consistency, and no accidental noindex/noarchive policy.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Where the page represents an article, product, organization, event, place or other rich entity, structured data and share-preview metadata accurately describe the visible content.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Served over HTTPS with a sensible Content-Security-Policy and secure, SameSite cookies; no mixed content or obvious transport/header smells.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Initial-load tracker and HAR captures found zero third-party requests, zero known trackers, and zero cookies; the secrets scan found no client-side secret.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/cookies.json",
        "evidence/secrets.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "No geolocation/notification prompt or authentication form fires on load; identity verification is initiated only after a user chooses a named provider.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/recon.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "HSTS and clickjacking protection are present, but CSP is broadly permissive and nosniff/Permissions-Policy are missing.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Core content and primary flows are reachable and usable without JavaScript and on older or non-Baseline browsers; modern features layer on as enhancements with fallbacks, and reactive/transition state stabilises rather than flickering before it settles.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The age overlay itself scrolls within the viewport, the disclosure toggled repeatedly without state corruption, and heap growth remained bounded.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence 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.)",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "A synthetic missing route resolved to a real HTTP 404 response rather than a misleading 200 shell; representative pages remained server-rendered.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/http-static-probes.txt",
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Correct lang and dir attributes, logical CSS properties (inline/block) rather than physical left/right, and translation-ready markup so the layout and reading order survive other languages and writing modes.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "No locale-sensitive values were present on the homepage, contact, tags, or privacy templates.",
      "artifacts": [
        "evidence/recon.json",
        "evidence/privacy-probe.json"
      ],
      "reason": "Representative routes expose no dates, currency, durations, or other locale-sensitive data to format."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "No time-zone-sensitive journey was present in representative routes.",
      "artifacts": [
        "evidence/recon.json",
        "evidence/privacy-probe.json"
      ],
      "reason": "The audited site surfaces no scheduling, event, timestamp, or partial-time workflow."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "The legally required age gate describes each verification choice, marks recommendations explicitly, and links privacy/terms/contact information without confirmshaming.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence 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.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence 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.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Recon found browse, legal, age-verification, search, and contact surfaces only.",
      "artifacts": [
        "evidence/recon.json"
      ],
      "reason": "No checkout, subscription, account creation, cancellation, or payment flow exists on the audited representative surfaces."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Assets are modern and the transfer is light, but five images lack intrinsic dimensions and one verification logo is oversized/incorrect density.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Direct evidence for Background work and fetching are not wasteful: background processing is efficient and de-prioritised, and the lightest technique that achieves the result is preferred over heavy or redundant work.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "HAR and tracker capture found zero third-party requests and a light 134,490-byte initial transfer with no autoplay media.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Recon found ordinary navigation, search, age verification, and a contact form only.",
      "artifacts": [
        "evidence/recon.json"
      ],
      "reason": "This public browse/legal/contact site exposes no complex user-delegable application workflow for which WebMCP tools are currently warranted."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement",
      "evidence": "Representative pages contain no inference workflow.",
      "artifacts": [
        "evidence/recon.json"
      ],
      "reason": "No summarisation, generation, classification, or other inference feature is part of the site’s declared or observed purpose."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "After 20 open/close disclosure toggles, heap self-size rose only 9,596 bytes (0.34%) and node count 330, with no monotonic leak signal.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Baseline heap self-size was 2.86MB for a 134KB/15-request entry surface, proportionate to the rendered modal and navigation.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Planned multimodal evidence: CDP visual/DOM/evaluate plus relevant objective primitive",
      "evidence": "Repeated toggling did not produce a Detached constructor in either summary; closures increased by only 15 and objects by 6 after 20 toggles.",
      "pathIds": [
        "home-age-gate"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F08",
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F13"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F16",
        "F17"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F12",
        "F21"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "This public browse/legal/contact site exposes no complex user-delegable application workflow for which WebMCP tools are currently warranted. No summarisation, generation, classification, or other inference feature is part of the site’s declared or observed purpose."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home-age-gate",
      "description": "Homepage and legally required age-verification entry flow; represents the global header, navigation, safety gate, and initial-load experience.",
      "url": "https://www.jennymovies.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more",
        "keyboard focus",
        "JavaScript disabled crawler view"
      ],
      "result": "issues"
    },
    {
      "id": "tags-listing",
      "description": "Tags/listing route selected to represent browse/index templates. The route returned homepage-equivalent metadata/content, which is itself recorded as an issue.",
      "url": "https://www.jennymovies.com/tags/",
      "conditions": [
        "desktop DOM"
      ],
      "result": "issues"
    },
    {
      "id": "contact-form",
      "description": "Contact form selected as the primary authored form and validation/recovery journey.",
      "url": "https://www.jennymovies.com/contact/",
      "conditions": [
        "viewport: 360x800",
        "empty invalid submission"
      ],
      "result": "issues"
    },
    {
      "id": "privacy-content",
      "description": "Privacy notice selected as the long-form legal/content template.",
      "url": "https://www.jennymovies.com/privacy-policy/",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    },
    {
      "id": "french-locale",
      "description": "French locale selected to test translated-route language and bidirectional/internationalisation readiness.",
      "url": "https://www.jennymovies.com/fr/",
      "conditions": [
        "desktop DOM"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Synthetic missing URL selected to inspect HTTP failure handling.",
      "url": "https://www.jennymovies.com/definitely-not-a-real-path-web-uplift/",
      "conditions": [
        "HTTP fetch"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "summary": "The interface ignores the user’s light/dark preference.",
      "evidence": "The dark-mode screenshot and computed DOM are unchanged; root color-scheme is normal and the CSS probe found zero prefers-color-scheme rules.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-dark-dom.json"
      ],
      "suggestedFix": "Declare color-scheme at document and root level and drive surface/text tokens from prefers-color-scheme or light-dark().",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F02",
      "severity": "medium",
      "confidence": "high",
      "summary": "Reduced-motion users still receive dozens of infinite shimmer animations.",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() returned 38 running shimmer animations with infinite iterations and the CSS contained zero reduced-motion rules.",
      "artifacts": [
        "evidence/reduced-motion.json"
      ],
      "suggestedFix": "Disable non-essential shimmer and transition motion inside @media (prefers-reduced-motion: reduce), preserving only essential state changes.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "high",
      "summary": "Page and state changes are abrupt despite browser support for View Transitions.",
      "evidence": "The feature probe confirmed document.startViewTransition is available but found zero authored view-transition usage across the multi-page navigation and disclosure states.",
      "artifacts": [
        "evidence/modern-features.json"
      ],
      "suggestedFix": "Add cross-document View Transitions for same-origin navigation and a small same-document transition for the verification disclosure, with reduced-motion handling.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "directional-navigation-transitions",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F04",
      "severity": "low",
      "confidence": "high",
      "summary": "Scroll-aware chrome is implemented as static/legacy class toggling rather than declarative scroll state.",
      "evidence": "CSS/DOM inspection shows a #goToTop .active class pattern and no scroll-state container query; the long content route provides a meaningful use case.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/privacy-desktop.png"
      ],
      "suggestedFix": "Use container-type: scroll-state and @container scroll-state(scrolled: top) where supported, retaining a lightweight fallback.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-position-aware-elements",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F05",
      "severity": "low",
      "confidence": "high",
      "summary": "Dropdown and overlay positioning does not use anchored fallback positioning.",
      "evidence": "The CSS probe found zero anchor-name, position-anchor, or position-try usage; dropdown containers are absolutely positioned.",
      "artifacts": [
        "evidence/modern-features.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Anchor menus to their triggers with CSS anchor positioning and position-try fallbacks, retaining the current absolute layout as fallback.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "position-aware-tooltips",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F06",
      "severity": "high",
      "confidence": "high",
      "summary": "The age-verification modal is a visual div, not an accessible modal, and background controls remain focusable.",
      "evidence": "The DOM probe found no dialog, role=dialog, aria-modal, popover, or inert content, while 30 header/navigation controls behind the overlay remain keyboard-focusable.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/modern-features.json",
        "evidence/platform-a11y.json"
      ],
      "suggestedFix": "Use a native <dialog> opened modally, label it, trap/restore focus through platform behavior, and make the underlying page inert while open.",
      "effort": "medium",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F07",
      "severity": "low",
      "confidence": "high",
      "summary": "Reusable components respond only to viewport breakpoints.",
      "evidence": "CSS inspection found zero @container rules or container-type declarations despite cards, form controls, and header components being reused at different widths.",
      "artifacts": [
        "evidence/modern-features.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Introduce container queries on reusable card/header/form regions and keep viewport media queries for page-level composition.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F08",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard focus is globally suppressed and invisible.",
      "evidence": "A focus walk over visible links, inputs, buttons, and modal options reported outline none and no box shadow; authored CSS includes :focus { outline: 0 }.",
      "artifacts": [
        "evidence/platform-a11y.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Remove the global focus reset and add a high-contrast :focus-visible indicator with sufficient offset on every interactive control.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "summary": "Required contact fields are not programmatically required and the error is not announced.",
      "evidence": "The contact form labels subject/message with *, but all controls have required=false. checkValidity() returned true on an empty form; JavaScript later inserted “Fill in fields correctly” into a generic status area.",
      "artifacts": [
        "evidence/contact-form.json",
        "evidence/contact-invalid-state.json",
        "evidence/contact-mobile.png"
      ],
      "suggestedFix": "Add native required constraints, aria-describedby/aria-invalid after interaction, and an aria-live or role=alert error summary that moves focus to the first invalid field.",
      "effort": "small",
      "pathId": "contact-form",
      "url": "https://www.jennymovies.com/contact/",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "accessibility"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "summary": "Static resources lack useful cache headers.",
      "evidence": "The HAR summary lists fonts and verification images among nine missing-cache-header signals; the stylesheet is parser-inserted at VeryHigh priority.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Set long-lived immutable caching on versioned fonts/images, keep HTML revalidated, and measure whether critical CSS should be reduced or inlined.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "performance",
      "guidanceCategory": "performance"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "summary": "The viewport explicitly disables user zoom.",
      "evidence": "Both axe and Lighthouse report the meta viewport `maximum-scale=0.8, user-scalable=0`, a WCAG-critical barrier for low-vision users.",
      "artifacts": [
        "evidence/axe.json",
        "evidence/lighthouse.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Use `width=device-width, initial-scale=1` and remove maximum-scale/user-scalable restrictions.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility"
    },
    {
      "id": "F12",
      "severity": "low",
      "confidence": "high",
      "summary": "Verification images omit intrinsic dimensions and one logo is delivered at the wrong density.",
      "evidence": "The images primitive found 5 of 6 images without width/height and one oversized image; Lighthouse also flags agego.webp as too low resolution for device density.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Add width/height to every image and provide correctly sized 1x/2x WebP/AVIF sources or srcset.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F13",
      "severity": "medium",
      "confidence": "high",
      "summary": "Public indexing signals conflict with the site’s sitemap and public routes.",
      "evidence": "The homepage returns HTTP 200 and appears in a current sitemap, but sends X-Robots-Tag: noindex,nofollow and meta robots noindex,follow; Lighthouse marks it non-crawlable.",
      "artifacts": [
        "evidence/site-discovery.txt",
        "evidence/platform-a11y.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Decide the intended indexing policy, then align response header, meta robots, robots.txt, and sitemap. Remove noindex from pages intended for discovery.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html"
    },
    {
      "id": "F14",
      "severity": "medium",
      "confidence": "high",
      "summary": "Browse routes and rich previews lack route-specific metadata.",
      "evidence": "The /tags/ route returned the homepage title and “Free Porn Movies” heading; homepage probes found no canonical, hreflang, Open Graph, or JSON-LD metadata.",
      "artifacts": [
        "evidence/tags-probe.json",
        "evidence/platform-a11y.json",
        "evidence/http-static-probes.txt"
      ],
      "suggestedFix": "Emit unique route titles/descriptions, canonical and hreflang links, and accurate Open Graph plus appropriate schema.org metadata.",
      "effort": "medium",
      "pathId": "tags-listing",
      "url": "https://www.jennymovies.com/tags/",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html"
    },
    {
      "id": "F15",
      "severity": "high",
      "confidence": "high",
      "summary": "The CSP permits any origin plus unsafe inline script and eval, and defensive headers are incomplete.",
      "evidence": "Headers show `default-src * data: blob: unsafe-inline unsafe-eval`, no X-Content-Type-Options, and no Permissions-Policy. HSTS and SAMEORIGIN are present.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Deploy a nonce/hash-based restrictive CSP in report-only mode first, then enforce it; add nosniff and a least-privilege Permissions-Policy.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security"
    },
    {
      "id": "F16",
      "severity": "medium",
      "confidence": "high",
      "summary": "Core forms do not progressively enhance without JavaScript.",
      "evidence": "The search input has no name and autocomplete=off, while contact validation relies on JavaScript even though native checkValidity reports an empty form valid; raw content itself is server-rendered.",
      "artifacts": [
        "evidence/recon.json",
        "evidence/contact-form.json",
        "evidence/contact-invalid-state.json",
        "evidence/home-discoverability.json"
      ],
      "suggestedFix": "Give successful controls names, use native constraints and server validation, and ensure search/contact submission and error responses work without JavaScript.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "forms",
      "guidanceCategory": "forms"
    },
    {
      "id": "F17",
      "severity": "low",
      "confidence": "high",
      "summary": "The site advertises a standalone web app but has no active service worker or offline fallback.",
      "evidence": "site.webmanifest declares display: standalone and a start_url, but the probe found no service-worker controller or registration in the page.",
      "artifacts": [
        "evidence/site-discovery.txt",
        "evidence/modern-features.json"
      ],
      "suggestedFix": "Either complete the PWA contract with a scoped service worker and useful offline fallback, or stop advertising standalone app behavior.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "html",
      "guidanceCategory": "html"
    },
    {
      "id": "F18",
      "severity": "high",
      "confidence": "high",
      "summary": "Localized routes declare the wrong document language and provide no hreflang.",
      "evidence": "On /fr/, html.lang remained `en`, dir was empty, no hreflang links existed, and the title remained English. CSS uses 24 physical left/right declarations and no logical inline properties.",
      "artifacts": [
        "evidence/french-i18n.json"
      ],
      "suggestedFix": "Set each locale’s correct lang, emit reciprocal hreflang links, localize route metadata, and migrate directional layout to logical properties.",
      "effort": "medium",
      "pathId": "french-locale",
      "url": "https://www.jennymovies.com/fr/",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "summary": "Contact form recovery is delayed to custom JavaScript instead of native, humane validation.",
      "evidence": "An empty submit produced a generic status message while native validity remained true, so errors are neither field-bound nor exposed at the moment and place of correction.",
      "artifacts": [
        "evidence/contact-invalid-state.json",
        "evidence/contact-form.json"
      ],
      "suggestedFix": "Use required and appropriate input types, then style :user-invalid and synchronize aria-invalid plus field-specific messages only after interaction.",
      "effort": "small",
      "pathId": "contact-form",
      "url": "https://www.jennymovies.com/contact/",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "required-field-feedback",
      "guidanceCategory": "forms"
    },
    {
      "id": "F20",
      "severity": "low",
      "confidence": "high",
      "summary": "Contact inputs omit autofill hints.",
      "evidence": "The name and email fields expose labels and the correct email type, but all contact controls have empty autocomplete values; search explicitly disables autocomplete.",
      "artifacts": [
        "evidence/contact-form.json"
      ],
      "suggestedFix": "Add `autocomplete=name` and `autocomplete=email`; only disable autocomplete where there is a documented privacy/security reason.",
      "effort": "trivial",
      "pathId": "contact-form",
      "url": "https://www.jennymovies.com/contact/",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "guidanceCategory": "forms"
    },
    {
      "id": "F21",
      "severity": "medium",
      "confidence": "high",
      "summary": "Hidden and placeholder cards run continuous shimmer work even when reduced motion is requested.",
      "evidence": "The reduced-motion probe observed 38 infinite shimmer animations, including underlying content hidden by the age gate; no reduced-motion or visibility pause rule exists.",
      "artifacts": [
        "evidence/reduced-motion.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Stop shimmer when content is hidden/offscreen and under reduced motion; prefer static placeholders and content-visibility for deferred sections.",
      "effort": "small",
      "pathId": "home-age-gate",
      "url": "https://www.jennymovies.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Make the age gate a real accessible modal and restore visible keyboard focus",
      "priority": 1,
      "findingIds": [
        "F06",
        "F08"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Restore user zoom and native, announced contact validation",
      "priority": 2,
      "findingIds": [
        "F09",
        "F11",
        "F19"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Tighten CSP and complete defensive response headers",
      "priority": 3,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Correct French language metadata and localized indexing signals",
      "priority": 4,
      "findingIds": [
        "F13",
        "F14",
        "F18"
      ],
      "guidanceId": "translator",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Respect dark, reduced-motion, and background-work preferences",
      "priority": 5,
      "findingIds": [
        "F01",
        "F02",
        "F21"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Progressively enhance search/contact and align the PWA contract",
      "priority": 6,
      "findingIds": [
        "F16",
        "F17"
      ],
      "guidanceId": "forms",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Improve caching and image sizing/density",
      "priority": 7,
      "findingIds": [
        "F10",
        "F12"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Adopt container, anchor, scroll-state, and View Transition primitives where they improve orientation",
      "priority": 8,
      "findingIds": [
        "F03",
        "F04",
        "F05",
        "F07"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Add contact autofill hints",
      "priority": 9,
      "findingIds": [
        "F20"
      ],
      "guidanceId": "forms",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 1500,
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-25T20-09-37-038Z"
}
