[
  {
    "prompt": "Split src/timmy/research.py (528 lines) into a research/ subpackage with focused modules. Create a git branch, commit, and push.\n\nREPO: /tmp/timmy-agents/hermes/repo\nREMOTE: http://143.198.27.163:3000/rockachopa/Timmy-time-dashboard.git\nBRANCH: refactor/split-research-py\n\nPLAN:\n1. Create branch refactor/split-research-py from main\n2. Create src/timmy/research/ directory\n3. Create src/timmy/research/sources.py \u2014 contains all I/O: _run_search_sync, _execute_search, _fetch_pages, _ollama_complete, _claude_complete, _synthesize (lines 127-374 approximately)\n4. Create src/timmy/research/coordinator.py \u2014 contains: ResearchResult dataclass, list_templates, load_template, _check_cache, _store_result, _save_to_disk, run_research (the orchestrator). This imports from sources.py.\n5. Create src/timmy/research/__init__.py \u2014 re-exports ALL public names for backward compatibility: ResearchResult, list_templates, load_template, run_research, _check_cache, _store_result, _save_to_disk (tests import these from timmy.research)\n6. DELETE the old src/timmy/research.py file\n7. Run: tox -e format (auto-format)\n8. Run: tox -e unit (verify tests pass)\n9. Commit with message: refactor: split research.py into research/ subpackage (#1405)\n10. Push to remote\n\nIMPORTANT DETAILS:\n- The constants (_PROJECT_ROOT, _SKILLS_ROOT, _DOCS_ROOT, _CACHE_HIT_THRESHOLD, _FETCH_TOP_N, _SYNTHESIS_MAX_TOKENS) should go in coordinator.py since they're used there, but _FETCH_TOP_N is also used in sources.py. Put shared constants in coordinator.py and import them in sources.py.\n- The optional memory imports (SemanticMemory, store_memory) belong in coordinator.py (used by _check_cache, _store_result)\n- sources.py needs: asyncio, logging, textwrap, typing.Any\n- coordinator.py needs: asyncio, logging, re, dataclasses, pathlib, typing, and imports from sources.py\n- __init__.py must re-export: ResearchResult, list_templates, load_template, run_research, and the private cache/store/save functions since tests import them",
    "chosen": "",
    "session": "session_20260324_154231_2a3d6d.json"
  }
]