Development Guide¶
Setup¶
git clone https://github.com/egoughnour/curate-ipsum.git
cd curate-ipsum
uv sync --extra dev --extra verify --extra rag --extra graph --extra synthesis --extra graphdb
uv run pre-commit install
Code quality¶
The project uses ruff for both linting and formatting, configured for Python 3.11+ with a 120-character line length.
make lint # ruff check
make fmt # ruff format + fix
make check # lint + typecheck
Pre-commit hooks run automatically on git commit:
ruff format
ruff lint (with auto-fix)
uv lock check
Project layout¶
curate-ipsum/
├── server.py # MCP server entry point
├── tools.py # Tool implementations
├── models.py # Pydantic data models
├── adapters/ # Evidence adapter (mutation → beliefs)
├── domains/ # Domain-specific smoke tests
├── graph/ # Call graph extraction + spectral analysis
├── parsers/ # Multi-framework mutation report parsers
├── rag/ # RAG pipeline + vector store + embeddings
├── regions/ # Hierarchical code region model
├── storage/ # Persistent stores (SQLite, Kuzu, synthesis)
├── synthesis/ # CEGIS engine + genetic algorithm + LLM clients
├── theory/ # Belief revision + provenance + rollback
├── verification/ # Z3 + angr backends + CEGAR orchestrator
├── tests/ # pytest test suite
├── docker/ # Dockerfiles + compose
└── docs/ # Sphinx documentation (you are here)