{
  "url": "https://www.bikewale.com",
  "auditedAt": "2026-07-20T05:22:10.841Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete representative audit of six paths. Excluded: login/account, used-bike sale, dealership lead submission, checkout-like lead completion, and individual article pages because they require identity/location or duplicate audited templates.",
  "page": {
    "appType": "hybrid",
    "framework": "React-like SSR plus legacy calculator template",
    "notes": "Public Indian motorcycle marketplace/content site. High raw-HTML coverage, PWA manifest, no active service worker."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "discoverability",
    "HAR",
    "trace",
    "images",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "Lighthouse",
    "heap-summary",
    "HTTP fetch"
  ],
  "guidanceConsulted": [
    "accessibility",
    "accessible-error-announcement",
    "adapt-scrollbar-to-contrast-preferences",
    "agentic-forms",
    "agentic-javascript-tools",
    "anchor-positioning-tab-underline",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "animated-select-picker",
    "apply-webgl-shaders",
    "autofill-address-form",
    "autofill-highlight-inputs",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "batch-analytics-events",
    "brand-consistent-forms",
    "branded-select-styling",
    "break-up-long-tasks",
    "calculate-event-differentials",
    "calculate-total-foreground-time",
    "calculate-with-intrinsic-sizes",
    "capture-location-agnostic-data",
    "carousel-slide-effects",
    "carousel-snap-highlights",
    "child-state-based-styling",
    "complex-shapes",
    "component-specific-light-dark-theme",
    "conditional-async-dependencies",
    "consistent-cross-document-transitions",
    "content-based-styling",
    "coordinate-global-events",
    "cross-document-transitions",
    "css-layout",
    "css",
    "custom-select-picker-layouts",
    "customize-scrollbar-color-and-thickness",
    "dark-mode",
    "declarative-dialog-popover-control",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "design-token-reactivity",
    "detect-initial-visibility-state",
    "directional-navigation-transitions",
    "dynamic-sibling-animations",
    "dynamic-sibling-styling",
    "efficient-background-processing",
    "export-html-media-from-canvas",
    "expose-canvas-content-to-browser-features",
    "faster-spa-view-transitions",
    "flicker-free-client-side-ab-testing",
    "fluid-scaling",
    "form-fields-automatically-fit-contents",
    "format-human-readable-durations",
    "forms",
    "full-session-analytics",
    "group-element-transitions",
    "highlight-text-ranges",
    "html",
    "identify-heavy-scripts",
    "identify-inp-causes",
    "improve-next-page-load-performance",
    "improve-text-layout-and-legibility",
    "individual-transform-properties",
    "interactions-in-complex-layouts",
    "interactive-content-in-3d-scenes",
    "interactive-content-reveal",
    "interest-triggered-action-previews",
    "interest-triggered-tooltips",
    "language-detection",
    "language-model",
    "light-dismiss-a-dialog",
    "manage-recurring-intervals",
    "model-partial-time-concepts",
    "move-dom-element-without-losing-state",
    "navigation-drawer",
    "optimize-image-priority",
    "optimize-preload-priority",
    "optimize-script-priority",
    "overflow-clipping-control",
    "parallax-scroll-effects",
    "passkey-authentication",
    "passkey-conditional-create",
    "passkey-management",
    "passkey-reauthentication",
    "passkey-registration",
    "passkeys",
    "performance",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "persistent-top-layer-ui",
    "physics-based-easing",
    "platform-controls-dismiss-dialog",
    "position-aware-tooltips",
    "precise-text-alignment",
    "prevent-text-wrapping",
    "privacy",
    "pull-to-reveal",
    "reduce-style-repetition",
    "required-field-feedback",
    "resilient-context-menus-and-nested-dropdowns",
    "resolution-optimized-pseudo-elements",
    "rich-media-picker",
    "same-document-transitions",
    "schedule-tasks-by-priority",
    "scroll-entry-exit-effects",
    "scroll-position-aware-elements",
    "scroll-progress-indicator",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "scrollability-affordance-hints",
    "scrollytelling",
    "search-hidden-content",
    "security",
    "select-menu-interaction",
    "sequence-distributed-events",
    "shaped-cutouts",
    "shrinking-header-on-scroll",
    "size-aware-styling",
    "soft-edge-content-fade",
    "stabilize-reactive-state",
    "stack-drill-down",
    "style-parent-with-has",
    "summarizer",
    "support-global-calendar-systems",
    "swipe-to-remove",
    "translator",
    "validate-input-after-interaction",
    "visually-stable-font-fallbacks",
    "visually-stable-mixed-fonts",
    "visually-texture-content",
    "webmcp"
  ],
  "artifacts": [
    {
      "type": "dom",
      "path": "evidence/detail-dom.json",
      "caption": "detail dom",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-mobile.png",
      "caption": "detail mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "BW-006",
        "BW-007",
        "BW-009",
        "BW-028",
        "BW-031",
        "BW-034"
      ]
    },
    {
      "type": "other",
      "path": "evidence/error-404-probe.json",
      "caption": "error 404 probe",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/finance-dark.png",
      "caption": "finance dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "BW-001"
      ]
    },
    {
      "type": "other",
      "path": "evidence/finance-form-probe.json",
      "caption": "finance form probe",
      "findingIds": [
        "BW-019",
        "BW-032",
        "BW-033"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/finance-layout-mobile.json",
      "caption": "finance layout mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "BW-022"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/finance-mobile.png",
      "caption": "finance mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "BW-011",
        "BW-013"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "home cookies",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-css-feature-probe.json",
      "caption": "home css feature probe",
      "findingIds": [
        "BW-003",
        "BW-004",
        "BW-030"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-focus-probe.json",
      "caption": "home focus probe",
      "findingIds": [
        "BW-012",
        "BW-021"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "home headers",
      "findingIds": [
        "BW-025",
        "BW-027"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-post.json",
      "caption": "home heap post",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/home-heap.json",
      "caption": "home heap",
      "findingIds": [
        "BW-039"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images",
      "findingIds": [
        "BW-023",
        "BW-035"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "home layout mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "BW-010"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-light.png",
      "caption": "home light",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse-details.json",
      "caption": "home lighthouse details",
      "findingIds": [
        "BW-002",
        "BW-008",
        "BW-018",
        "BW-020",
        "BW-024",
        "BW-036"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse.json",
      "caption": "home lighthouse",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "BW-005"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-probe.json",
      "caption": "home probe",
      "findingIds": [
        "BW-038"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-pwa-probe.json",
      "caption": "home pwa probe",
      "findingIds": [
        "BW-029"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-reduced-motion.json",
      "caption": "home reduced motion",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "home secrets",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "BW-017",
        "BW-037"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "BW-016"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "home trackers",
      "findingIds": [
        "BW-026"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/listing-layout-mobile.json",
      "caption": "listing layout mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "BW-014",
        "BW-015"
      ]
    }
  ],
  "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": "Active/visual audit following HINT (not mandatory): 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": "Dark emulation retints the home page, but the EMI calculator remains a white legacy layout under prefers-color-scheme: dark.",
      "pathIds": [
        "finance"
      ],
      "artifacts": [
        "evidence/finance-dark.png"
      ],
      "findingIds": [
        "BW-001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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, matchMedia was true and getAnimations() returned no running animations.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-reduced-motion.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 found seven contrast failures, including 4.03:1 EV badges, 3.69:1 Install Now text, and 4.24:1 review text.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "findingIds": [
        "BW-002"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a transition video of a route/state change shows whether it animates; the page source / ::view-transition usage corroborates. The model chooses.",
      "evidence": "CSS/DOM feature probe found no view-transition declarations or startViewTransition usage across the home template.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-css-feature-probe.json"
      ],
      "findingIds": [
        "BW-003"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "Feature probe found no animation-timeline, scroll-timeline, or view-timeline usage while the page presents multiple horizontal tracks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-css-feature-probe.json"
      ],
      "findingIds": [
        "BW-004"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: CSS inspection for scroll-snap / overscroll-behavior / physics-based easing vs custom pointermove listeners. The model chooses.",
      "evidence": "Feature probe found no scroll-snap or overscroll-behavior; mobile screenshots show partially clipped cards and tabs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "BW-005"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: a transition video of scrolling, or CSS inspection for scroll-state container queries. The model chooses.",
      "evidence": "Screenshots show persistent navigation and clear active tab indicators across home/listing/detail paths.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "The 360 px product screenshot shows the ad, EMI card, offer button, AI strip, and controls overlapping; no anchor positioning or position-try usage was found.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "BW-006"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: CSS inspection for ::highlight / scroll-marker; a transition video can show whether attention is cued after navigation. The model chooses.",
      "evidence": "Screenshots show headings, active tabs, and a prominent primary search or calculator action.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a screenshot on load, or a DOM probe for full-viewport overlays present before interaction. The model chooses.",
      "evidence": "On the TVS iQube mobile detail page, an ad and multiple floating controls overlap the product image, price card, offer action, and each other.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "BW-007"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: DOM/source inspection for popover / <dialog> / <details> vs custom overlay divs with manual dismiss handling. The model chooses.",
      "evidence": "Lighthouse reports a role=button whose aria-label is [object Object], while DOM probes found no dialog or popover primitives.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "findingIds": [
        "BW-008"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a screenshot plus layout metrics can show the proportion of the viewport given to chrome vs content. The model chooses.",
      "evidence": "The mobile product viewport devotes most visible space to an ad, floating EMI panel, tabs, offer button, AI prompt, and icons rather than product information.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "BW-009"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: layout metrics (scrollWidth vs innerWidth) and a screenshot at an emulated narrow mobile viewport reveal overflow. The model chooses.",
      "evidence": "Layout measurements at 360 px found overflow of 126 px home, 81 px listing, 95 px detail, 84 px news, and 600 px EMI calculator.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json"
      ],
      "findingIds": [
        "BW-010"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "Feature probe found no container queries; the EMI calculator remains 960 px wide in a 360 px viewport and product widgets overlap.",
      "pathIds": [
        "finance"
      ],
      "artifacts": [
        "evidence/finance-mobile.png"
      ],
      "findingIds": [
        "BW-011"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 focus probe found inputs and buttons with outline none 0px and no box-shadow, including Search and check-price buttons.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-focus-probe.json"
      ],
      "findingIds": [
        "BW-012"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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": "Home first viewport states “Find the right bike” with a prominent search; listing/detail/calculator H1s state their purpose.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "At 360 px the calculator is 600 px wider than the viewport; headings, explanatory text, term options, and results area are cut off.",
      "pathIds": [
        "finance"
      ],
      "artifacts": [
        "evidence/finance-mobile.png"
      ],
      "findingIds": [
        "BW-013"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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": "The exercised 404 returns HTTP 404, explains the missing page, and offers Back to Home plus useful links.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/error-404-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "The mobile listing layout observer measured CLS 0.617 across four shifts; Lighthouse home LCP was 3.02 s and TBT 198 ms.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/listing-layout-mobile.json"
      ],
      "findingIds": [
        "BW-014"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: the layout primitive's CLS observer captures shifts; a transition video of the first seconds shows content jumping. The model chooses.",
      "evidence": "Layout evidence records four listing shifts between 1.42 s and 1.52 s, totalling CLS 0.617; all 100 audited images lacked width/height attributes.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/listing-layout-mobile.json"
      ],
      "findingIds": [
        "BW-015"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: the layout primitive records long tasks; a heap summary shows the object population; Lighthouse reports TBT. The model chooses.",
      "evidence": "Trace recorded two long tasks up to 98.86 ms and 87.74 ms TBT; mobile layout runs also recorded repeated 50-90 ms tasks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "BW-016"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 captured 95 requests and 1.93 MB transferred, including 62 scripts/1.61 MB; 91 requests and 1.86 MB were classified third-party.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "BW-017"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 533 KiB unused JavaScript and 41 KiB unused CSS, including multiple vendor bundles with 80-99% waste.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "findingIds": [
        "BW-018"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 found an accessible-name mismatch where View More Brands exposes aria-label=\"[object Object]\"; the EMI probe found multiple unlabeled text, radio, textarea, and select controls.",
      "pathIds": [
        "finance"
      ],
      "artifacts": [
        "evidence/finance-form-probe.json"
      ],
      "findingIds": [
        "BW-019"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: axe contrast rules, a Lighthouse contrast audit, or an in-page probe computing contrast ratios from computed colours. The model chooses.",
      "evidence": "Lighthouse enumerated seven color-contrast failures from 3.69:1 to 4.24:1.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "findingIds": [
        "BW-020"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: axe/Lighthouse structural audits; a focus-walk probe (tab through, read activeElement + computed outline) is a first-party alternative. The model chooses.",
      "evidence": "Lighthouse reports no main landmark; focus probing found multiple buttons/inputs with no visible outline or shadow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-focus-probe.json"
      ],
      "findingIds": [
        "BW-021"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: a screenshot of body and heading text, plus CSS inspection for text-wrap / text alignment / font fallback handling. The model chooses.",
      "evidence": "Representative screenshots show readable body sizing and clear heading hierarchy; metadata probes found one H1 on each path.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "All five templates overflow at 360 px, with the EMI calculator overflowing by 600 px despite a zoom-permitting viewport meta tag.",
      "pathIds": [
        "finance"
      ],
      "artifacts": [
        "evidence/finance-layout-mobile.json"
      ],
      "findingIds": [
        "BW-022"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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 with no items.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a DOM/source probe for doctype/charset/img dimensions; CSS inspection for repetition; Lighthouse best-practices audits cover the rest. The model chooses.",
      "evidence": "Image audit found 100/100 images missing width and height and 72 below-fold images without lazy loading; one image lacked alt text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "BW-023"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 the page ineligible for bfcache because the main resource and a JavaScript request use Cache-Control: no-store.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "findingIds": [
        "BW-024"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: a DOM probe reads <title> and meta[name=description]; Lighthouse SEO audits cover the same ground. The model chooses.",
      "evidence": "All five representative DOM captures have distinct titles, descriptions, and one H1.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: a DOM probe for anchor hrefs, viewport meta, and robots; Lighthouse SEO audits corroborate. The model chooses.",
      "evidence": "Home has 234 href-bearing links, viewport metadata, robots.txt, and 97% raw-HTML content coverage.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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": "Home exposes a canonical URL; robots.txt and sitemap.xml respond, and the tested missing route returns HTTP 404.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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": "Home probe found one JSON-LD block and six Open Graph tags.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "Headers include HSTS/nosniff, but CSP allows unsafe-inline and unsafe-eval; cookie audit found four cookies without Secure and many SameSite=None cookies.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "BW-025"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: inspect network requests and third-party origins; a probe of analytics/beacon calls. The model chooses.",
      "evidence": "Tracker evidence found nine third-party origins including GTM and DoubleClick; HAR attributes 91 requests and 1.86 MB to third-party origins.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trackers.json"
      ],
      "findingIds": [
        "BW-026"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: a probe for permission requests fired on load; source inspection for passkey / WebAuthn / navigator.credentials usage in auth flows. The model chooses.",
      "evidence": "No permission prompt fired on load across audited public paths; authentication was not required for their core tasks.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "CSP permits scripts from any origin plus unsafe-inline and unsafe-eval; several long-lived cookies use SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "BW-027"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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 capture found 97% content coverage in raw HTML and isJsShell=false.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: exercise menus near viewport edges with a screenshot; a probe of async/visibility behaviour. The model chooses.",
      "evidence": "Product detail overlays collide and obscure each other at 360 px, with no anchor positioning fallback detected.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "BW-028"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a probe for a service worker registration and a web app manifest; test behaviour offline. The model chooses.",
      "evidence": "The manifest is complete with icons, shortcuts and standalone display, but navigator.serviceWorker.getRegistrations() returned an empty array.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-pwa-probe.json"
      ],
      "findingIds": [
        "BW-029"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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 exercised invalid URL returns a clear 404 state with recovery navigation.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/error-404-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a DOM probe for <html lang>/dir and CSS inspection for logical vs physical properties. The model chooses.",
      "evidence": "The page declares lang=en, but the CSS probe found physical left/right properties and no logical properties; the header exposes language selection.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-css-feature-probe.json"
      ],
      "findingIds": [
        "BW-030"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: source inspection for Intl.* usage vs hand-rolled formatting; a probe of rendered dates/numbers under a different locale. The model chooses.",
      "evidence": "Audited pages declare lang=en and present Indian rupee prices and Indian-number grouping consistently.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/detail-dom.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "",
      "reason": "Representative pages contain no event scheduling or user-facing time-zone conversion."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a screenshot of consent/upsell/cancel flows; source inspection for declarative button actions vs misleading controls. The model chooses.",
      "evidence": "The product mobile screenshot layers an ad, Get July Offers action, EMI card, and AI prompt over the product surface.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "BW-031"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 EMI page uses unlabeled controls, radio inputs without label association, no required attributes, and only one aria-live region.",
      "pathIds": [
        "finance"
      ],
      "artifacts": [
        "evidence/finance-form-probe.json"
      ],
      "findingIds": [
        "BW-032"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: source/DOM inspection for autocomplete attributes on form fields; a probe of autofill affordances. The model chooses.",
      "evidence": "Most public inputs have empty autocomplete values, while several EMI controls have no names or labels.",
      "pathIds": [
        "finance"
      ],
      "artifacts": [
        "evidence/finance-form-probe.json"
      ],
      "findingIds": [
        "BW-033"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "On the product detail path, price/offer controls and content overlap with ads and floating widgets, reducing confidence in the next action.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "BW-034"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: inspect transferred image bytes vs displayed size; source inspection for modern formats and resolution handling. The model chooses.",
      "evidence": "Image audit found 57 oversized images, 17 without srcset, four legacy-format assets, and all 100 without intrinsic dimensions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "BW-035"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: a long-task / network probe for background fetches and processing while idle or backgrounded. The model chooses.",
      "evidence": "HAR shows 62 scripts and trace shows two long tasks; Lighthouse estimates 533 KiB unused JavaScript.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "findingIds": [
        "BW-036"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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": "HAR attributes 1.86 MB of 1.93 MB and 91 of 95 requests to third-party origins, led by CDN bundles and Google tags.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "BW-037"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: source inspection for WebMCP / agentic-tool registration and agent-readable affordances. The model chooses.",
      "evidence": "The public task-heavy marketplace exposes structured metadata but the probe found no WebMCP or agent tool registration.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "BW-038"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "",
      "reason": "The bike search/catalog tasks do not require on-device generative inference; no product inference feature was observed."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT (not mandatory): 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 window is corroboration. If Chrome DevTools MCP is available, follow its memory-leak-debugging skill: capture baseline, target, and final snapshots, then use memlab or the provided comparison workflow rather than reading raw .heapsnapshot files directly. The package-native `heap` primitive remains the default path. This check is only meaningful where the page has a real interaction to repeat; for a static page with none, mark it not-applicable with a rationale rather than fabricating one. The model chooses.",
      "evidence": "After ten repeated bottom/top scroll cycles, heap changed by only 54 nodes and 14,472 bytes, with no material retained growth.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-heap-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Active/visual audit following HINT: 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 the same memory distribution when available. Read summaries or derived analysis, never raw snapshots unless a dedicated heap-analysis tool is doing the analysis. The model chooses.",
      "evidence": "Heap summary recorded 559,221 nodes, 2,436,718 edges, and 30.82 MB self size for the landing page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap.json"
      ],
      "findingIds": [
        "BW-039"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Direct inspection across the representative paths following HINT: 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 after the repeated interaction to spot growth. Chrome DevTools MCP heap snapshots plus the memory-leak-debugging skill's common-leak guidance can corroborate detached DOM, listeners, closures, globals, and unbounded caches. Caveat from the memory-tracer and Chrome DevTools MCP guidance: detached nodes can be intentional caches, so judge confidence rather than asserting a bug. The model chooses.",
      "evidence": "Before/post heap summaries show negligible node growth (559,221 to 559,275) and no Detached constructor in reported top populations.",
      "pathIds": [
        "home",
        "listing",
        "detail",
        "news",
        "finance",
        "error404"
      ],
      "artifacts": [
        "evidence/home-heap-post.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-001",
        "BW-002"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-003",
        "BW-004",
        "BW-005"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-006"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-007",
        "BW-008",
        "BW-009"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-010",
        "BW-011",
        "BW-012"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-013"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-014",
        "BW-015",
        "BW-016",
        "BW-017",
        "BW-018"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-019",
        "BW-020",
        "BW-021",
        "BW-022"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-023",
        "BW-024"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-025",
        "BW-026",
        "BW-027"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "BW-028",
        "BW-029"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "BW-030"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-031",
        "BW-032",
        "BW-033",
        "BW-034"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "BW-035",
        "BW-036",
        "BW-037"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "BW-038"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "BW-039"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and bike-search entry point; represents global navigation, theme, hero, and merchandising modules.",
      "url": "https://www.bikewale.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: light/dark",
        "prefers-reduced-motion: reduce",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "New-bikes listing; represents browse/filter/index template and late-loading card grids.",
      "url": "https://www.bikewale.com/new-bikes-in-india/",
      "conditions": [
        "viewport: 360x800",
        "layout-shift observation"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "TVS iQube detail; represents high-value product evaluation, pricing, ads, ratings and lead actions.",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "news",
      "description": "News index; represents editorial/listing content.",
      "url": "https://www.bikewale.com/news/",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "finance",
      "description": "EMI calculator; represents the primary interactive form/calculation journey and legacy template.",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "conditions": [
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "submit default values"
      ],
      "result": "issues"
    },
    {
      "id": "error404",
      "description": "Unknown route; represents HTTP failure and recovery.",
      "url": "https://www.bikewale.com/this-route-does-not-exist-atomic-audit/",
      "conditions": [
        "HTTP 404"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "BW-001",
      "severity": "medium",
      "confidence": "high",
      "summary": "Theme support is inconsistent across templates",
      "evidence": "Dark emulation retints the home page, but the EMI calculator remains a white legacy layout under prefers-color-scheme: dark.",
      "suggestedFix": "Apply color-scheme and shared light/dark design tokens to the EMI calculator template.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/finance-dark.png"
      ],
      "pathId": "finance",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "effort": "medium"
    },
    {
      "id": "BW-002",
      "severity": "medium",
      "confidence": "high",
      "summary": "Dark-theme text and controls miss contrast requirements",
      "evidence": "Lighthouse found seven contrast failures, including 4.03:1 EV badges, 3.69:1 Install Now text, and 4.24:1 review text.",
      "suggestedFix": "Raise foreground/background contrast to at least WCAG AA and test both themes.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-003",
      "severity": "low",
      "confidence": "high",
      "summary": "Route and state changes do not use view transitions",
      "evidence": "CSS/DOM feature probe found no view-transition declarations or startViewTransition usage across the home template.",
      "suggestedFix": "Use same-document or cross-document View Transitions for meaningful route and state continuity, with reduced-motion fallbacks.",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-css-feature-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-004",
      "severity": "low",
      "confidence": "high",
      "summary": "Scrollable presentations rely on clipped tracks without modern scroll-linked feedback",
      "evidence": "Feature probe found no animation-timeline, scroll-timeline, or view-timeline usage while the page presents multiple horizontal tracks.",
      "suggestedFix": "Use CSS scroll-driven animation only where it clarifies carousel or reading progress, avoiding main-thread scroll handlers.",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "scroll-driven-animations",
      "guidanceId": "scroll-snap-realtime-feedback",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-css-feature-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-005",
      "severity": "medium",
      "confidence": "high",
      "summary": "Horizontal bike tracks lack native gesture containment and snapping",
      "evidence": "Feature probe found no scroll-snap or overscroll-behavior; mobile screenshots show partially clipped cards and tabs.",
      "suggestedFix": "Use overflow-x:auto with scroll-snap and overscroll-behavior for predictable touch navigation.",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "physical-gestures",
      "guidanceId": "carousel-slide-effects",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-006",
      "severity": "medium",
      "confidence": "high",
      "summary": "Floating detail-page UI collides at the viewport edge",
      "evidence": "The 360 px product screenshot shows the ad, EMI card, offer button, AI strip, and controls overlapping; no anchor positioning or position-try usage was found.",
      "suggestedFix": "Anchor floating UI to its trigger and provide position-try fallbacks, or remove competing floating elements.",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "position-aware-tooltips",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-007",
      "severity": "high",
      "confidence": "high",
      "summary": "Advertising and floating prompts obstruct the primary product content",
      "evidence": "On the TVS iQube mobile detail page, an ad and multiple floating controls overlap the product image, price card, offer action, and each other.",
      "suggestedFix": "Reserve a non-obstructive ad slot and delay optional prompts; never cover product content or the primary action.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "large"
    },
    {
      "id": "BW-008",
      "severity": "medium",
      "confidence": "high",
      "summary": "Expandable and floating controls use custom semantics",
      "evidence": "Lighthouse reports a role=button whose aria-label is [object Object], while DOM probes found no dialog or popover primitives.",
      "suggestedFix": "Use native button, dialog, and popover semantics with correct accessible names and light dismiss.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-009",
      "severity": "high",
      "confidence": "high",
      "summary": "Chrome and monetisation overwhelm the product detail surface",
      "evidence": "The mobile product viewport devotes most visible space to an ad, floating EMI panel, tabs, offer button, AI prompt, and icons rather than product information.",
      "suggestedFix": "Reduce simultaneous sticky/floating UI and establish one clear primary action.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "interactive-content-reveal",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "large"
    },
    {
      "id": "BW-010",
      "severity": "high",
      "confidence": "high",
      "summary": "Every representative mobile template overflows horizontally",
      "evidence": "Layout measurements at 360 px found overflow of 126 px home, 81 px listing, 95 px detail, 84 px news, and 600 px EMI calculator.",
      "suggestedFix": "Replace fixed/min-width layouts with fluid sizing, wrapping, and responsive overflow patterns.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-layout-mobile.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "large"
    },
    {
      "id": "BW-011",
      "severity": "high",
      "confidence": "high",
      "summary": "Components do not adapt to their available width",
      "evidence": "Feature probe found no container queries; the EMI calculator remains 960 px wide in a 360 px viewport and product widgets overlap.",
      "suggestedFix": "Introduce container-type and component breakpoints, with intrinsic sizing fallbacks.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/finance-mobile.png"
      ],
      "pathId": "finance",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "effort": "large"
    },
    {
      "id": "BW-012",
      "severity": "medium",
      "confidence": "high",
      "summary": "Several interactive controls have no visible keyboard focus",
      "evidence": "The focus probe found inputs and buttons with outline none 0px and no box-shadow, including Search and check-price buttons.",
      "suggestedFix": "Use :focus-visible with a high-contrast outline and preserve touch target sizing.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-focus-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-013",
      "severity": "high",
      "confidence": "high",
      "summary": "The EMI calculation journey is clipped on mobile",
      "evidence": "At 360 px the calculator is 600 px wider than the viewport; headings, explanatory text, term options, and results area are cut off.",
      "suggestedFix": "Reflow the calculator into one mobile column and keep inputs, terms, submit action, and result visible.",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "forms",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/finance-mobile.png"
      ],
      "pathId": "finance",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "effort": "large"
    },
    {
      "id": "BW-014",
      "severity": "high",
      "confidence": "high",
      "summary": "The listing template has severe layout instability",
      "evidence": "The mobile listing layout observer measured CLS 0.617 across four shifts; Lighthouse home LCP was 3.02 s and TBT 198 ms.",
      "suggestedFix": "Reserve space for late content and prioritise the LCP resource; verify field CWV after deployment.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/listing-layout-mobile.json"
      ],
      "pathId": "listing",
      "url": "https://www.bikewale.com/new-bikes-in-india/",
      "effort": "large"
    },
    {
      "id": "BW-015",
      "severity": "high",
      "confidence": "high",
      "summary": "Late listing content causes large visual shifts",
      "evidence": "Layout evidence records four listing shifts between 1.42 s and 1.52 s, totalling CLS 0.617; all 100 audited images lacked width/height attributes.",
      "suggestedFix": "Set intrinsic dimensions or aspect-ratio for media and reserve stable component/ad slots.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/listing-layout-mobile.json"
      ],
      "pathId": "listing",
      "url": "https://www.bikewale.com/new-bikes-in-india/",
      "effort": "large"
    },
    {
      "id": "BW-016",
      "severity": "medium",
      "confidence": "high",
      "summary": "Script execution creates avoidable blocking work",
      "evidence": "Trace recorded two long tasks up to 98.86 ms and 87.74 ms TBT; mobile layout runs also recorded repeated 50-90 ms tasks.",
      "suggestedFix": "Break up long work, defer non-critical widgets, and schedule lower-priority tasks.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "guidanceId": "break-up-long-tasks",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-trace-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-017",
      "severity": "high",
      "confidence": "high",
      "summary": "The page ships a large, script-heavy dependency graph",
      "evidence": "HAR captured 95 requests and 1.93 MB transferred, including 62 scripts/1.61 MB; 91 requests and 1.86 MB were classified third-party.",
      "suggestedFix": "Prioritise critical CSS/images, defer optional bundles and analytics, and reduce dependency depth.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "large"
    },
    {
      "id": "BW-018",
      "severity": "high",
      "confidence": "high",
      "summary": "More than half a megabyte of JavaScript is unused on load",
      "evidence": "Lighthouse estimated 533 KiB unused JavaScript and 41 KiB unused CSS, including multiple vendor bundles with 80-99% waste.",
      "suggestedFix": "Code-split by route/interaction and load analytics and optional vendors conditionally.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "large"
    },
    {
      "id": "BW-019",
      "severity": "high",
      "confidence": "high",
      "summary": "Accessible names and labels are incomplete",
      "evidence": "Lighthouse found an accessible-name mismatch where View More Brands exposes aria-label=\"[object Object]\"; the EMI probe found multiple unlabeled text, radio, textarea, and select controls.",
      "suggestedFix": "Associate every control with a visible label and ensure accessible names contain visible text.",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/finance-form-probe.json"
      ],
      "pathId": "finance",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "effort": "large"
    },
    {
      "id": "BW-020",
      "severity": "medium",
      "confidence": "high",
      "summary": "Several dark-theme elements fail WCAG AA contrast",
      "evidence": "Lighthouse enumerated seven color-contrast failures from 3.69:1 to 4.24:1.",
      "suggestedFix": "Adjust theme tokens and verify normal and large text contrast in all states.",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-021",
      "severity": "high",
      "confidence": "high",
      "summary": "Main landmark and focus indication are incomplete",
      "evidence": "Lighthouse reports no main landmark; focus probing found multiple buttons/inputs with no visible outline or shadow.",
      "suggestedFix": "Wrap primary content in main and define consistent :focus-visible styles.",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-focus-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "large"
    },
    {
      "id": "BW-022",
      "severity": "high",
      "confidence": "high",
      "summary": "Content does not reflow at narrow/zoom-equivalent widths",
      "evidence": "All five templates overflow at 360 px, with the EMI calculator overflowing by 600 px despite a zoom-permitting viewport meta tag.",
      "suggestedFix": "Meet WCAG reflow by removing fixed widths and retaining controls/content at 320 CSS px.",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/finance-layout-mobile.json"
      ],
      "pathId": "finance",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "effort": "large"
    },
    {
      "id": "BW-023",
      "severity": "medium",
      "confidence": "high",
      "summary": "Images omit intrinsic dimensions and lazy-loading hints",
      "evidence": "Image audit found 100/100 images missing width and height and 72 below-fold images without lazy loading; one image lacked alt text.",
      "suggestedFix": "Emit width/height or aspect-ratio and lazy-load non-critical images.",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-024",
      "severity": "medium",
      "confidence": "high",
      "summary": "Cache policy prevents back/forward cache restoration",
      "evidence": "Lighthouse found the page ineligible for bfcache because the main resource and a JavaScript request use Cache-Control: no-store.",
      "suggestedFix": "Limit no-store to sensitive responses and test the navigation lifecycle for bfcache eligibility.",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-025",
      "severity": "high",
      "confidence": "high",
      "summary": "CSP and cookie flags weaken an otherwise strong HTTPS baseline",
      "evidence": "Headers include HSTS/nosniff, but CSP allows unsafe-inline and unsafe-eval; cookie audit found four cookies without Secure and many SameSite=None cookies.",
      "suggestedFix": "Adopt nonce/hash-based CSP without unsafe-eval and set Secure/SameSite attributes appropriate to each cookie.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "large"
    },
    {
      "id": "BW-026",
      "severity": "high",
      "confidence": "high",
      "summary": "The landing page has a large analytics and third-party footprint",
      "evidence": "Tracker evidence found nine third-party origins including GTM and DoubleClick; HAR attributes 91 requests and 1.86 MB to third-party origins.",
      "suggestedFix": "Minimise analytics, gate non-essential tracking on consent, and self-host or defer optional dependencies.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-trackers.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "large"
    },
    {
      "id": "BW-027",
      "severity": "medium",
      "confidence": "high",
      "summary": "Defensive policy is undermined by permissive script execution",
      "evidence": "CSP permits scripts from any origin plus unsafe-inline and unsafe-eval; several long-lived cookies use SameSite=None.",
      "suggestedFix": "Restrict script-src to explicit origins with nonces/hashes and review cross-site cookie necessity.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-028",
      "severity": "medium",
      "confidence": "high",
      "summary": "Floating runtime UI is not resilient to a narrow viewport",
      "evidence": "Product detail overlays collide and obscure each other at 360 px, with no anchor positioning fallback detected.",
      "suggestedFix": "Use top-layer primitives, collision-aware positioning, and responsive fallback layouts.",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "resilient-context-menus-and-nested-dropdowns",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-029",
      "severity": "medium",
      "confidence": "high",
      "summary": "Install metadata exists but no service worker is registered",
      "evidence": "The manifest is complete with icons, shortcuts and standalone display, but navigator.serviceWorker.getRegistrations() returned an empty array.",
      "suggestedFix": "Register a service worker with an offline fallback for core browsing and calculator shells.",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "detect-initial-visibility-state",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-pwa-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-030",
      "severity": "medium",
      "confidence": "high",
      "summary": "Internationalisation relies on physical CSS despite language switching",
      "evidence": "The page declares lang=en, but the CSS probe found physical left/right properties and no logical properties; the header exposes language selection.",
      "suggestedFix": "Use logical properties and set lang/dir per selected locale.",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-css-feature-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-031",
      "severity": "medium",
      "confidence": "high",
      "summary": "Competing offer and ad UI makes intent hard to distinguish",
      "evidence": "The product mobile screenshot layers an ad, Get July Offers action, EMI card, and AI prompt over the product surface.",
      "suggestedFix": "Separate sponsored content clearly and present one honest primary action without obstructive overlays.",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "custom-button-actions",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-032",
      "severity": "medium",
      "confidence": "high",
      "summary": "Calculator inputs lack robust semantic validation support",
      "evidence": "The EMI page uses unlabeled controls, radio inputs without label association, no required attributes, and only one aria-live region.",
      "suggestedFix": "Use labelled native controls, constraint validation after interaction, and accessible error announcements.",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "validate-input-after-interaction",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/finance-form-probe.json"
      ],
      "pathId": "finance",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "effort": "medium"
    },
    {
      "id": "BW-033",
      "severity": "medium",
      "confidence": "high",
      "summary": "Relevant inputs omit autocomplete semantics",
      "evidence": "Most public inputs have empty autocomplete values, while several EMI controls have no names or labels.",
      "suggestedFix": "Add stable names, labels, inputmode, and appropriate autocomplete tokens.",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-address-form",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/finance-form-probe.json"
      ],
      "pathId": "finance",
      "url": "https://www.bikewale.com/bike-loan-emi-calculator/",
      "effort": "medium"
    },
    {
      "id": "BW-034",
      "severity": "high",
      "confidence": "high",
      "summary": "Commercial product actions are obscured on mobile",
      "evidence": "On the product detail path, price/offer controls and content overlap with ads and floating widgets, reducing confidence in the next action.",
      "suggestedFix": "Keep pricing and offer terms unobscured, distinguish ads, and preserve a clear confirmation path.",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "custom-button-actions",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/detail-mobile.png"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "large"
    },
    {
      "id": "BW-035",
      "severity": "high",
      "confidence": "high",
      "summary": "Image delivery is not consistently right-sized or dimensioned",
      "evidence": "Image audit found 57 oversized images, 17 without srcset, four legacy-format assets, and all 100 without intrinsic dimensions.",
      "suggestedFix": "Serve responsive AVIF/WebP variants with srcset/sizes and explicit dimensions.",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "large"
    },
    {
      "id": "BW-036",
      "severity": "medium",
      "confidence": "high",
      "summary": "Optional scripts create avoidable transfer and main-thread work",
      "evidence": "HAR shows 62 scripts and trace shows two long tasks; Lighthouse estimates 533 KiB unused JavaScript.",
      "suggestedFix": "Conditionally load non-critical widgets and deprioritise analytics/background work.",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-lighthouse-details.json"
      ],
      "pathId": "detail",
      "url": "https://www.bikewale.com/tvs-bikes/iqube/",
      "effort": "medium"
    },
    {
      "id": "BW-037",
      "severity": "high",
      "confidence": "high",
      "summary": "Third parties dominate page transfer",
      "evidence": "HAR attributes 1.86 MB of 1.93 MB and 91 of 95 requests to third-party origins, led by CDN bundles and Google tags.",
      "suggestedFix": "Set a third-party byte/request budget and defer or remove vendors that do not support the core task.",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "large"
    },
    {
      "id": "BW-038",
      "severity": "low",
      "confidence": "high",
      "summary": "Core shopping tasks have no explicit agent-facing capabilities",
      "evidence": "The public task-heavy marketplace exposes structured metadata but the probe found no WebMCP or agent tool registration.",
      "suggestedFix": "Expose stable, consent-aware agent tools for search, comparison, price lookup, and calculator tasks.",
      "principleId": "be-agent-ready",
      "principleCheckId": "structured-agent-capabilities",
      "guidanceId": "webmcp",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    },
    {
      "id": "BW-039",
      "severity": "medium",
      "confidence": "high",
      "summary": "The home page has a large initial heap footprint",
      "evidence": "Heap summary recorded 559,221 nodes, 2,436,718 edges, and 30.82 MB self size for the landing page.",
      "suggestedFix": "Reduce loaded component/vendor code and lazy-create below-fold widgets; set a memory budget.",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "defer-rendering-heavy-content",
      "guidanceCategory": "modern-web",
      "artifacts": [
        "evidence/home-heap.json"
      ],
      "pathId": "home",
      "url": "https://www.bikewale.com/",
      "effort": "medium"
    }
  ],
  "taskList": [
    {
      "id": "TASK-001",
      "title": "Advertising and floating prompts obstruct the primary product content",
      "priority": 1,
      "findingIds": [
        "BW-007"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "TASK-002",
      "title": "Chrome and monetisation overwhelm the product detail surface",
      "priority": 2,
      "findingIds": [
        "BW-009"
      ],
      "guidanceId": "interactive-content-reveal",
      "status": "open"
    },
    {
      "id": "TASK-003",
      "title": "Every representative mobile template overflows horizontally",
      "priority": 3,
      "findingIds": [
        "BW-010"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "TASK-004",
      "title": "Components do not adapt to their available width",
      "priority": 4,
      "findingIds": [
        "BW-011"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "TASK-005",
      "title": "The EMI calculation journey is clipped on mobile",
      "priority": 5,
      "findingIds": [
        "BW-013"
      ],
      "guidanceId": "forms",
      "status": "open"
    },
    {
      "id": "TASK-006",
      "title": "The listing template has severe layout instability",
      "priority": 6,
      "findingIds": [
        "BW-014"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "TASK-007",
      "title": "Late listing content causes large visual shifts",
      "priority": 7,
      "findingIds": [
        "BW-015"
      ],
      "guidanceId": "visually-stable-font-fallbacks",
      "status": "open"
    },
    {
      "id": "TASK-008",
      "title": "The page ships a large, script-heavy dependency graph",
      "priority": 8,
      "findingIds": [
        "BW-017"
      ],
      "guidanceId": "optimize-script-priority",
      "status": "open"
    },
    {
      "id": "TASK-009",
      "title": "More than half a megabyte of JavaScript is unused on load",
      "priority": 9,
      "findingIds": [
        "BW-018"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "TASK-010",
      "title": "Accessible names and labels are incomplete",
      "priority": 10,
      "findingIds": [
        "BW-019"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "TASK-011",
      "title": "Main landmark and focus indication are incomplete",
      "priority": 11,
      "findingIds": [
        "BW-021"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "TASK-012",
      "title": "Content does not reflow at narrow/zoom-equivalent widths",
      "priority": 12,
      "findingIds": [
        "BW-022"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "TASK-013",
      "title": "CSP and cookie flags weaken an otherwise strong HTTPS baseline",
      "priority": 13,
      "findingIds": [
        "BW-025"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "TASK-014",
      "title": "The landing page has a large analytics and third-party footprint",
      "priority": 14,
      "findingIds": [
        "BW-026"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "TASK-015",
      "title": "Commercial product actions are obscured on mobile",
      "priority": 15,
      "findingIds": [
        "BW-034"
      ],
      "guidanceId": "custom-button-actions",
      "status": "open"
    },
    {
      "id": "TASK-016",
      "title": "Image delivery is not consistently right-sized or dimensioned",
      "priority": 16,
      "findingIds": [
        "BW-035"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "TASK-017",
      "title": "Third parties dominate page transfer",
      "priority": 17,
      "findingIds": [
        "BW-037"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    },
    {
      "id": "TASK-018",
      "title": "Theme support is inconsistent across templates",
      "priority": 18,
      "findingIds": [
        "BW-001"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "TASK-019",
      "title": "Dark-theme text and controls miss contrast requirements",
      "priority": 19,
      "findingIds": [
        "BW-002"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "TASK-020",
      "title": "Horizontal bike tracks lack native gesture containment and snapping",
      "priority": 20,
      "findingIds": [
        "BW-005"
      ],
      "guidanceId": "carousel-slide-effects",
      "status": "open"
    },
    {
      "id": "TASK-021",
      "title": "Floating detail-page UI collides at the viewport edge",
      "priority": 21,
      "findingIds": [
        "BW-006"
      ],
      "guidanceId": "position-aware-tooltips",
      "status": "open"
    },
    {
      "id": "TASK-022",
      "title": "Expandable and floating controls use custom semantics",
      "priority": 22,
      "findingIds": [
        "BW-008"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "TASK-023",
      "title": "Several interactive controls have no visible keyboard focus",
      "priority": 23,
      "findingIds": [
        "BW-012"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "TASK-024",
      "title": "Script execution creates avoidable blocking work",
      "priority": 24,
      "findingIds": [
        "BW-016"
      ],
      "guidanceId": "break-up-long-tasks",
      "status": "open"
    },
    {
      "id": "TASK-025",
      "title": "Several dark-theme elements fail WCAG AA contrast",
      "priority": 25,
      "findingIds": [
        "BW-020"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "TASK-026",
      "title": "Images omit intrinsic dimensions and lazy-loading hints",
      "priority": 26,
      "findingIds": [
        "BW-023"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "TASK-027",
      "title": "Cache policy prevents back/forward cache restoration",
      "priority": 27,
      "findingIds": [
        "BW-024"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "TASK-028",
      "title": "Defensive policy is undermined by permissive script execution",
      "priority": 28,
      "findingIds": [
        "BW-027"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "TASK-029",
      "title": "Floating runtime UI is not resilient to a narrow viewport",
      "priority": 29,
      "findingIds": [
        "BW-028"
      ],
      "guidanceId": "resilient-context-menus-and-nested-dropdowns",
      "status": "open"
    },
    {
      "id": "TASK-030",
      "title": "Install metadata exists but no service worker is registered",
      "priority": 30,
      "findingIds": [
        "BW-029"
      ],
      "guidanceId": "detect-initial-visibility-state",
      "status": "open"
    },
    {
      "id": "TASK-031",
      "title": "Internationalisation relies on physical CSS despite language switching",
      "priority": 31,
      "findingIds": [
        "BW-030"
      ],
      "guidanceId": "translator",
      "status": "open"
    },
    {
      "id": "TASK-032",
      "title": "Competing offer and ad UI makes intent hard to distinguish",
      "priority": 32,
      "findingIds": [
        "BW-031"
      ],
      "guidanceId": "custom-button-actions",
      "status": "open"
    },
    {
      "id": "TASK-033",
      "title": "Calculator inputs lack robust semantic validation support",
      "priority": 33,
      "findingIds": [
        "BW-032"
      ],
      "guidanceId": "validate-input-after-interaction",
      "status": "open"
    },
    {
      "id": "TASK-034",
      "title": "Relevant inputs omit autocomplete semantics",
      "priority": 34,
      "findingIds": [
        "BW-033"
      ],
      "guidanceId": "autofill-address-form",
      "status": "open"
    },
    {
      "id": "TASK-035",
      "title": "Optional scripts create avoidable transfer and main-thread work",
      "priority": 35,
      "findingIds": [
        "BW-036"
      ],
      "guidanceId": "deprioritize-background-fetches",
      "status": "open"
    },
    {
      "id": "TASK-036",
      "title": "The home page has a large initial heap footprint",
      "priority": 36,
      "findingIds": [
        "BW-039"
      ],
      "guidanceId": "defer-rendering-heavy-content",
      "status": "open"
    },
    {
      "id": "TASK-037",
      "title": "Route and state changes do not use view transitions",
      "priority": 37,
      "findingIds": [
        "BW-003"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "TASK-038",
      "title": "Scrollable presentations rely on clipped tracks without modern scroll-linked feedback",
      "priority": 38,
      "findingIds": [
        "BW-004"
      ],
      "guidanceId": "scroll-snap-realtime-feedback",
      "status": "open"
    },
    {
      "id": "TASK-039",
      "title": "Core shopping tasks have no explicit agent-facing capabilities",
      "priority": 39,
      "findingIds": [
        "BW-038"
      ],
      "guidanceId": "webmcp",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-20T05-22-10-841Z"
}
