From 0331e0e5bb3d691e8e04960c779db694dd8558b7 Mon Sep 17 00:00:00 2001 From: Alexander Whitestone Date: Mon, 23 Mar 2026 14:31:24 -0400 Subject: [PATCH] WIP: Gemini Code progress on #936 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automated salvage commit — agent session ended (exit 124). Work in progress, may need continuation. --- src/infrastructure/events/bus.py | 6 ++++-- src/infrastructure/models/registry.py | 4 +++- src/spark/eidos.py | 4 +++- src/spark/memory.py | 4 +++- src/timmy/paperclip.py | 2 +- src/timmy/research_tools.py | 1 - tests/infrastructure/test_db_pool.py | 8 ++++---- tests/scripts/test_export_trajectories.py | 6 +++--- tests/unit/test_retrain_loop.py | 6 +----- 9 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/infrastructure/events/bus.py b/src/infrastructure/events/bus.py index beb0fa3..7bbf447 100644 --- a/src/infrastructure/events/bus.py +++ b/src/infrastructure/events/bus.py @@ -16,6 +16,8 @@ from datetime import UTC, datetime from pathlib import Path from typing import Any +from src.config import settings + logger = logging.getLogger(__name__) @@ -102,7 +104,7 @@ class EventBus: self._persistence_db_path.parent.mkdir(parents=True, exist_ok=True) with closing(sqlite3.connect(str(self._persistence_db_path))) as conn: conn.execute("PRAGMA journal_mode=WAL") - conn.execute("PRAGMA busy_timeout=5000") + conn.execute(f"PRAGMA busy_timeout={settings.db_busy_timeout_ms}") conn.executescript(_EVENTS_SCHEMA) conn.commit() @@ -114,7 +116,7 @@ class EventBus: return with closing(sqlite3.connect(str(self._persistence_db_path))) as conn: conn.row_factory = sqlite3.Row - conn.execute("PRAGMA busy_timeout=5000") + conn.execute(f"PRAGMA busy_timeout={settings.db_busy_timeout_ms}") yield conn def _persist_event(self, event: Event) -> None: diff --git a/src/infrastructure/models/registry.py b/src/infrastructure/models/registry.py index 0386eaa..79c046c 100644 --- a/src/infrastructure/models/registry.py +++ b/src/infrastructure/models/registry.py @@ -18,6 +18,8 @@ from datetime import UTC, datetime from enum import StrEnum from pathlib import Path +from src.config import settings + logger = logging.getLogger(__name__) DB_PATH = Path("data/swarm.db") @@ -68,7 +70,7 @@ def _get_conn() -> Generator[sqlite3.Connection, None, None]: with closing(sqlite3.connect(str(DB_PATH))) as conn: conn.row_factory = sqlite3.Row conn.execute("PRAGMA journal_mode=WAL") - conn.execute("PRAGMA busy_timeout=5000") + conn.execute(f"PRAGMA busy_timeout={settings.db_busy_timeout_ms}") conn.execute(""" CREATE TABLE IF NOT EXISTS custom_models ( name TEXT PRIMARY KEY, diff --git a/src/spark/eidos.py b/src/spark/eidos.py index c9f2a01..673be1e 100644 --- a/src/spark/eidos.py +++ b/src/spark/eidos.py @@ -22,6 +22,8 @@ from dataclasses import dataclass from datetime import UTC, datetime from pathlib import Path +from src.config import settings + logger = logging.getLogger(__name__) DB_PATH = Path("data/spark.db") @@ -47,7 +49,7 @@ def _get_conn() -> Generator[sqlite3.Connection, None, None]: with closing(sqlite3.connect(str(DB_PATH))) as conn: conn.row_factory = sqlite3.Row conn.execute("PRAGMA journal_mode=WAL") - conn.execute("PRAGMA busy_timeout=5000") + conn.execute(f"PRAGMA busy_timeout={settings.db_busy_timeout_ms}") conn.execute(""" CREATE TABLE IF NOT EXISTS spark_predictions ( id TEXT PRIMARY KEY, diff --git a/src/spark/memory.py b/src/spark/memory.py index 032a175..4bc3902 100644 --- a/src/spark/memory.py +++ b/src/spark/memory.py @@ -19,6 +19,8 @@ from dataclasses import dataclass from datetime import UTC, datetime from pathlib import Path +from src.config import settings + logger = logging.getLogger(__name__) DB_PATH = Path("data/spark.db") @@ -63,7 +65,7 @@ def _get_conn() -> Generator[sqlite3.Connection, None, None]: with closing(sqlite3.connect(str(DB_PATH))) as conn: conn.row_factory = sqlite3.Row conn.execute("PRAGMA journal_mode=WAL") - conn.execute("PRAGMA busy_timeout=5000") + conn.execute(f"PRAGMA busy_timeout={settings.db_busy_timeout_ms}") conn.execute(""" CREATE TABLE IF NOT EXISTS spark_events ( id TEXT PRIMARY KEY, diff --git a/src/timmy/paperclip.py b/src/timmy/paperclip.py index c42e2ee..9e54cbc 100644 --- a/src/timmy/paperclip.py +++ b/src/timmy/paperclip.py @@ -13,8 +13,8 @@ from dataclasses import dataclass import httpx from config import settings +from timmy.research_tools import get_llm_client, google_web_search from timmy.research_triage import triage_research_report -from timmy.research_tools import google_web_search, get_llm_client logger = logging.getLogger(__name__) diff --git a/src/timmy/research_tools.py b/src/timmy/research_tools.py index bf3963f..39d7d97 100644 --- a/src/timmy/research_tools.py +++ b/src/timmy/research_tools.py @@ -6,7 +6,6 @@ import logging import os from typing import Any -from config import settings from serpapi import GoogleSearch logger = logging.getLogger(__name__) diff --git a/tests/infrastructure/test_db_pool.py b/tests/infrastructure/test_db_pool.py index c121204..c1ab306 100644 --- a/tests/infrastructure/test_db_pool.py +++ b/tests/infrastructure/test_db_pool.py @@ -6,8 +6,8 @@ import time from pathlib import Path import pytest - -from infrastructure.db_pool import ConnectionPool +from src.config import settings +from src.infrastructure.db_pool import ConnectionPool class TestConnectionPoolInit: @@ -330,9 +330,9 @@ class TestPragmaApplication: """busy_timeout pragma set on a pooled connection persists.""" pool = ConnectionPool(tmp_path / "test.db") conn = pool.get_connection() - conn.execute("PRAGMA busy_timeout=5000") + conn.execute(f"PRAGMA busy_timeout={settings.db_busy_timeout_ms}") timeout = conn.execute("PRAGMA busy_timeout").fetchone()[0] - assert timeout == 5000 + assert timeout == settings.db_busy_timeout_ms pool.close_connection() def test_pragmas_apply_per_connection(self, tmp_path): diff --git a/tests/scripts/test_export_trajectories.py b/tests/scripts/test_export_trajectories.py index f6ef580..cee6803 100644 --- a/tests/scripts/test_export_trajectories.py +++ b/tests/scripts/test_export_trajectories.py @@ -9,10 +9,8 @@ import json from pathlib import Path import pytest - import scripts.export_trajectories as et - # ── Fixtures ────────────────────────────────────────────────────────────────── @@ -236,7 +234,9 @@ def test_export_training_data_writes_jsonl(simple_session: Path, tmp_path: Path) count = et.export_training_data(logs_dir=simple_session, output_path=output) assert count == 2 assert output.exists() - lines = [json.loads(l) for l in output.read_text().splitlines() if l.strip()] + lines = [ + json.loads(line) for line in output.read_text().splitlines() if line.strip() + ] assert len(lines) == 2 for line in lines: assert "messages" in line diff --git a/tests/unit/test_retrain_loop.py b/tests/unit/test_retrain_loop.py index 313b50c..d778769 100644 --- a/tests/unit/test_retrain_loop.py +++ b/tests/unit/test_retrain_loop.py @@ -9,19 +9,15 @@ Refs: #1105 from __future__ import annotations import json -import tempfile from datetime import UTC, datetime, timedelta from pathlib import Path -import pytest - from timmy_automations.retrain.quality_filter import QualityFilter, TrajectoryQuality from timmy_automations.retrain.retrain import RetrainOrchestrator from timmy_automations.retrain.training_dataset import TrainingDataset from timmy_automations.retrain.training_log import CycleMetrics, TrainingLog from timmy_automations.retrain.trajectory_exporter import Trajectory, TrajectoryExporter - # ── Fixtures ───────────────────────────────────────────────────────────────── @@ -382,7 +378,7 @@ class TestTrainingDataset: ds = TrainingDataset(repo_root=tmp_path) ds.append([self._make_result()], "2026-W12") with open(ds.dataset_path) as f: - lines = [l.strip() for l in f if l.strip()] + lines = [line.strip() for line in f if line.strip()] assert len(lines) == 1 record = json.loads(lines[0]) assert "messages" in record