diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..94b4ac7 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,56 @@ +# Marchwarden — Project Context + +## What This Is +A network of agentic research specialists (MCP servers) coordinated by a +principal investigator (PI) agent. Educational project learning agents, MCP, +and agent composition. + +## Current Project State + +| | | +|---|---| +| **Phase** | Phase 1 complete, Phase 2 next | +| **Last worked on** | 2026-04-08 | +| **Last commit** | `7088f45` — Merge PR #7: M1.4 MCP server | +| **Branch** | `main` (clean) | +| **Tests** | 81 passing | +| **Blocking issues** | None | + +## Key Files + +| File | Purpose | +|---|---| +| `researchers/web/models.py` | Research Contract v1 Pydantic models (9 types) | +| `researchers/web/tools.py` | Tavily search + URL fetch with content hashing | +| `researchers/web/trace.py` | JSONL trace logger | +| `researchers/web/agent.py` | WebResearcher — inner agentic loop | +| `researchers/web/server.py` | FastMCP server wrapping the researcher | +| `cli/main.py` | CLI shim (not yet implemented) | + +## Architecture + +- **Researcher** = MCP server exposing `research(question) -> ResearchResult` +- **ResearchResult** = answer + citations (with raw_excerpt) + categorized gaps + + discovery_events + open_questions + confidence + confidence_factors + cost_metadata + trace_id +- **Agent loop** = Claude tool-use loop (plan→search→fetch→iterate) + synthesis step +- **Trace** = JSONL audit log per research call at `~/.marchwarden/traces/` + +## Conventions + +- API keys live in `~/secrets` (not `.env`) +- Wiki is at `docs/wiki/` (local git clone, not MCP — wiki MCP is buggy) +- All merges via Forgejo API (claude-code user can't merge via MCP) +- One branch per concern, merge via PR, delete branch after + +## Session Log + +| Session | Date | Summary | +|---|---|---| +| 1 | 2026-04-08 | Project creation, naming, contract design, Phase 0 + Phase 1 complete (81 tests) | + +## What's Next + +**Phase 2: CLI Shim** +1. M2.1 — `marchwarden ask "question"` command (Click CLI, pretty-print) +2. M2.2 — `marchwarden replay ` command +3. M2.3 — First smoke test: "What are ideal crops for a garden in Utah?"