{
  "october": {
    "path": "/Users/simon-pierreboucher/UQO_RESEARCH_DB/data/logs/spid_extract.log",
    "lines": 100747,
    "first": "2026-10-27 21:23:58",
    "last": "2026-10-28 11:15:49",
    "llm_call_failed_total": 94609,
    "llm_call_failed_by_reason": {
      "json_decode_error": 14,
      "retryable_http_429_5xx": 94593,
      "connection_error": 2
    },
    "llm_call_failed_by_hour": {
      "2026-10-27 22": 1,
      "2026-10-27 23": 4,
      "2026-10-28 00": 4,
      "2026-10-28 01": 14703,
      "2026-10-28 02": 18208,
      "2026-10-28 03": 18241,
      "2026-10-28 04": 18302,
      "2026-10-28 05": 18302,
      "2026-10-28 06": 6839,
      "2026-10-28 07": 1,
      "2026-10-28 08": 1,
      "2026-10-28 09": 2,
      "2026-10-28 10": 1
    },
    "window": [
      "2026-10-28 01:10:00",
      "2026-10-28 06:22:00"
    ],
    "llm_call_failed_inside_window": 94467,
    "llm_call_failed_outside_window": 142,
    "outside_window_by_reason": {
      "json_decode_error": 14,
      "retryable_http_429_5xx": 128
    },
    "outside_window_list": [
      [
        "2026-10-27 22:24:51",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:03:31",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:27:25",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:29:05",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:31:05",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:19:49",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:20:18",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:36:56",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:45:35",
        "json_decode_error"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:01",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:02",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:03",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:03",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:03",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:03",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:04",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:04",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:04",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:04",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:05",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:05",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:05",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:05",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:06",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:06",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:07",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:07",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:07",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:10",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:11",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:12",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:12",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:12",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:13",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:13",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:13",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:13",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:13",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:13",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:14",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:14",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:14",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:15",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:15",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:16",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:16",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:16",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:16",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:19",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:19",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:19",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:19",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:19",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:19",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:19",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:20",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:21",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:21",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 06:22:21",
        "retryable_http_429_5xx"
      ],
      [
        "2026-10-28 07:25:58",
        "json_decode_error"
      ],
      [
        "2026-10-28 08:30:07",
        "json_decode_error"
      ],
      [
        "2026-10-28 09:30:52",
        "json_decode_error"
      ],
      [
        "2026-10-28 09:55:54",
        "json_decode_error"
      ],
      [
        "2026-10-28 10:13:45",
        "json_decode_error"
      ]
    ],
    "first_failure": "2026-10-27 22:24:51",
    "last_failure": "2026-10-28 10:13:45",
    "first_failure_in_window": "2026-10-28 01:10:21",
    "last_failure_in_window": "2026-10-28 06:22:00",
    "section_failed": 0,
    "batch_failed_lines": 125,
    "pending_lines": [
      [
        "2026-10-27 21:23:58",
        "pending: 968134 sections over 2499 CIKs | batch=20 workers=24 backend=llm"
      ],
      [
        "2026-10-27 21:36:00",
        "pending: 968127 sections over 2499 CIKs | batch=20 workers=24 backend=llm"
      ],
      [
        "2026-10-27 21:37:49",
        "pending: 968127 sections over 2499 CIKs | batch=20 workers=48 backend=llm"
      ],
      [
        "2026-10-28 06:38:18",
        "pending: 544424 sections over 1619 CIKs | batch=20 workers=48 backend=llm"
      ]
    ],
    "ciks_total_lines": [],
    "run_complete_lines": [
      [
        "2026-10-27 21:31:14",
        "EXTRACT RUN COMPLETE | sections=0 mentions=0 | TOTAL mentions in DB=39930"
      ],
      [
        "2026-10-28 11:15:49",
        "EXTRACT RUN COMPLETE | sections=544424 mentions=154775 | TOTAL mentions in DB=308065"
      ]
    ],
    "extracting_from_lines": 143,
    "extracting_from_sum_sections": 1136163,
    "extraction_complete_lines": 141,
    "extraction_complete_sum_sections": 1117479,
    "extraction_complete_sum_mentions": 268547,
    "workers_values": [
      "24",
      "48"
    ],
    "batch_values": [
      "20"
    ],
    "model_id_strings": [],
    "outage_window_from_log": [
      "2026-10-28 01:10:21",
      "2026-10-28 06:22:21",
      94593
    ],
    "llm_call_failed_outside_log_window": [
      [
        "2026-10-27 22:24:51",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:03:31",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:27:25",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:29:05",
        "json_decode_error"
      ],
      [
        "2026-10-27 23:31:05",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:19:49",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:20:18",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:36:56",
        "json_decode_error"
      ],
      [
        "2026-10-28 00:45:35",
        "json_decode_error"
      ],
      [
        "2026-10-28 07:25:58",
        "json_decode_error"
      ],
      [
        "2026-10-28 08:30:07",
        "json_decode_error"
      ],
      [
        "2026-10-28 09:30:52",
        "json_decode_error"
      ],
      [
        "2026-10-28 09:55:54",
        "json_decode_error"
      ],
      [
        "2026-10-28 10:13:45",
        "json_decode_error"
      ]
    ],
    "silent_empty_results_outside_outage": 14,
    "retryable_failures_outside_log_window": 0,
    "ledger_rows_in_log_window": [
      504,
      1011
    ],
    "ledger_rows_in_largest_gap": 0,
    "outage_rows_reconciliation": {
      "extraction_complete_sum_sections": 1117479,
      "pending_at_second_start": 968127,
      "difference": 149352,
      "paper_research_log_149352": 149352,
      "pending_at_resume": 544424,
      "rows_before_outage_plus_in_window": 423710
    },
    "batch_productivity_median_mentions_per_section": 0.2784,
    "anomalous_batches": [
      [
        "october",
        47,
        125,
        "2026-10-28 01:44:26",
        9550,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        48,
        125,
        "2026-10-28 02:02:20",
        8726,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        49,
        125,
        "2026-10-28 02:25:08",
        10693,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        50,
        125,
        "2026-10-28 02:45:05",
        9784,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        51,
        125,
        "2026-10-28 03:06:35",
        10260,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        52,
        125,
        "2026-10-28 03:24:01",
        9081,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        53,
        125,
        "2026-10-28 03:47:33",
        10765,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        54,
        125,
        "2026-10-28 04:05:52",
        8367,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        55,
        125,
        "2026-10-28 04:29:31",
        10903,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        56,
        125,
        "2026-10-28 04:47:54",
        9042,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        57,
        125,
        "2026-10-28 05:07:03",
        9047,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        58,
        125,
        "2026-10-28 05:24:38",
        8672,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        59,
        125,
        "2026-10-28 05:45:11",
        10171,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        60,
        125,
        "2026-10-28 06:05:10",
        9337,
        0,
        0.0,
        0.0,
        true
      ],
      [
        "october",
        1,
        81,
        "2026-10-28 06:40:53",
        5198,
        34,
        0.0065,
        0.023,
        true
      ]
    ],
    "resume_batch1": {
      "window": [
        "2026-10-28 06:38:18",
        "2026-10-28 06:40:53"
      ],
      "log_sections": 5198,
      "log_mentions": 34,
      "ledger_rows": 4769,
      "ledger_calls": 2686,
      "ledger_with_mentions": 23,
      "ledger_mentions": 30,
      "ciks": [
        "0001004702",
        "0001004980",
        "0001005229",
        "0001005284",
        "0001005731",
        "0001005817",
        "0001006655",
        "0001009829",
        "0001010086",
        "0001012019",
        "0001013237",
        "0001013488",
        "0001013857",
        "0001013871",
        "0001013934",
        "0001014739",
        "0001015328",
        "0001015383",
        "0001016281"
      ],
      "expected_with_mentions": 536.2,
      "failed_call_lines_in_window": 0
    }
  },
  "june": {
    "path": "/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/logs/extract.log",
    "lines": 858,
    "first": "2026-06-18 08:28:02",
    "last": "2026-06-18 11:06:44",
    "llm_call_failed_total": 3,
    "llm_call_failed_by_reason": {
      "json_decode_error": 3
    },
    "llm_call_failed_by_hour": {
      "2026-06-18 09": 2,
      "2026-06-18 10": 1
    },
    "section_failed": 0,
    "batch_failed_lines": 0,
    "pending_lines": [],
    "ciks_total_lines": [
      [
        "2026-06-18 08:28:02",
        "CIKs total=500 done=0 todo=500 | batch=15 workers=16"
      ]
    ],
    "run_complete_lines": [
      [
        "2026-06-18 11:06:44",
        "FULL EXTRACT COMPLETE | cum_sections=153894 cum_mentions(this run)=39761 | TOTAL mentions in DB=39930"
      ]
    ],
    "extracting_from_lines": 34,
    "extracting_from_sum_sections": 153894,
    "extraction_complete_lines": 34,
    "extraction_complete_sum_sections": 153894,
    "extraction_complete_sum_mentions": 39761,
    "workers_values": [
      "16"
    ],
    "batch_values": [
      "15"
    ],
    "model_id_strings": [],
    "batch_productivity_median_mentions_per_section": 0.26070000000000004,
    "anomalous_batches": []
  },
  "other_logs": {
    "spid.log": {
      "lines": 81,
      "head": "=== 2026-10-27 21:23:57 merge done, starting SPID\n{\n  \"pending_by_form\": [\n    {\n      \"form\": \"10-K\",\n      \"sections\": 116540,\n      \"words\": 760526302\n    },\n    {\n      \"form\": \"10-Q\",\n      \"sections\": 554920,\n      \"words\": 2220254366\n    },\n    {\n      \"form\": \"8-K\",\n      \"sections\": 296674,\n      \"words\": 227137503\n    }\n  ],\n  \"pending_total\": 968134,\n  \"est_cost_usd_gpt4o_mini\": 774.51\n}\n=== 2026-10-27 21:31:15 extract rc=0\n=== 2026-10-27 21:31:15 resolve\n=== 2026-10-27 21:31:15 graph\n=== 2026-10-27 21:31:16 embed\n=== 2026-10-27 21:35:59 SPID full run start\n=== 2026-10-27 21:37:49 SPID full run start\n=== 2026-10-28 06:30:33 SPID full run start\n=== 2026-10-28 06:30:33 extract rc=1\nTraceback (most recent call last):\n  File \"<frozen runpy>\", line 198, in _run_module_as_main\n  File \"<frozen runpy>\", line 88, in _run_code\n  File \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/spid/__main__.py\", line 245, in <module>\n    sys.exit(main())\n             ^^^^^^\n  File \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/spid/__main__.py\", line 232, in main\n    store = Store()\n            ^^^^^^^\n  File \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/spid/store.py\", line 109, in __init__\n    self.con = duckdb.connect(str(self.s.db_path), read_only=read_only)\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Could not set lock on file \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/db/spid.duckdb\""
    },
    "spid_resume.log": {
      "lines": 2,
      "head": "2026-10-28 06:23:14 probe HTTP 429\n2026-10-28 06:26:59 probe HTTP 429\n"
    },
    "spid_post.log": {
      "lines": 255,
      "head": "21:31:15 INFO    spid.resolve | Resolved 19227 projects from mentions (39930 timeline rows).\n{\n  \"projects\": 19227,\n  \"timeline_rows\": 39930\n}\n21:31:15 INFO    spid.graph | Knowledge graph: 32226 nodes, 33176 edges | {'Project': 19227, 'Partner': 7640, 'Location': 3080, 'Technology': 1779, 'Company': 500}\n21:31:15 INFO    spid.graph | Exported KG: kg_nodes.parquet, kg_edges.parquet, kg_import.cypher\n{\n  \"nodes\": 32226,\n  \"edges\": 33176,\n  \"nodes_by_type\": {\n    \"Project\": 19227,\n    \"Partner\": 7640,\n    \"Location\": 3080,\n    \"Technology\": 1779,\n    \"Company\": 500\n  },\n  \"nodes_parquet\": \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/exports/kg_nodes.parquet\",\n  \"edges_parquet\": \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/exports/kg_edges.parquet\",\n  \"cypher\": \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/exports/kg_import.cypher\"\n}\n/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/spid/embed.py:43: UserWarning: Arrow output on a DB-API result makes an extra copy of the rows, use con.sql(query).to_arrow_table() instead.\n  ).to_arrow_table().to_pylist()\nW1027 21:31:19.030000 63509 torch/distributed/elastic/multiprocessing/redirects.py:35] NOTE: Redirects are currently not supported in MacOs.\n21:31:19 INFO    spid.embed | Loading embedding model all-MiniLM-L6-v2 ...\n\nLoading weights:   0%|          | 0/103 [00:00<?, ?it/s]\nLoading weights: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 103/103 [00:00<00:00, 7270.87it/s]\n/Users/simon-pierreboucher/.local/share/uv"
    },
    "spid_interim.log": {
      "lines": 34,
      "head": "=== 06:23:01 resolve\n06:23:01 INFO    spid.resolve | Resolved 61717 projects from mentions (153544 timeline rows).\n{\n  \"projects\": 61717,\n  \"timeline_rows\": 153544\n}\n=== 06:23:01 graph\n06:23:02 INFO    spid.graph | Knowledge graph: 95894 nodes, 104271 edges | {'Project': 61717, 'Partner': 18981, 'Location': 9563, 'Technology': 4500, 'Company': 1133}\n06:23:02 INFO    spid.graph | Exported KG: kg_nodes.parquet, kg_edges.parquet, kg_import.cypher\n{\n  \"nodes\": 95894,\n  \"edges\": 104271,\n  \"nodes_by_type\": {\n    \"Project\": 61717,\n    \"Partner\": 18981,\n    \"Location\": 9563,\n    \"Technology\": 4500,\n    \"Company\": 1133\n  },\n  \"nodes_parquet\": \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/exports/kg_nodes.parquet\",\n  \"edges_parquet\": \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/exports/kg_edges.parquet\",\n  \"cypher\": \"/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/exports/kg_import.cypher\"\n}\n=== 06:23:02 embed\n/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/spid/embed.py:43: UserWarning: Arrow output on a DB-API result makes an extra copy of the rows, use con.sql(query).to_arrow_table() instead.\n  ).to_arrow_table().to_pylist()\nW1028 06:23:05.549000 98413 torch/distributed/elastic/multiprocessing/redirects.py:35] NOTE: Redirects are currently not supported in MacOs.\n06:23:06 INFO    spid.embed | Loading embedding model all-MiniLM-L6-v2 ...\n\nLoading weights:   0%|          | 0/103 [00:00<?, ?it/s]\nLoading weights: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 103/103 [0"
    },
    "spid_pending.json": {
      "pending_by_form": [
        {
          "form": "10-K",
          "sections": 66265,
          "words": 488579005
        },
        {
          "form": "10-Q",
          "sections": 304997,
          "words": 1283694287
        },
        {
          "form": "8-K",
          "sections": 173162,
          "words": 138201358
        }
      ],
      "pending_total": 544424,
      "est_cost_usd_gpt4o_mini": 435.54
    }
  },
  "june_log_date_assumed": "2026-06-18 (file mtime; the log carries time-of-day only)"
}