VibecoderMcSwaggins's picture
feat(architecture): update system design and roadmap for Phases 1-8
2dc022a
|
raw
history blame
8.26 kB

Implementation Roadmap: DeepCritical (Vertical Slices)

Philosophy: AI-Native Engineering, Vertical Slice Architecture, TDD, Modern Tooling (2025).

This roadmap defines the execution strategy to deliver DeepCritical effectively. We reject "overplanning" in favor of ironclad, testable vertical slices. Each phase delivers a fully functional slice of end-to-end value.


The 2025 "Gucci" Tooling Stack

We are using the bleeding edge of Python engineering to ensure speed, safety, and developer joy.

Category Tool Why?
Package Manager uv Rust-based, 10-100x faster than pip/poetry. Manages python versions, venvs, and deps.
Linting/Format ruff Rust-based, instant. Replaces black, isort, flake8.
Type Checking mypy Strict static typing. Run via uv run mypy.
Testing pytest The standard.
Test Plugins pytest-sugar Instant feedback, progress bars. "Gucci" visuals.
Test Plugins pytest-asyncio Essential for our async agent loop.
Test Plugins pytest-cov Coverage reporting to ensure TDD adherence.
Git Hooks pre-commit Enforce ruff/mypy before commit.

Architecture: Vertical Slices

Instead of horizontal layers (e.g., "Building the Database Layer"), we build Vertical Slices. Each slice implements a feature from Entry Point (UI/API) -> Logic -> Data/External.

Directory Structure (Maintainer's Structure)

src/
β”œβ”€β”€ app.py                      # Entry point (Gradio UI)
β”œβ”€β”€ orchestrator.py             # Agent loop (Search -> Judge -> Loop)
β”œβ”€β”€ agent_factory/              # Agent creation and judges
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ agents.py               # PydanticAI agent definitions
β”‚   └── judges.py               # JudgeHandler for evidence assessment
β”œβ”€β”€ tools/                      # Search tools
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ pubmed.py               # PubMed E-utilities tool
β”‚   β”œβ”€β”€ websearch.py            # DuckDuckGo search tool
β”‚   └── search_handler.py       # Orchestrates multiple tools
β”œβ”€β”€ prompts/                    # Prompt templates
β”‚   β”œβ”€β”€ __init__.py
β”‚   └── judge.py                # Judge prompts
β”œβ”€β”€ utils/                      # Shared utilities
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ config.py               # Settings/configuration
β”‚   β”œβ”€β”€ exceptions.py           # Custom exceptions
β”‚   β”œβ”€β”€ models.py               # Shared Pydantic models
β”‚   β”œβ”€β”€ dataloaders.py          # Data loading utilities
β”‚   └── parsers.py              # Parsing utilities
β”œβ”€β”€ middleware/                 # (Future: middleware components)
β”œβ”€β”€ database_services/          # (Future: database integrations)
└── retrieval_factory/          # (Future: RAG components)

tests/
β”œβ”€β”€ unit/
β”‚   β”œβ”€β”€ tools/
β”‚   β”‚   β”œβ”€β”€ test_pubmed.py
β”‚   β”‚   β”œβ”€β”€ test_websearch.py
β”‚   β”‚   └── test_search_handler.py
β”‚   β”œβ”€β”€ agent_factory/
β”‚   β”‚   └── test_judges.py
β”‚   └── test_orchestrator.py
└── integration/
    └── test_pubmed_live.py

Phased Execution Plan

Phase 1: Foundation & Tooling (Day 1)

Goal: A rock-solid, CI-ready environment with uv and pytest configured.

  • Initialize pyproject.toml with uv.
  • Configure ruff (strict) and mypy (strict).
  • Set up pytest with sugar and coverage.
  • Implement src/utils/config.py (Configuration Slice).
  • Implement src/utils/exceptions.py (Custom exceptions).
  • Deliverable: A repo that passes CI with uv run pytest.

Phase 2: The "Search" Vertical Slice (Day 2)

Goal: Agent can receive a query and get raw results from PubMed/Web.

  • TDD: Write test for SearchHandler.
  • Implement src/tools/pubmed.py (PubMed E-utilities).
  • Implement src/tools/websearch.py (DuckDuckGo).
  • Implement src/tools/search_handler.py (Orchestrates tools).
  • Implement src/utils/models.py (Evidence, Citation, SearchResult).
  • Deliverable: Function that takes "long covid" -> returns List[Evidence].

Phase 3: The "Judge" Vertical Slice (Day 3)

Goal: Agent can decide if evidence is sufficient.

  • TDD: Write test for JudgeHandler (Mocked LLM).
  • Implement src/prompts/judge.py (Structured outputs).
  • Implement src/agent_factory/judges.py (LLM interaction).
  • Deliverable: Function that takes List[Evidence] -> returns JudgeAssessment.

Phase 4: The "Loop" & UI Slice (Day 4)

Goal: End-to-End User Value.

  • Implement src/orchestrator.py (Connects Search + Judge loops).
  • Build src/app.py (Gradio with Streaming).
  • Deliverable: Working DeepCritical Agent on HuggingFace.

Phase 5: Magentic Integration βœ… COMPLETE

Goal: Upgrade orchestrator to use Microsoft Agent Framework patterns.

  • Wrap SearchHandler as AgentProtocol (SearchAgent) with strict protocol compliance.
  • Wrap JudgeHandler as AgentProtocol (JudgeAgent) with strict protocol compliance.
  • Implement MagenticOrchestrator using MagenticBuilder.
  • Create factory pattern for switching implementations.
  • Deliverable: Same API, better multi-agent orchestration engine.

Phase 6: Embeddings & Semantic Search

Goal: Add vector search for semantic evidence retrieval.

  • Implement EmbeddingService with ChromaDB.
  • Add semantic deduplication to SearchAgent.
  • Enable semantic search for related evidence.
  • Store embeddings in shared context.
  • Deliverable: Find semantically related papers, not just keyword matches.

Phase 7: Hypothesis Agent

Goal: Generate scientific hypotheses to guide targeted searches.

  • Implement MechanismHypothesis and HypothesisAssessment models.
  • Implement HypothesisAgent for mechanistic reasoning.
  • Add hypothesis-driven search queries.
  • Integrate into Magentic workflow.
  • Deliverable: Drug β†’ Target β†’ Pathway β†’ Effect hypotheses that guide research.

Phase 8: Report Agent

Goal: Generate structured scientific reports with proper citations.

  • Implement ResearchReport model with all sections.
  • Implement ReportAgent for synthesis.
  • Include methodology, limitations, formatted references.
  • Integrate as final synthesis step in Magentic workflow.
  • Deliverable: Publication-quality research reports.

Complete Architecture (Phases 1-8)

User Query
    ↓
Gradio UI (Phase 4)
    ↓
Magentic Manager (Phase 5)
    β”œβ”€β”€ SearchAgent (Phase 2+5) ←→ PubMed + Web + VectorDB (Phase 6)
    β”œβ”€β”€ HypothesisAgent (Phase 7) ←→ Mechanistic Reasoning
    β”œβ”€β”€ JudgeAgent (Phase 3+5) ←→ Evidence Assessment
    └── ReportAgent (Phase 8) ←→ Final Synthesis
    ↓
Structured Research Report

Spec Documents

  1. Phase 1 Spec: Foundation βœ…
  2. Phase 2 Spec: Search Slice βœ…
  3. Phase 3 Spec: Judge Slice βœ…
  4. Phase 4 Spec: UI & Loop βœ…
  5. Phase 5 Spec: Magentic Integration βœ…
  6. Phase 6 Spec: Embeddings & Semantic Search
  7. Phase 7 Spec: Hypothesis Agent
  8. Phase 8 Spec: Report Agent

Progress Summary

Phase Status Deliverable
Phase 1: Foundation βœ… COMPLETE CI-ready repo with uv/pytest
Phase 2: Search βœ… COMPLETE PubMed + Web search
Phase 3: Judge βœ… COMPLETE LLM evidence assessment
Phase 4: UI & Loop βœ… COMPLETE Working Gradio app
Phase 5: Magentic βœ… COMPLETE Multi-agent orchestration
Phase 6: Embeddings πŸ“ SPEC READY Semantic search
Phase 7: Hypothesis πŸ“ SPEC READY Mechanistic reasoning
Phase 8: Report πŸ“ SPEC READY Structured reports

Phases 1-5 completed in ONE DAY. Phases 6-8 specs ready for implementation.