{
  "url": "https://s.shopee.co.id",
  "auditedAt": "2026-07-21T17:28:54.499Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "The requested bare short-link host consistently redirected to https://shope.ee/error_page. The audit therefore covers that reachable invalid-link error surface; no valid tokenized destination, catalog, checkout, or account flow was supplied.",
  "page": {
    "appType": "spa",
    "framework": "React-like SPA",
    "notes": "The entry URL 307 redirects cross-domain to a client-rendered generic error page."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "discoverability",
    "trace",
    "har",
    "lighthouse",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "curl robots/sitemap"
  ],
  "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": "other",
      "path": "evidence/app.css",
      "caption": "app",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/css-feature-scan.txt",
      "caption": "css feature scan",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/css-probe.json",
      "caption": "css probe",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/dark.png",
      "caption": "dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability",
      "caption": "discoverability",
      "findingIds": [
        "F014"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler",
      "findingIds": [
        "F014"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered",
      "findingIds": [
        "F014"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/dom-probe.json",
      "caption": "dom probe",
      "findingIds": [
        "F002",
        "F004",
        "F006",
        "F009",
        "F010",
        "F011",
        "F015"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/forced-colors.png",
      "caption": "forced colors",
      "condition": "forced-colors: active",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-plan.json",
      "caption": "guidance plan",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "guidance retrieved",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F012",
        "F013"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F007",
        "F014"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F002",
        "F015"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/layout-mobile.json",
      "caption": "layout mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": [
        "F003",
        "F004",
        "F005",
        "F006",
        "F007",
        "F008",
        "F009",
        "F010",
        "F016"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/load-trace-summary.json",
      "caption": "load trace summary",
      "findingIds": [
        "F003"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/load-trace.json",
      "caption": "load trace",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/network-summary.json",
      "caption": "network summary",
      "findingIds": [
        "F004",
        "F005",
        "F008",
        "F011",
        "F015",
        "F016",
        "F017"
      ]
    },
    {
      "type": "har",
      "path": "evidence/network.har",
      "caption": "network",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "reduced motion probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots-headers.txt",
      "caption": "robots headers",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots",
      "findingIds": [
        "F010"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap-headers.txt",
      "caption": "sitemap headers",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "sitemap",
      "findingIds": [
        "F011"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F017"
      ]
    },
    {
      "type": "other",
      "path": "evidence/vendors.css",
      "caption": "vendors",
      "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": "dark-mode screenshot and computed-style probe",
      "evidence": "Dark emulation remained a white surface with black text; computed color-scheme was normal and the CSS feature scan found no prefers-color-scheme rule.",
      "artifacts": [
        "evidence/dark.png",
        "evidence/css-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "reduced-motion evaluate probe",
      "evidence": "Under prefers-reduced-motion: reduce, the page exposed zero active animations and zero non-zero transitions.",
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "forced-colors screenshot plus Lighthouse accessibility audit",
      "evidence": "Forced-colors rendering kept the illustration and error text visible; Lighthouse reported no color-contrast violation.",
      "artifacts": [
        "evidence/forced-colors.png",
        "evidence/lighthouse-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "pass",
      "confidence": "high",
      "method": "DOM interaction inventory",
      "evidence": "The reached static error surface has no route/state control and therefore performs no abrupt state swap; active inventory found no transition interaction to mishandle.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/CSS and animation probes",
      "evidence": "The one-screen page has no scroll-linked motion or main-thread scroll animation; CSS and animation probes found no scroll animation implementation or active animation.",
      "artifacts": [
        "evidence/css-probe.json",
        "evidence/reduced-motion-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "DOM interaction inventory",
      "evidence": "Active inventory found no pointer-driven custom gesture, carousel, disclosure, drag target, or platform-fighting gesture handler on the static surface.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "mobile layout and DOM probes",
      "evidence": "The document fits one viewport and has no navigation chrome that remains static or obscures content while scrolling.",
      "artifacts": [
        "evidence/layout-mobile.json",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "high",
      "method": "DOM overlay inventory",
      "evidence": "Active inventory found no tooltip, popover, menu, dialog, or manually positioned overlay that could drift from its anchor.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "medium",
      "method": "screenshot and DOM navigation inventory",
      "evidence": "The one-screen error state presents a single centered message with no navigation movement or competing destination that loses the user’s attention.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "initial screenshots and overlay inventory",
      "evidence": "Desktop and mobile initial states contain only the error message; no overlay, interstitial, banner, dialog, or popover obscures it.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM overlay inventory",
      "evidence": "No overlay or rich disclosure control is present.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "No overlay or rich control is present."
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "desktop/mobile screenshots",
      "evidence": "The surface is visually sparse and gives nearly all of the viewport to the error content, with no app frame or decorative chrome.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "mobile layout metrics and screenshot",
      "evidence": "At 360x800, scrollWidth and clientWidth were both 360 with 0px horizontal overflow; the message reflowed legibly.",
      "artifacts": [
        "evidence/layout-mobile.json",
        "evidence/home-mobile.png"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "DOM/CSS component inventory",
      "evidence": "The reached page has one fixed error component and no reused component shown in differently sized containers.",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/css-feature-scan.txt"
      ],
      "reason": "No reusable multi-container component is exposed on this surface."
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "not-applicable",
      "confidence": "high",
      "method": "focusable-control inventory",
      "evidence": "The page has zero focusable elements, links, buttons, or inputs.",
      "artifacts": [
        "evidence/css-probe.json",
        "evidence/dom-probe.json"
      ],
      "reason": "No user input control exists on the reached surface."
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "medium",
      "method": "first-viewport screenshot and DOM text inventory",
      "evidence": "The visible message clearly states that the requested page cannot be found; there are no competing calls to action.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "not-applicable",
      "confidence": "high",
      "method": "entry redirect and control inventory",
      "evidence": "The bare short-link domain contains no encoded destination or transaction flow to complete.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/dom-probe.json"
      ],
      "reason": "A short-link token or product flow was not supplied, so there is no representative end-to-end task beyond handling the invalid root URL."
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "entry screenshot, redirect HAR, and control inventory",
      "evidence": "The page identifies a not-found state but offers no home link, retry, back action, search, or other recovery control; DOM probe found zero links and buttons.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/network-summary.json",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse and trace measurements",
      "evidence": "Mobile Lighthouse measured LCP/FCP at 4.48s (poor LCP); the trace corroborated a slower-than-needed 1.93s LCP in the local capture. CLS and TBT were 0.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/load-trace-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F003"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "layout-shift observer and Lighthouse",
      "evidence": "The mobile layout observer measured CLS 0 with no shifts; Lighthouse also measured CLS 0.",
      "artifacts": [
        "evidence/layout-mobile.json",
        "evidence/lighthouse-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "trace and layout long-task observers",
      "evidence": "The trace measured 0 long tasks and 0ms total blocking time; layout observation also recorded no long tasks.",
      "artifacts": [
        "evidence/load-trace-summary.json",
        "evidence/layout-mobile.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "HAR summary, live script attributes, and Lighthouse insights",
      "evidence": "The 307 redirect adds about 1.2s; all three parser-inserted scripts lack async/defer, and Lighthouse estimated 2.07s render-blocking savings plus 197KiB cache-lifetime savings.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/dom-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse code coverage and HAR weight",
      "evidence": "Lighthouse estimated 134KiB unused JavaScript: 76.7% of the vendor chunk and 54.4% of React, disproportionate for a static error message.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F005"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse accessibility and DOM inventory",
      "evidence": "There are no interactive controls, form fields, img or canvas elements requiring names/roles/labels; Lighthouse found no naming or role violation. The illustration is CSS decoration.",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse contrast audit and forced-colors screenshot",
      "evidence": "Lighthouse found no contrast violation, and the forced-colors capture retained visible text and illustration.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/forced-colors.png"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse axe audit and DOM landmark/heading probe",
      "evidence": "Lighthouse reported no main landmark; the DOM contains no h1-h6 headings or landmarks, leaving the error message structurally unlabelled.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "mobile screenshot",
      "evidence": "The short error text is centered, unclipped, and comfortably readable at 360px.",
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse meta-viewport audit and mobile layout",
      "evidence": "The viewport explicitly sets maximum-scale=1 and user-scalable=no; Lighthouse flags this as disabling zoom for low-vision users.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-dom.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F007"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse console audit and HAR HTTP errors",
      "evidence": "The page logs a failed-resource error because /static/favicon.ico returns HTTP 404.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F008"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM and image probes",
      "evidence": "The rendered document has an HTML doctype, UTF-8 charset, viewport metadata, and no img elements with sizing/aspect-ratio defects.",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/images.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse best-practices audits and DOM inventory",
      "evidence": "Beyond the separately recorded favicon console error, Lighthouse found no deprecated API/paste/prompt issue; the page has no inputs and triggered no permission UI.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "DOM metadata probe and Lighthouse SEO audit",
      "evidence": "The title is the generic implementation label “mkt single page application” and no meta description exists.",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F009"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "DOM link inventory, robots fetch, and Lighthouse SEO audit",
      "evidence": "The page has zero crawlable links, and /robots.txt returns the SPA HTML rather than valid robots directives; the viewport is present but disables scaling.",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/robots.txt",
        "evidence/lighthouse-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "HAR redirect plus canonical/robots/sitemap probes",
      "evidence": "The requested URL 307-redirects to a generic cross-domain error page with no canonical; both robots.txt and sitemap.xml resolve to the same app shell instead of valid indexing resources.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/dom-probe.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F011"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM metadata probe",
      "evidence": "The reached page is a generic error state rather than an article, product, organization, event, or other rich entity.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "This generic invalid-link error is not a rich entity that warrants structured data."
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "security headers, cookies, and HAR probes",
      "evidence": "HTTPS is used and no cookies were set, but the main response lacks CSP, HSTS, X-Content-Type-Options, framing protection, Referrer-Policy, and Permissions-Policy.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/network-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F012"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "medium",
      "method": "trackers, cookies, secrets, and HAR probes",
      "evidence": "No known trackers, cookies, or exposed secrets were found. Requests go only to Shopee-controlled delivery/redirect hosts and total 232KB.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/cookies.json",
        "evidence/secrets.json",
        "evidence/network-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM and load-state inspection",
      "evidence": "This error surface has no authentication flow and triggered no permission prompt.",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/home-desktop.png"
      ],
      "reason": "No authentication or permission-requiring feature is exposed."
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "security-header inspection",
      "evidence": "No HSTS, frame-ancestors/X-Frame-Options, Referrer-Policy, Permissions-Policy, or CSP defense is present.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F013"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "discoverability no-JS comparison and raw HTML",
      "evidence": "Only 20% of rendered content tokens were present in raw HTML; #root ships empty and noscript says JavaScript is required, so the actual error explanation is unavailable without JS.",
      "artifacts": [
        "evidence/discoverability",
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/home-dom.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F014"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "rendered screenshot and network/console inspection",
      "evidence": "The small runtime reaches a stable visible error state without clipped overlays or an infinite spinner; the only runtime error is the separately recorded favicon 404.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/layout-mobile.json",
        "evidence/lighthouse-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "manifest/service-worker surface probe",
      "evidence": "This bare redirect/error endpoint is not an installable application surface and advertises no manifest.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "Installability is not proportionate for a short-link redirect/error endpoint."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "issues",
      "confidence": "high",
      "method": "invalid-route response, screenshot, and recovery-control inventory",
      "evidence": "The invalid root redirects to a generic 200 error page, but provides no useful recovery option and even returns the same SPA shell for robots.txt/sitemap.xml rather than meaningful HTTP failure semantics.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/home-mobile.png",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F015"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM language and CSS feature inspection",
      "evidence": "The English error text is correctly marked html lang=en; the compact centered layout has no directional control or reading-order defect.",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/home-mobile.png",
        "evidence/css-feature-scan.txt"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "content inventory",
      "evidence": "No date, number, currency, duration, or locale-sensitive datum is rendered.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "No locale-sensitive data appears on this error page."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "content inventory",
      "evidence": "No times, events, recurrence, or time-zone-sensitive data is rendered.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "No time data appears on this error page."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "initial screenshots and control inventory",
      "evidence": "The error surface has no consent wall, upsell, disguised ad, continuity trap, or manipulative control.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "form inventory",
      "evidence": "No form or validation flow exists.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "No form exists on the reached surface."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "input inventory",
      "evidence": "No input field exists.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "No input exists on the reached surface."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "flow inventory",
      "evidence": "No checkout, subscription, consent, authentication, or account-management flow is exposed.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "No commercial or account flow exists on the reached surface."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "pass",
      "confidence": "medium",
      "method": "HAR asset weights and image audit",
      "evidence": "The two decorative PNG resources total about 10KB, and no img element has oversizing, legacy-format, or responsive-source defects.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/images.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse unused-code audit and HAR",
      "evidence": "The static 51-character error state loads 211KB of JavaScript and Lighthouse identifies 134KiB as unused, making the implementation materially heavier than the task requires.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F016"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR third-party and resource breakdown",
      "evidence": "231,974 of 232,120 transferred bytes come from cross-origin Shopee delivery/redirect hosts, predominantly React/vendor JavaScript, disproportionate to a static error message.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/trackers.json"
      ],
      "pathIds": [
        "entry-error"
      ],
      "findingIds": [
        "F017"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM capability inventory",
      "evidence": "The invalid-link error endpoint exposes no commerce/product action or other safe capability for an agent to invoke.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "This error endpoint has no agent-facing task or capability."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "page-purpose inspection",
      "evidence": "On-device inference would not improve this deterministic error message.",
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "reason": "AI inference is not proportionate to a static not-found response."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "not-applicable",
      "confidence": "high",
      "method": "interaction inventory",
      "evidence": "The page has no representative interaction to repeat; no synthetic interaction was fabricated.",
      "artifacts": [
        "evidence/dom-probe.json"
      ],
      "reason": "The static error page has no real repeatable interaction."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "heap summary",
      "evidence": "The loaded SPA error state retained 82,622 heap nodes and 4.29MB self size, a bounded single-state footprint with no evidence of runaway allocation.",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ],
      "pathIds": [
        "entry-error"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "heap constructor summary and interaction inventory",
      "evidence": "The baseline heap summary showed no Detached* constructor among the dominant populations; with no repeated interaction, no accumulating listener/timer path was present to exercise.",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/dom-probe.json"
      ],
      "pathIds": [
        "entry-error"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F003",
        "F004",
        "F005"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F006",
        "F007"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F008"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F009",
        "F010",
        "F011"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F012",
        "F013"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F014",
        "F015"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F016",
        "F017"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "Every defined check is inapplicable to the reached static error surface."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "entry-error",
      "description": "Bare short-link entry and its reached generic error surface. Represents the only reachable archetype from the supplied URL. Tokenized destinations, product/listing templates, search, checkout, and account flows were not covered because no valid short-link token or credentials were supplied.",
      "url": "https://s.shopee.co.id",
      "conditions": [
        "desktop initial load",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "forced-colors: active",
        "JavaScript-disabled crawler comparison"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F001",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "summary": "Add preference-driven dark theme support",
      "evidence": "The surface ignores prefers-color-scheme and remains hard-coded light.",
      "suggestedFix": "Add color-scheme: light dark and theme surface/text colors with light-dark() or a prefers-color-scheme rule.",
      "effort": "small",
      "artifacts": [
        "evidence/dark.png",
        "evidence/css-probe.json"
      ]
    },
    {
      "id": "F002",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "summary": "Provide a useful recovery path",
      "evidence": "The not-found message is a dead end with no link, retry, search, or way back.",
      "suggestedFix": "Add a clearly labelled recovery action such as “Go to Shopee”, “Try another link”, and a safe back action.",
      "effort": "small",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/dom-probe.json"
      ]
    },
    {
      "id": "F003",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Bring LCP into the good range",
      "evidence": "Mobile Lighthouse measured LCP/FCP at 4.48s for a minimal error page.",
      "suggestedFix": "Render the error message in the initial HTML and remove the redirect/client-rendering dependency so LCP does not wait on JavaScript.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/load-trace-summary.json"
      ]
    },
    {
      "id": "F004",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "performance",
      "summary": "Remove the render-blocking delivery chain",
      "evidence": "A 307 redirect precedes three classic scripts with no async/defer; Lighthouse estimates 2.07s render-blocking savings.",
      "suggestedFix": "Serve a small error document directly at the requested host; if scripts remain, defer non-critical code and set long immutable caching on hashed assets.",
      "effort": "medium",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/dom-probe.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F005",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "Stop shipping React/vendor code for the error page",
      "evidence": "Lighthouse estimates 134KiB unused JavaScript across React and the vendor bundle.",
      "suggestedFix": "Use a static server-rendered error template with no framework runtime, or split an error-only bundle that includes only essential code.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ]
    },
    {
      "id": "F006",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Give the error page semantic structure",
      "evidence": "The DOM has no main landmark and no heading; Lighthouse flags the missing main landmark.",
      "suggestedFix": "Wrap the error content in <main> and expose “Page not found” as an <h1>; keep DOM order aligned with the visual order.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/dom-probe.json"
      ]
    },
    {
      "id": "F007",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "css",
      "summary": "Allow users to zoom",
      "evidence": "The viewport contains maximum-scale=1 and user-scalable=no, which Lighthouse flags for low-vision users.",
      "suggestedFix": "Use width=device-width, initial-scale=1 and remove maximum-scale/minimum-scale/user-scalable restrictions.",
      "effort": "trivial",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-dom.json"
      ]
    },
    {
      "id": "F008",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "low",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Fix the broken favicon request",
      "evidence": "The favicon request returns 404 and produces a console error.",
      "suggestedFix": "Deploy the referenced /static/favicon.ico or update/remove the link so every requested asset resolves successfully.",
      "effort": "trivial",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ]
    },
    {
      "id": "F009",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Use descriptive page metadata",
      "evidence": "The title is “mkt single page application” and there is no meta description.",
      "suggestedFix": "Set a user-facing title such as “Link not found | Shopee” and a concise description of what happened and what to do next.",
      "effort": "trivial",
      "artifacts": [
        "evidence/dom-probe.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F010",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Serve a valid robots.txt and crawlable recovery link",
      "evidence": "/robots.txt returns HTML and the page has zero links.",
      "suggestedFix": "Serve plain-text robots directives at /robots.txt and include a real href recovery link in the error HTML.",
      "effort": "small",
      "artifacts": [
        "evidence/robots.txt",
        "evidence/dom-probe.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F011",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Correct indexing and status signals",
      "evidence": "The root cross-domain redirects to a generic 200 error page with no canonical; sitemap.xml also returns the SPA shell.",
      "suggestedFix": "Return an appropriate 404/410 for invalid links, preserve the requested origin where possible, and serve valid robots/sitemap resources plus intentional canonical policy.",
      "effort": "medium",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/dom-probe.json",
        "evidence/sitemap.xml"
      ]
    },
    {
      "id": "F012",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Add baseline security headers",
      "evidence": "The response lacks CSP, HSTS, nosniff, framing protection, Referrer-Policy, and Permissions-Policy.",
      "suggestedFix": "Add a restrictive CSP, HSTS, X-Content-Type-Options: nosniff, frame-ancestors or X-Frame-Options, strict referrer policy, and minimal Permissions-Policy.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json"
      ]
    },
    {
      "id": "F013",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Configure browser-enforced defenses",
      "evidence": "No browser policy header provides clickjacking, referrer, permissions, or origin/XSS defense.",
      "suggestedFix": "Define frame-ancestors, Referrer-Policy and Permissions-Policy, then tighten CSP and consider Trusted Types if the app injects HTML.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json"
      ]
    },
    {
      "id": "F014",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Render the error state without JavaScript",
      "evidence": "Raw HTML ships an empty #root and only 20% rendered-token coverage; noscript tells users to enable JavaScript.",
      "suggestedFix": "Server-render the complete error heading, explanation, and recovery links in HTML, then layer optional enhancements on top.",
      "effort": "medium",
      "artifacts": [
        "evidence/discoverability",
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "id": "F015",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-resilient",
      "principleCheckId": "network-and-http-failure-states",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "summary": "Use intentional HTTP error and recovery behavior",
      "evidence": "An invalid root becomes a generic 200 error state with no recovery, and infrastructure paths return the same shell.",
      "suggestedFix": "Return truthful HTTP statuses, dedicated robots/sitemap responses, and an actionable error state with retry/home/back options.",
      "effort": "medium",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/home-mobile.png",
        "evidence/dom-probe.json"
      ]
    },
    {
      "id": "F016",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance",
      "summary": "Use a lightweight error implementation",
      "evidence": "A 51-character message loads 211KB of JavaScript, 134KiB of which Lighthouse estimates is unused.",
      "suggestedFix": "Serve the error state as static HTML/CSS and avoid loading application/framework bundles until a feature needs them.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ]
    },
    {
      "id": "F017",
      "pathId": "entry-error",
      "url": "https://s.shopee.co.id",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "summary": "Reduce cross-origin delivery cost",
      "evidence": "Almost all 232KB transferred bytes are cross-origin Shopee assets, mostly framework code, for a static error response.",
      "suggestedFix": "Inline the tiny critical error styles and eliminate cross-origin scripts; cache any remaining hashed assets for a long lifetime.",
      "effort": "medium",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/trackers.json"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T001",
      "title": "Replace the redirecting client SPA error with a direct server-rendered, semantic, recoverable error response",
      "priority": 1,
      "findingIds": [
        "F002",
        "F003",
        "F004",
        "F005",
        "F006",
        "F009",
        "F010",
        "F011",
        "F014",
        "F015",
        "F016",
        "F017"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T002",
      "title": "Restore zoom and add user-preference theming",
      "priority": 2,
      "findingIds": [
        "F001",
        "F007"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T003",
      "title": "Add baseline response security policies",
      "priority": 3,
      "findingIds": [
        "F012",
        "F013"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T004",
      "title": "Fix the missing favicon and eliminate console errors",
      "priority": 4,
      "findingIds": [
        "F008"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 1,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T17-28-54-499Z"
}
