{
  "url": "https://kingbokep.tv",
  "auditedAt": "2026-07-21T13:47:52.736Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Representative five-path audit with all 58 catalog checks judged.",
  "page": {
    "appType": "mpa",
    "framework": "Astro",
    "notes": "Server-rendered Indonesian adult-video catalog with category, search, detail/player and recovery templates."
  },
  "evidenceUsed": [
    "dom",
    "screenshot",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "curl"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "component-specific-light-dark-theme",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "cross-document-transitions",
    "group-element-transitions",
    "faster-spa-view-transitions",
    "scrollytelling",
    "parallax-scroll-effects",
    "scroll-entry-exit-effects",
    "carousel-slide-effects",
    "physics-based-easing",
    "individual-transform-properties",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "dynamic-sibling-animations",
    "interactive-content-reveal",
    "pull-to-reveal",
    "swipe-to-remove",
    "shrinking-header-on-scroll",
    "scroll-progress-indicator",
    "scroll-position-aware-elements",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "soft-edge-content-fade",
    "scrollability-affordance-hints",
    "anchor-positioning-tab-underline",
    "position-aware-tooltips",
    "interest-triggered-tooltips",
    "interest-triggered-action-previews",
    "directional-navigation-transitions",
    "carousel-snap-highlights",
    "navigation-drawer",
    "stack-drill-down",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "declarative-dialog-popover-control",
    "animated-select-picker",
    "branded-select-styling",
    "brand-consistent-forms",
    "custom-select-picker-layouts",
    "rich-media-picker",
    "complex-shapes",
    "shaped-cutouts",
    "overflow-clipping-control",
    "visually-texture-content",
    "apply-webgl-shaders",
    "interactive-content-in-3d-scenes",
    "highlight-text-ranges",
    "prevent-text-wrapping",
    "customize-scrollbar-color-and-thickness",
    "export-html-media-from-canvas",
    "fluid-scaling",
    "calculate-with-intrinsic-sizes",
    "css-layout",
    "size-aware-styling",
    "content-based-styling",
    "child-state-based-styling",
    "design-token-reactivity",
    "dynamic-sibling-styling",
    "form-fields-automatically-fit-contents",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "required-field-feedback",
    "validate-input-after-interaction",
    "identify-inp-causes",
    "schedule-tasks-by-priority",
    "optimize-preload-priority",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "performance",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "optimize-image-priority",
    "conditional-async-dependencies",
    "expose-canvas-content-to-browser-features",
    "move-dom-element-without-losing-state",
    "precise-text-alignment",
    "visually-stable-mixed-fonts",
    "css",
    "html",
    "reduce-style-repetition",
    "security",
    "privacy",
    "batch-analytics-events",
    "full-session-analytics",
    "calculate-total-foreground-time",
    "passkeys",
    "passkey-registration",
    "passkey-authentication",
    "passkey-reauthentication",
    "passkey-conditional-create",
    "passkey-management",
    "flicker-free-client-side-ab-testing",
    "consistent-cross-document-transitions",
    "stabilize-reactive-state",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-top-layer-ui",
    "detect-initial-visibility-state",
    "sequence-distributed-events",
    "translator",
    "language-detection",
    "support-global-calendar-systems",
    "capture-location-agnostic-data",
    "format-human-readable-durations",
    "manage-recurring-intervals",
    "calculate-event-differentials",
    "coordinate-global-events",
    "model-partial-time-concepts",
    "search-hidden-content",
    "select-menu-interaction",
    "style-parent-with-has",
    "autofill-address-form",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "autofill-highlight-inputs",
    "deliver-optimized-decorative-images",
    "resolution-optimized-pseudo-elements",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "agentic-forms",
    "agentic-javascript-tools",
    "language-model",
    "summarizer"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile png",
      "condition": "viewport 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-light.png",
      "caption": "home light png",
      "condition": "prefers-color-scheme: light",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark png",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-mobile.png",
      "caption": "detail mobile png",
      "condition": "viewport 360x800",
      "findingIds": [
        "F010"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered png",
      "condition": "default",
      "findingIds": [
        "F004",
        "F005"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler png",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout json",
      "condition": "viewport 360x800",
      "findingIds": [
        "F003",
        "F006"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom json",
      "condition": "default",
      "findingIds": [
        "F002",
        "F003",
        "F011",
        "F012",
        "F018",
        "F022"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/category-dom.json",
      "caption": "category dom json",
      "condition": "default",
      "findingIds": [
        "F012"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/detail-dom.json",
      "caption": "detail dom json",
      "condition": "default",
      "findingIds": [
        "F004",
        "F005",
        "F016",
        "F017"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon json",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/preferences-platform.json",
      "caption": "preferences platform json",
      "condition": "default",
      "findingIds": [
        "F001",
        "F006"
      ]
    },
    {
      "type": "other",
      "path": "evidence/search-state.json",
      "caption": "search state json",
      "condition": "default",
      "findingIds": [
        "F018"
      ]
    },
    {
      "type": "other",
      "path": "evidence/404-state.json",
      "caption": "404 state json",
      "condition": "default",
      "findingIds": [
        "F018"
      ]
    },
    {
      "type": "other",
      "path": "evidence/detail-media-a11y.json",
      "caption": "detail media a11y json",
      "condition": "default",
      "findingIds": [
        "F010"
      ]
    },
    {
      "type": "other",
      "path": "evidence/pwa-scripts.json",
      "caption": "pwa scripts json",
      "condition": "default",
      "findingIds": [
        "F016",
        "F017"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace json",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary json",
      "condition": "default",
      "findingIds": [
        "F007",
        "F008",
        "F009"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home har",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary json",
      "condition": "default",
      "findingIds": [
        "F007",
        "F008",
        "F009",
        "F019",
        "F020",
        "F021"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "discoverability json",
      "condition": "default",
      "findingIds": [
        "F012",
        "F016",
        "F017",
        "F022"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers json",
      "condition": "default",
      "findingIds": [
        "F013",
        "F014",
        "F015"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies json",
      "condition": "default",
      "findingIds": [
        "F013",
        "F014",
        "F015"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers json",
      "condition": "default",
      "findingIds": [
        "F013",
        "F014",
        "F015"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets json",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images json",
      "condition": "default",
      "findingIds": [
        "F011",
        "F019",
        "F020",
        "F021"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse json",
      "condition": "prefers-color-scheme: light",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary json",
      "condition": "prefers-color-scheme: light",
      "findingIds": [
        "F007",
        "F008",
        "F009",
        "F010",
        "F011",
        "F019",
        "F020",
        "F021"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline heapsnapshot",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "heap post heapsnapshot",
      "condition": "default",
      "findingIds": []
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "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 corroborating evidence. The model chooses the method.",
      "evidence": "Light and dark emulation screenshots are byte-identical, and the DOM forces class=\"dark\" with black/purple computed surfaces.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-platform.json"
      ],
      "findingIds": [
        "F001"
      ]
    },
    {
      "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 chooses.",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() returned an empty list; there is no active motion to suppress.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-platform.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": "Lighthouse contrast audit scored 1.0, and focused controls retained visible rings under prefers-contrast: more.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-platform.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "a transition video of a route/state change shows whether it animates; the page source / ::view-transition usage corroborates. The model chooses.",
      "evidence": "DOM and stylesheet inspection found no authored view-transition rules or startViewTransition use across homepage-to-detail navigation.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "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": "The site does not present a scrollytelling or animated scroll experience; no scroll-linked animation is needed for its catalog flow.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "reason": "The site does not present a scrollytelling or animated scroll experience; no scroll-linked animation is needed for its catalog flow."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "CSS inspection for scroll-snap / overscroll-behavior / physics-based easing vs custom pointermove listeners. The model chooses.",
      "evidence": "The catalog and player expose ordinary links/buttons and native scrolling; there is no draggable, swipe-removal, or pull-to-reveal interaction to enhance.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "reason": "The catalog and player expose ordinary links/buttons and native scrolling; there is no draggable, swipe-removal, or pull-to-reveal interaction to enhance."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "a transition video of scrolling, or CSS inspection for scroll-state container queries. The model chooses.",
      "evidence": "The 3,253px mobile listing retains only a sticky header; no progress, scroll-position feedback, or scrollability cue was found.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F003"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "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": "No tooltip or anchored transient UI appears in the representative paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-dom.json"
      ],
      "reason": "No tooltip or anchored transient UI appears in the representative paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "CSS inspection for ::highlight / scroll-marker; a transition video can show whether attention is cued after navigation. The model chooses.",
      "evidence": "Visible headings, sticky navigation, search, current-page outline, and labelled Next control consistently cue the current state and next navigation action.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot on load, or a DOM probe for full-viewport overlays present before interaction. The model chooses.",
      "evidence": "Load screenshots and overlay probe found no full-viewport interstitial before interaction.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/detail-dom.json",
        "evidence/discoverability-rendered.png"
      ]
    },
    {
      "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": "The detail download flow uses a fixed div and manual class toggling, with no dialog/popover semantics or dialog role.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/detail-dom.json",
        "evidence/discoverability-rendered.png"
      ],
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "a screenshot plus layout metrics can show the proportion of the viewport given to chrome vs content. The model chooses.",
      "evidence": "Three unrelated 300px advertising creatives interrupt the listing/detail content, despite the footer claiming the service is ad-free.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/detail-dom.json",
        "evidence/discoverability-rendered.png"
      ],
      "findingIds": [
        "F005"
      ]
    },
    {
      "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": "At 360x800, layout measured scrollWidth=clientWidth=360 and horizontalOverflowPx=0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/preferences-platform.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": "At 360px the catalog changes to two columns and the navigation collapses; at desktop it uses four columns and expanded navigation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/preferences-platform.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "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": "The mobile menu button measures 40x32 CSS px, below the recommended 44x44 touch target, although keyboard focus is visible.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/preferences-platform.json"
      ],
      "findingIds": [
        "F006"
      ]
    },
    {
      "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 is obvious. The model chooses.",
      "evidence": "Homepage H1, search control, labelled cards, and detail play button make browsing/searching/watching actions explicit.",
      "pathIds": [
        "home",
        "search",
        "detail",
        "error-404"
      ],
      "artifacts": [
        "evidence/search-state.json",
        "evidence/404-state.json",
        "evidence/detail-media-a11y.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 chooses.",
      "evidence": "The search journey returned four results and the detail route exposed an operable labelled Play Video control without an auth wall.",
      "pathIds": [
        "home",
        "search",
        "detail",
        "error-404"
      ],
      "artifacts": [
        "evidence/search-state.json",
        "evidence/404-state.json",
        "evidence/detail-media-a11y.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 sensible. The model chooses.",
      "evidence": "A real unknown route returned HTTP 404 with a localized explanation and a Go to Home recovery action; search reports its result count.",
      "pathIds": [
        "home",
        "search",
        "detail",
        "error-404"
      ],
      "artifacts": [
        "evidence/search-state.json",
        "evidence/404-state.json",
        "evidence/detail-media-a11y.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 first-party. The model chooses.",
      "evidence": "Mobile Lighthouse measured LCP 5.5s (score 0.19), despite low CLS and TBT.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F007"
      ]
    },
    {
      "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": "Mobile layout observed CLS 0.00384 and Lighthouse measured CLS 0.00016; no meaningful jump was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/images.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "the layout primitive records long tasks; a heap summary shows the object population; Lighthouse reports TBT. The model chooses.",
      "evidence": "Trace recorded zero long tasks and 0ms TBT; Lighthouse TBT was 10ms.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/images.json"
      ]
    },
    {
      "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 discovery, render-blocking, font-display and document latency. The model chooses.",
      "evidence": "HAR recorded 425,282 transferred bytes; the largest image was a 76KB banner, and all 53 images lacked explicit width/height attributes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F008"
      ]
    },
    {
      "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 chooses.",
      "evidence": "Lighthouse estimated 103KiB unused JavaScript, chiefly Google Tag Manager (68KB waste) and Yandex Metrika (38KB waste).",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F009"
      ]
    },
    {
      "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 model chooses.",
      "evidence": "Lighthouse image-alt and label audits scored 1.0; DOM shows labelled nav, cards, player controls, and search button.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/detail-media-a11y.json",
        "evidence/detail-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": "Lighthouse color-contrast audit scored 1.0 on the homepage.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/detail-media-a11y.json",
        "evidence/detail-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": "Lighthouse heading-order scored 1.0; focus probe found visible browser or custom rings on the primary interactive controls.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/detail-media-a11y.json",
        "evidence/detail-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": "Mobile/detail screenshots show readable 16px search text, clear heading hierarchy, and bounded card titles on a high-contrast dark surface.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/detail-media-a11y.json",
        "evidence/detail-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 model chooses.",
      "evidence": "The representative detail video contains no <track> captions; the 40x32 menu target is also undersized.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/detail-media-a11y.json",
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "F010"
      ]
    },
    {
      "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": "Lighthouse errors-in-console audit scored 1.0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images.json",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "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": "The document has HTML doctype, UTF-8 and viewport metadata, but the images primitive found 53/53 img elements without width/height attributes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F011"
      ]
    },
    {
      "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": "Lighthouse found valid source maps and no bfcache blocker; the page does not prompt for permissions on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images.json",
        "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": "Homepage, category and detail DOM each contain specific titles and meta descriptions.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json",
        "evidence/category-dom.json",
        "evidence/detail-dom.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "a DOM probe for anchor hrefs, viewport meta, and robots; Lighthouse SEO audits corroborate. The model chooses.",
      "evidence": "Lighthouse crawlable anchors, link text, crawlability and viewport audits scored 1.0; raw HTML contains real href links.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json",
        "evidence/category-dom.json",
        "evidence/detail-dom.json"
      ]
    },
    {
      "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": "The homepage returns 200, declares its canonical, robots.txt allows crawling, and /sitemap-0.xml returns 200.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json",
        "evidence/category-dom.json",
        "evidence/detail-dom.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "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 chooses.",
      "evidence": "Homepage has WebSite JSON-LD and OG text fields but no og:image, so shared catalog links lack a defined visual preview.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json",
        "evidence/category-dom.json",
        "evidence/detail-dom.json"
      ],
      "findingIds": [
        "F012"
      ]
    },
    {
      "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": "HTTPS and HSTS are present, but CSP and X-Content-Type-Options are absent.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/secrets.json"
      ],
      "findingIds": [
        "F013"
      ]
    },
    {
      "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": "HAR attributed 26/27 requests and 416,680/425,282 bytes to third-party origins; Google and Yandex tracking starts on load without an observed consent step.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/secrets.json"
      ],
      "findingIds": [
        "F014"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "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": "No account, authentication, or permission-requesting journey exists in the representative public catalog paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/secrets.json"
      ],
      "reason": "No account, authentication, or permission-requesting journey exists in the representative public catalog paths."
    },
    {
      "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 findings. The model chooses.",
      "evidence": "No frame protection, Referrer-Policy, or Permissions-Policy is sent; analytics cookies include SameSite=None and two non-Secure 400-day cookies.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/secrets.json"
      ],
      "findingIds": [
        "F015"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "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": "Discoverability found 100% raw/rendered content coverage with title, H1 and description present without JavaScript.",
      "pathIds": [
        "home",
        "detail",
        "error-404"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/detail-dom.json",
        "evidence/pwa-scripts.json",
        "evidence/404-state.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "exercise menus near viewport edges with a screenshot; a probe of async/visibility behaviour. The model chooses.",
      "evidence": "The download overlay is a manually managed fixed div/iframe rather than a top-layer primitive with robust focus and dismissal behavior.",
      "pathIds": [
        "home",
        "detail",
        "error-404"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/detail-dom.json",
        "evidence/pwa-scripts.json",
        "evidence/404-state.json"
      ],
      "findingIds": [
        "F016"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "a probe for a service worker registration and a web app manifest; test behaviour offline. The model chooses.",
      "evidence": "A standalone web app manifest is advertised, but navigator.serviceWorker.getRegistrations() returned no registration, so the installable promise has no offline fallback.",
      "pathIds": [
        "home",
        "detail",
        "error-404"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/detail-dom.json",
        "evidence/pwa-scripts.json",
        "evidence/404-state.json"
      ],
      "findingIds": [
        "F017"
      ]
    },
    {
      "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 model chooses.",
      "evidence": "The real 404 path returns status 404 and presents localized recovery copy plus a home link.",
      "pathIds": [
        "home",
        "detail",
        "error-404"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/detail-dom.json",
        "evidence/pwa-scripts.json",
        "evidence/404-state.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "not-applicable",
      "confidence": "high",
      "method": "a DOM probe for <html lang>/dir and CSS inspection for logical vs physical properties. The model chooses.",
      "evidence": "The Indonesian-only site correctly declares lang=\"id\"; no RTL or multilingual product scope was observed.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/detail-dom.json"
      ],
      "reason": "The Indonesian-only site correctly declares lang=\"id\"; no RTL or multilingual product scope was observed."
    },
    {
      "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": "No locale-switching scope or user-entered locale-sensitive numeric/currency data exists; one fixed Indonesian publication date is displayed.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/detail-dom.json"
      ],
      "reason": "No locale-switching scope or user-entered locale-sensitive numeric/currency data exists; one fixed Indonesian publication date is displayed."
    },
    {
      "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": "The site has no scheduling, event coordination, or user-facing time-zone flow.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/detail-dom.json"
      ],
      "reason": "The site has no scheduling, event coordination, or user-facing time-zone flow."
    },
    {
      "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": "The footer states \"100% Gratis Tanpa Iklan\" while multiple advertising creatives and two analytics systems are present.",
      "pathIds": [
        "home",
        "search",
        "error-404"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/search-state.json",
        "evidence/404-state.json"
      ],
      "findingIds": [
        "F018"
      ]
    },
    {
      "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": "The only required form is search; native required validation is deferred to submission, and the 404 state explains recovery without blame.",
      "pathIds": [
        "home",
        "search",
        "error-404"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/search-state.json",
        "evidence/404-state.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": "The search field has a stable name, search enter-key hint, descriptive placeholder and native input behavior; no identity/payment fields need autofill tokens.",
      "pathIds": [
        "home",
        "search",
        "error-404"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/search-state.json",
        "evidence/404-state.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "walkthrough checkout/subscription/auth/account flows when present; screenshot pricing, confirmation, cancellation and reauthentication states; inspect passkey/autocomplete support for sign-in and payment. The model chooses.",
      "evidence": "No checkout, subscription, sign-in, payment, or account-management flow exists on the audited origin.",
      "pathIds": [
        "home",
        "search",
        "error-404"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/search-state.json",
        "evidence/404-state.json"
      ],
      "reason": "No checkout, subscription, sign-in, payment, or account-management flow exists on the audited origin."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "inspect transferred image bytes vs displayed size; source inspection for modern formats and resolution handling. The model chooses.",
      "evidence": "Images use WebP widely, but 53/53 lack intrinsic dimensions, 27 lack responsive sources, and the 300px banner transfers 76KB.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F019"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "a long-task / network probe for background fetches and processing while idle or backgrounded. The model chooses.",
      "evidence": "Two analytics stacks execute on initial load; Lighthouse attributes about 103KiB of unused JavaScript to them.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F020"
      ]
    },
    {
      "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 keeps work running. The model chooses.",
      "evidence": "Third-party delivery accounts for 98% of transferred bytes, including 246KB scripts, before the user starts media.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F021"
      ]
    },
    {
      "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": "Content is crawlable, but source inspection found no WebMCP/tool registration or machine-invokable search capability.",
      "pathIds": [
        "home",
        "search"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F022"
      ]
    },
    {
      "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": "The catalog has no summarisation, generation, or other inference task that would benefit from built-in on-device AI.",
      "pathIds": [
        "home",
        "search"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json"
      ],
      "reason": "The catalog has no summarisation, generation, or other inference task that would benefit from built-in on-device AI."
    },
    {
      "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 -> repeat -> post -> compare). Performance.getMetrics (JSHeapUsedSize, Nodes) across the same before/after ",
      "evidence": "After ten open/close menu cycles, heap self size rose only 80,917 bytes (1.4%) and nodes by 846, consistent with warm-up rather than unbounded retention.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "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 against the page's purpose. Chrome DevTools MCP heap snapshots and memlab snapshot analysis can provide",
      "evidence": "Baseline heap summary was 5,926,660 self-size bytes and 132,723 nodes, proportionate to the static catalog plus analytics.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "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 counts (e.g. getEventListeners-style counting, or instrumenting addEventListener/setInterval) before and ",
      "evidence": "Across ten menu cycles, closures rose by 9 and arrays by 4; no growing Detached* constructor appears in the summary.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F003"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F004",
        "F005"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F007",
        "F008",
        "F009"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F011"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F012"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F013",
        "F014",
        "F015"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F016",
        "F017"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "The Indonesian-only site correctly declares lang=\"id\"; no RTL or multilingual product scope was observed. No locale-switching scope or user-entered locale-sensitive numeric/currency data exists; one fixed Indonesian publication date is displayed. The site has no scheduling, event coordination, or user-facing time-zone flow."
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F018"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F019",
        "F020",
        "F021"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F022"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage catalog/listing, global chrome, preferences, mobile layout, performance, security and discoverability. Represents paginated listings.",
      "url": "https://kingbokep.tv/",
      "conditions": [
        "desktop",
        "viewport 360x800",
        "prefers-color-scheme light/dark",
        "prefers-reduced-motion reduce",
        "prefers-contrast more"
      ],
      "result": "issues"
    },
    {
      "id": "category",
      "description": "Category listing archetype; validates template-specific metadata and catalog navigation.",
      "url": "https://kingbokep.tv/category/indonesia/",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    },
    {
      "id": "detail",
      "description": "Primary watch/detail journey with video player, related content and download overlay.",
      "url": "https://kingbokep.tv/view/kolpri-kak-anjani-pemain-basket/",
      "conditions": [
        "viewport 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Primary search journey using query “test”; validates form completion and result state.",
      "url": "https://kingbokep.tv/search/?keyword=test",
      "conditions": [
        "viewport 360x800"
      ],
      "result": "pass"
    },
    {
      "id": "error-404",
      "description": "Unknown route recovery and HTTP failure template.",
      "url": "https://kingbokep.tv/nonexistent-audit-path",
      "conditions": [
        "viewport 360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F001",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Forced dark theme ignores the light color preference",
      "evidence": "Light/dark screenshots are byte-identical; html is permanently class=\"dark\".",
      "suggestedFix": "Declare color-scheme and use prefers-color-scheme/light-dark() so light-preferring users receive a light palette.",
      "effort": "small",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-platform.json"
      ]
    },
    {
      "id": "F002",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Route changes have no continuity transition",
      "evidence": "DOM/CSS inspection found no authored view-transition usage between catalog and detail pages.",
      "suggestedFix": "Add progressive cross-document view transitions for same-origin catalog/detail navigation, with reduced-motion handling.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "id": "F003",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-progress-indicator",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Long listings provide no scroll-state feedback",
      "evidence": "The mobile homepage is 3,253px tall and exposes no progress or position feedback.",
      "suggestedFix": "Add a lightweight scroll progress/position affordance or a persistent back-to-top/navigation cue.",
      "effort": "small",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-dom.json"
      ]
    },
    {
      "id": "F004",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Download overlay is a non-semantic fixed div",
      "evidence": "Detail DOM shows a fixed div/iframe opened and dismissed by manual class toggles, without dialog semantics.",
      "suggestedFix": "Use <dialog> with showModal(), close(), focus return, Escape support and an accessible name.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/detail-dom.json",
        "evidence/discoverability-rendered.png"
      ]
    },
    {
      "id": "F005",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "reduce visual clutter maximize content",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Advertising creatives interrupt the content hierarchy",
      "evidence": "Homepage/detail DOM inserts 300x100 and 300x250 unrelated creatives among primary content.",
      "suggestedFix": "Remove or clearly label and consolidate advertising into reserved, non-disruptive placements.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/detail-dom.json",
        "evidence/discoverability-rendered.png"
      ]
    },
    {
      "id": "F006",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "touch target size hover fallback pointer input focus-visible",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Mobile menu target is undersized",
      "evidence": "Focus/geometry probe measured the menu button at 40x32 CSS px.",
      "suggestedFix": "Increase the interactive menu target to at least 44x44 CSS px while retaining focus-visible styling.",
      "effort": "trivial",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/preferences-platform.json"
      ]
    },
    {
      "id": "F007",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Mobile LCP is slow",
      "evidence": "Lighthouse measured 5.5s LCP with a 0.19 LCP audit score.",
      "suggestedFix": "Identify the LCP element, prioritize it, reduce server/third-party contention, and verify LCP under mobile throttling.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "id": "F008",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Image delivery lacks intrinsic sizing and responsive selection",
      "evidence": "Images audit found 53 missing dimensions and 27 missing srcset values; HAR shows a 76KB banner.",
      "suggestedFix": "Add width/height or aspect-ratio, responsive srcset/sizes, and prioritize only the actual LCP image.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "id": "F009",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Analytics ships substantial unused JavaScript",
      "evidence": "Lighthouse estimated 103KiB unused JS in GTM and Yandex Metrika.",
      "suggestedFix": "Remove one analytics stack or defer consented analytics until after the critical render.",
      "effort": "small",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "id": "F010",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Video has no caption track",
      "evidence": "Detail media probe found one video and zero <track> elements.",
      "suggestedFix": "Provide synchronized WebVTT captions and expose caption selection in the player.",
      "effort": "large",
      "pathId": "detail",
      "url": "https://kingbokep.tv/view/kolpri-kak-anjani-pemain-basket/",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/detail-media-a11y.json",
        "evidence/detail-mobile.png"
      ]
    },
    {
      "id": "F011",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Images omit intrinsic dimensions",
      "evidence": "The images primitive reports missing width/height attributes on all 53 homepage images.",
      "suggestedFix": "Emit intrinsic width and height for every image, preserving aspect ratio in responsive CSS.",
      "effort": "small",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images.json",
        "evidence/home-dom.json"
      ]
    },
    {
      "id": "F012",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "structured data schema.org json-ld open graph social preview metadata",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Homepage has no Open Graph image",
      "evidence": "Homepage DOM contains OG title/description/url but no og:image; detail pages do have one.",
      "suggestedFix": "Add a representative og:image and matching Twitter image for homepage/category templates.",
      "effort": "trivial",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json",
        "evidence/category-dom.json"
      ]
    },
    {
      "id": "F013",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Core security headers are missing",
      "evidence": "Headers primitive found no CSP and no X-Content-Type-Options, though HSTS is present.",
      "suggestedFix": "Deploy a restrictive CSP and X-Content-Type-Options: nosniff, testing CSP in report-only mode first.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json"
      ]
    },
    {
      "id": "F014",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Tracking starts before any observed consent",
      "evidence": "26/27 requests and 416,680 bytes are third-party; Google and Yandex trackers execute on load.",
      "suggestedFix": "Minimize to one analytics provider and gate non-essential tracking behind informed consent.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json"
      ]
    },
    {
      "id": "F015",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Defensive policies and cookie protections are incomplete",
      "evidence": "No frame, referrer or permissions policy is sent; two analytics cookies are non-Secure and last 400 days.",
      "suggestedFix": "Add frame-ancestors, Referrer-Policy and Permissions-Policy; set Secure/Lax cookies and shorten retention.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json"
      ]
    },
    {
      "id": "F016",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "persistent-top-layer-ui",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Custom overlay lacks robust top-layer behavior",
      "evidence": "The download iframe overlay has no dialog role, focus trap, declarative Escape close, or focus restoration.",
      "suggestedFix": "Move it to <dialog>, preserve opener focus, and handle load/error/cancel states explicitly.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/detail-dom.json",
        "evidence/pwa-scripts.json"
      ]
    },
    {
      "id": "F017",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "offline fallback service worker web app manifest installable pwa",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Standalone manifest has no service worker",
      "evidence": "Manifest display is standalone, but service-worker registration probe returned an empty list.",
      "suggestedFix": "Either remove the installable-app signal or add a scoped service worker with a useful offline fallback.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/detail-dom.json",
        "evidence/pwa-scripts.json"
      ]
    },
    {
      "id": "F018",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "honest defaults no dark patterns confirmshaming forced continuity consent",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Ad-free claim contradicts the rendered experience",
      "evidence": "Footer says “100% Gratis Tanpa Iklan” while multiple ad creatives and tracking systems load.",
      "suggestedFix": "Remove the claim or remove the ads and disclose analytics clearly.",
      "effort": "trivial",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/search-state.json",
        "evidence/404-state.json"
      ]
    },
    {
      "id": "F019",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Asset markup wastes responsive delivery opportunities",
      "evidence": "53 images lack dimensions and 27 lack responsive sources; one banner costs 76KB.",
      "suggestedFix": "Generate right-sized WebP/AVIF variants with srcset/sizes and explicit dimensions.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F020",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Two analytics stacks perform avoidable work",
      "evidence": "GTM and Yandex execute at load and account for about 103KiB unused JavaScript.",
      "suggestedFix": "Consolidate analytics and schedule consented, non-critical collection after the page becomes interactive.",
      "effort": "small",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F021",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "third-party scripts fonts video autoplay media budget cache resource efficiency",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Third parties dominate page weight",
      "evidence": "HAR reports 416,680 of 425,282 transferred bytes from third-party origins.",
      "suggestedFix": "Set a third-party byte/request budget, self-host stable assets where appropriate, and remove redundant trackers.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F022",
      "principleId": "be-agent-ready",
      "principleCheckId": "structured-agent-capabilities",
      "guidanceId": "webmcp",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Search capability is not exposed as an agent tool",
      "evidence": "The catalog is crawlable, but DOM/source inspection found no WebMCP or equivalent machine-invokable tool registration.",
      "suggestedFix": "Progressively expose search and video lookup as clearly described agent tools while keeping the HTML form fallback.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://kingbokep.tv/",
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-dom.json"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T001",
      "title": "Remove the claim or remove the ads and disclose analytics clearly.",
      "priority": 1,
      "findingIds": [
        "F018"
      ],
      "guidanceId": "honest defaults no dark patterns confirmshaming forced continuity consent",
      "status": "open"
    },
    {
      "id": "T002",
      "title": "Identify the LCP element, prioritize it, reduce server/third-party contention, and verify LCP under mobile throttling.",
      "priority": 2,
      "findingIds": [
        "F007"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T003",
      "title": "Deploy a restrictive CSP and X-Content-Type-Options: nosniff, testing CSP in report-only mode first.",
      "priority": 3,
      "findingIds": [
        "F013"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T004",
      "title": "Minimize to one analytics provider and gate non-essential tracking behind informed consent.",
      "priority": 4,
      "findingIds": [
        "F014"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T005",
      "title": "Add frame-ancestors, Referrer-Policy and Permissions-Policy; set Secure/Lax cookies and shorten retention.",
      "priority": 5,
      "findingIds": [
        "F015"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T006",
      "title": "Set a third-party byte/request budget, self-host stable assets where appropriate, and remove redundant trackers.",
      "priority": 6,
      "findingIds": [
        "F021"
      ],
      "guidanceId": "third-party scripts fonts video autoplay media budget cache resource efficiency",
      "status": "open"
    },
    {
      "id": "T007",
      "title": "Provide synchronized WebVTT captions and expose caption selection in the player.",
      "priority": 7,
      "findingIds": [
        "F010"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T008",
      "title": "Increase the interactive menu target to at least 44x44 CSS px while retaining focus-visible styling.",
      "priority": 8,
      "findingIds": [
        "F006"
      ],
      "guidanceId": "touch target size hover fallback pointer input focus-visible",
      "status": "open"
    },
    {
      "id": "T009",
      "title": "Declare color-scheme and use prefers-color-scheme/light-dark() so light-preferring users receive a light palette.",
      "priority": 9,
      "findingIds": [
        "F001"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T010",
      "title": "Remove one analytics stack or defer consented analytics until after the critical render.",
      "priority": 10,
      "findingIds": [
        "F009"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T011",
      "title": "Emit intrinsic width and height for every image, preserving aspect ratio in responsive CSS.",
      "priority": 11,
      "findingIds": [
        "F011"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T012",
      "title": "Consolidate analytics and schedule consented, non-critical collection after the page becomes interactive.",
      "priority": 12,
      "findingIds": [
        "F020"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    },
    {
      "id": "T013",
      "title": "Use <dialog> with showModal(), close(), focus return, Escape support and an accessible name.",
      "priority": 13,
      "findingIds": [
        "F004"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T014",
      "title": "Remove or clearly label and consolidate advertising into reserved, non-disruptive placements.",
      "priority": 14,
      "findingIds": [
        "F005"
      ],
      "guidanceId": "reduce visual clutter maximize content",
      "status": "open"
    },
    {
      "id": "T015",
      "title": "Add width/height or aspect-ratio, responsive srcset/sizes, and prioritize only the actual LCP image.",
      "priority": 15,
      "findingIds": [
        "F008"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T016",
      "title": "Move it to <dialog>, preserve opener focus, and handle load/error/cancel states explicitly.",
      "priority": 16,
      "findingIds": [
        "F016"
      ],
      "guidanceId": "persistent-top-layer-ui",
      "status": "open"
    },
    {
      "id": "T017",
      "title": "Either remove the installable-app signal or add a scoped service worker with a useful offline fallback.",
      "priority": 17,
      "findingIds": [
        "F017"
      ],
      "guidanceId": "offline fallback service worker web app manifest installable pwa",
      "status": "open"
    },
    {
      "id": "T018",
      "title": "Generate right-sized WebP/AVIF variants with srcset/sizes and explicit dimensions.",
      "priority": 18,
      "findingIds": [
        "F019"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T019",
      "title": "Add a representative og:image and matching Twitter image for homepage/category templates.",
      "priority": 19,
      "findingIds": [
        "F012"
      ],
      "guidanceId": "structured data schema.org json-ld open graph social preview metadata",
      "status": "open"
    },
    {
      "id": "T020",
      "title": "Add a lightweight scroll progress/position affordance or a persistent back-to-top/navigation cue.",
      "priority": 20,
      "findingIds": [
        "F003"
      ],
      "guidanceId": "scroll-progress-indicator",
      "status": "open"
    },
    {
      "id": "T021",
      "title": "Add progressive cross-document view transitions for same-origin catalog/detail navigation, with reduced-motion handling.",
      "priority": 21,
      "findingIds": [
        "F002"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    },
    {
      "id": "T022",
      "title": "Progressively expose search and video lookup as clearly described agent tools while keeping the HTML form fallback.",
      "priority": 22,
      "findingIds": [
        "F022"
      ],
      "guidanceId": "webmcp",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T13-47-52-736Z"
}
