- Extract magic number 45 to class constant _EST_SECONDS_PER_ROUND (advanced.py)
- Add @pytest.mark.unit to test_advanced_p2_dead_zones.py
- Remove debug print statements from test
- Add pytestmark = pytest.mark.unit to test_magentic_judge_termination.py
- Fix import ordering (stdlib before third-party)
- Add fallback p=0.15 for progress events without iteration (app.py)
- Refactor max_iters lookup with getattr chains to reduce statement count
- Fix SPEC_16 markdown: list spacing (1. vs 1. ) and code block languages
All 327 tests pass.
test(agents): verify judge termination prompt for SPEC-15
This commit completes the transition of DeepBoner to a dedicated Sexual Health Research Agent by removing all references to "general" and "drug repurposing" domains. Key changes include:
- Updated domain defaults to exclusively use "sexual_health".
- Replaced all example queries and documentation to reflect a focus on sexual health topics.
- Removed any lingering references to non-sexual health concepts in code and tests.
- Ensured all tests are aligned with the new domain focus, passing successfully.
This change reinforces the project's identity and simplifies the codebase, enhancing clarity and usability for users focused on sexual health research.
Closes #89.
* feat: implement SPEC_10 domain-agnostic refactor
* fix: complete SPEC_10 audit - license + HierarchicalOrchestrator domain
License Fixes:
- LICENSE: Fix copyright "Antibody Training Pipeline ESM" → "DeepBoner Contributors"
- pyproject.toml: Add missing license = "Apache-2.0" field
- README.md: Fix frontmatter license: mit → apache-2.0
Domain Threading Fixes:
- hierarchical.py: Add domain param to __init__ and pass to ResearchTeam
- factory.py: Pass domain to HierarchicalOrchestrator
All 237 tests pass. Domain now properly threaded through all orchestrators.
* test: enhance domain handling in orchestrators and judges
- Updated unit tests for `configure_orchestrator` to include mock mode and free tier scenarios, ensuring the domain is correctly passed to handlers.
- Refactored tests for `JudgeHandler` to mock model retrieval, allowing for domain acceptance without API key requirements.
- Improved `AdvancedOrchestrator` tests to mock API key validation and ensure domain handling i…
fix: resolve all test warnings and complete DeepBoner rebrand
* feat: complete Phase 9 source cleanup
- Removed WebTool (src/tools/websearch.py) and related tests
- Updated SearchHandler and models to support only PubMed
- Refactored all examples and tests to remove web search dependencies
- Added verification tests to ensure no WebTool references remain
- Fixed all unit tests to align with strict 'pubmed' source typing
* fix: address CodeRabbit review feedback
- Deduplicate tenacity dependency in pyproject.toml
- Remove 'and web' from search agent description
- Normalize Citation source to 'pubmed' in search agent
- Update app.py markdown to remove web search references
- Update embeddings demo with realistic PubMed URL/author
- Enhance SearchHandler tests to verify multi-tool aggregation
* refactor: replace mock data with real PubMed data in embeddings demo
* fix: address CodeRabbit review feedback
- Fix nested test_search_handler_pubmed_only (was inside another test, never ran)
- Improve test_no_webtool_references to catch `from src.tool…
fix: address all CodeRabbit Phase 8 review feedback
Actionable issue:
- Forward additional_properties in run_stream for consistent metadata
Nitpicks addressed:
- Report event now uses actual agent message instead of hardcoded text
- Citation validator: documented in-place mutation, use exact title match
- Log truncation uses constant _MAX_URL_DISPLAY_LENGTH
- Test asserts final_report is stored
- Handle empty lists in markdown (hypotheses, drugs, limitations, refs)
- Edge case: show "Untested" when supported==contradicted==0
- Document citations field in ReportSection as reserved for future use
fix: apply lazy init pattern and pydantic-ai fixes to ReportAgent (#12)
Applies the same fixes as Phase 7 HypothesisAgent:
- Lazy initialization via _get_agent() to avoid API key requirement at import
- Use output_type instead of result_type (pydantic-ai API)
- Use result.output instead of result.data
- Fix line length issues in tests
- Proper mocking of get_model in tests
fix: mock get_model in tests to avoid API key requirement in CI
- Added EmbeddingService with ChromaDB and SentenceTransformers
- Updated SearchAgent to support semantic deduplication and search
- Updated MagenticOrchestrator to use embeddings if available
- Added 100% async-safe implementation with run_in_executor
- Added comprehensive unit tests
fix(ci): add E402/RUF100 to ignore for cross-env compatibility
- Add E402 to global ignore (pytest.importorskip pattern)
- Add RUF100 to global ignore (ruff version differences)
- Remove now-unnecessary noqa comments
fix(ci): skip agent tests when agent-framework not installed
- Remove uv.sources that references local-only reference_repos
- Add pytest.importorskip to agent wrapper tests
- CI will skip 7 agent tests, run remaining 31 tests
- Add PLR0912, PLC0415 to ruff ignore list for complex orchestrator logic
- Disable warn_unused_ignores in mypy (vendored lib needs type: ignore)
- Fix single ChatMessage input handling in SearchAgent/JudgeAgent
- Add comprehensive unit tests for SearchAgent and JudgeAgent wrappers
- All 38 tests pass, lint and mypy clean, pre-commit aligned