{"run_id":"a8e46e0b","url":"https://sfchronicle.com","started_at":"2026-03-31T17:03:55.857889+00:00","overall":"FAIL","fail_count":3,"pass_count":0,"cmp":"Unknown / Not detected","analysis_mode":"ccpa","error_count":0,"warn_count":4,"entries":[{"ts":"2026-03-31T17:03:55.857889+00:00","elapsed":0.0,"level":"STEP","session":"MAIN","msg":"Run a8e46e0b started","detail":{"url":"https://sfchronicle.com"}},{"ts":"2026-03-31T17:03:55.858053+00:00","elapsed":0.0,"level":"INFO","session":"MAIN","msg":"Detecting probe server location","detail":null},{"ts":"2026-03-31T17:03:56.086123+00:00","elapsed":0.23,"level":"INFO","session":"MAIN","msg":"Probe location","detail":{"ip":"208.77.244.106","city":"Amsterdam","region":"North Holland","country":"The Netherlands","country_code":"NL","org":"Railway","latitude":52.37403,"longitude":4.88969}},{"ts":"2026-03-31T17:03:56.086353+00:00","elapsed":0.23,"level":"STEP","session":"MAIN","msg":"Starting analysis of https://sfchronicle.com","detail":{"mode":"CCPA"}},{"ts":"2026-03-31T17:03:56.710663+00:00","elapsed":0.86,"level":"INFO","session":"MAIN","msg":"Chromium launched","detail":{"headless":true}},{"ts":"2026-03-31T17:03:56.773479+00:00","elapsed":0.92,"level":"INFO","session":"PREFLIGHT","msg":"Navigating to https://sfchronicle.com","detail":null},{"ts":"2026-03-31T17:04:05.181753+00:00","elapsed":9.33,"level":"WARN","session":"PREFLIGHT","msg":"Network did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).","detail":null},{"ts":"2026-03-31T17:04:05.217658+00:00","elapsed":9.36,"level":"STEP","session":"A","msg":"Session A start (CCPA baseline — no banner interaction)","detail":null},{"ts":"2026-03-31T17:04:05.306519+00:00","elapsed":9.45,"level":"INFO","session":"A","msg":"Navigating to https://sfchronicle.com","detail":null},{"ts":"2026-03-31T17:04:13.758084+00:00","elapsed":17.9,"level":"WARN","session":"A","msg":"Network did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).","detail":null},{"ts":"2026-03-31T17:04:16.758787+00:00","elapsed":20.9,"level":"INFO","session":"A","msg":"Capturing CCPA baseline state","detail":null},{"ts":"2026-03-31T17:04:16.971775+00:00","elapsed":21.12,"level":"INFO","session":"A","msg":"CCPA baseline captured","detail":{"baseline_cookies":6,"baseline_ad_cookies":0,"baseline_tracking_storage":0,"baseline_tracker_globals":[],"baseline_unblocked_scripts":0,"baseline_capture_error":null}},{"ts":"2026-03-31T17:04:17.181667+00:00","elapsed":21.33,"level":"STEP","session":"A","msg":"Session A complete — CCPA baseline captured","detail":{"pre_consent_cookies":6,"pre_consent_ad_cookies":0,"pre_consent_tracking_storage":0,"pre_consent_tracker_globals":[],"pre_consent_unblocked_scripts":0,"pre_consent_capture_error":null,"baseline_cookies":6,"baseline_ad_cookies":0,"baseline_tracking_storage":0,"baseline_tracker_globals":[],"baseline_unblocked_scripts":0,"baseline_capture_error":null}},{"ts":"2026-03-31T17:04:17.181816+00:00","elapsed":21.33,"level":"STEP","session":"DNSSPI","msg":"Scanning for DNSSPI / LSPI opt-out links","detail":null},{"ts":"2026-03-31T17:04:17.294016+00:00","elapsed":21.44,"level":"INFO","session":"DNSSPI","msg":"Navigating to https://sfchronicle.com","detail":null},{"ts":"2026-03-31T17:04:25.737684+00:00","elapsed":29.88,"level":"WARN","session":"DNSSPI","msg":"Network did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).","detail":null},{"ts":"2026-03-31T17:04:25.737825+00:00","elapsed":29.88,"level":"INFO","session":"DNSSPI","msg":"Waiting for CMP banner (up to 12s before scroll)","detail":null},{"ts":"2026-03-31T17:04:41.179243+00:00","elapsed":45.32,"level":"INFO","session":"DNSSPI","msg":"Link not found on homepage — trying privacy sub-pages","detail":null},{"ts":"2026-03-31T17:04:49.492879+00:00","elapsed":53.64,"level":"INFO","session":"DNSSPI","msg":"DNSSPI/LSPI scan complete","detail":{"dnsspi_found":false,"dnsspi_text":"","dnsspi_via_cmp":false,"lspi_found":false,"lspi_text":""}},{"ts":"2026-03-31T17:04:49.506042+00:00","elapsed":53.65,"level":"STEP","session":"D","msg":"Session D start (GPC signal injection)","detail":null},{"ts":"2026-03-31T17:04:49.578200+00:00","elapsed":53.72,"level":"INFO","session":"D","msg":"Navigating to https://sfchronicle.com","detail":null},{"ts":"2026-03-31T17:04:58.023006+00:00","elapsed":62.17,"level":"WARN","session":"D","msg":"Network did not reach idle state — proceeding after load event. Normal for sites with persistent connections (websockets, polling).","detail":null},{"ts":"2026-03-31T17:05:00.234976+00:00","elapsed":64.38,"level":"INFO","session":"D","msg":"GPC state captured","detail":{"gpc_cookies":6,"gpc_ad_cookies":0,"gpc_tracking_storage":0,"gpc_tracker_globals":[],"gpc_unblocked_scripts":0,"gpc_capture_error":null}},{"ts":"2026-03-31T17:05:00.257500+00:00","elapsed":64.4,"level":"INFO","session":"D","msg":"Privacy strings probed","detail":{"us_privacy":null,"gpp":null}},{"ts":"2026-03-31T17:05:00.617459+00:00","elapsed":64.76,"level":"STEP","session":"D","msg":"Session D complete","detail":{"gpc_cookies":6,"gpc_ad_cookies":0,"gpc_tracking_storage":0,"gpc_tracker_globals":[],"gpc_unblocked_scripts":0,"gpc_capture_error":null}},{"ts":"2026-03-31T17:05:00.617615+00:00","elapsed":64.76,"level":"STEP","session":"E","msg":"Session E start (opt-out flow)","detail":null},{"ts":"2026-03-31T17:05:00.617670+00:00","elapsed":64.76,"level":"INFO","session":"E","msg":"Session E skipped — no DNSSPI link found by DNSSPI scan","detail":null},{"ts":"2026-03-31T17:05:00.617706+00:00","elapsed":64.76,"level":"STEP","session":"E","msg":"Session E complete","detail":{"opt_out_completed":false,"us_privacy_after":null}},{"ts":"2026-03-31T17:05:00.726145+00:00","elapsed":64.87,"level":"INFO","session":"MAIN","msg":"Browser closed","detail":null},{"ts":"2026-03-31T17:05:00.769043+00:00","elapsed":64.91,"level":"STEP","session":"MAIN","msg":"Analysis complete","detail":{"error_count":0}},{"ts":"2026-03-31T17:05:00.769193+00:00","elapsed":64.91,"level":"STEP","session":"C1","msg":"Running Component 1 HAR analysis","detail":null},{"ts":"2026-03-31T17:05:00.924727+00:00","elapsed":65.07,"level":"INFO","session":"C1","msg":"HAR analysis complete — 0 FAIL item(s)","detail":{"total_requests":110,"phases":["pre_consent"],"phase_strategy":{"accept":"not_detected","reject":"not_detected"},"fail_items":[]}},{"ts":"2026-03-31T17:05:00.947635+00:00","elapsed":65.09,"level":"STEP","session":"CHECKS","msg":"Running CCPA/CPRA browser-state checks","detail":null},{"ts":"2026-03-31T17:05:00.948653+00:00","elapsed":65.09,"level":"INFO","session":"CHECKS","msg":"Browser checks complete — 3 FAIL item(s)","detail":{"fail_items":["DNS.1","GPC.1","OPT.1"],"mode":"ccpa"}}],"docx_filename":"consent_report_https___sfchronicle.com.docx"}