
Curate-Ipsum
io.github.egoughnourPublished by GitHub account egoughnourv2.5.1Updated Oct 24, 2026
Code synthesis through belief revision, mutation testing, and verification
Overview
Local MCP server that runs mutation testing, graph analysis, formal verification and patch synthesis to produce verified code changes.
- What you can do
- Run unit, integration and mutation tests, detect frameworks, and parse or create code regions
- Record assertions and evidence, revise theories, and inspect entrenchment, provenance and belief stability
- Roll back to earlier states, undo operations, analyze failures and list world history
- Extract call graphs, compute partitions, query reachability and hierarchy, and run graph queries
- Verify properties with Z3 or angr backends and orchestrate verification with budget escalation
- Synthesize patches from LLM candidates, track or cancel synthesis runs, and index or search code with RAG
- When to use it
- Use it when you want an assistant to go beyond plausible generated code: running mutation tests, checking properties formally, and iterating on patches until they carry verification evidence. It suits developers working on a local codebase who can afford the setup and compute of a verification loop.
- Requirements
- Runs locally over stdio, installed from PyPI (pip or uvx) or as a Docker image. Python is needed for the PyPI route; the Docker image bundles the embedding model. Optional environment variables configure the graph backend (CURATE_IPSUM_GRAPH_BACKEND), data directory (MUTATION_TOOL_DATA_DIR), log level (MUTATION_TOOL_LOG_LEVEL), embedding model (EMBEDDING_MODEL) and a ChromaDB host (CHROMA_HOST). The full verification stack uses Docker Compose for Chroma and angr.
Installation
In SourceWeft
- Open Curate-Ipsum in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Curate-Ipsum
A graph-spectral MCP server for verified code synthesis through belief revision
[PyPI] [MCP Registry] [Claude Desktop] [License: MIT] [Python]
[Top Language] [Code Size] [Last Commit] [Repo Size]
Curate-Ipsum bridges the gap between LLM-generated code (fast, plausible, unverified) and formally verified patches (slow, correct, trustworthy). It treats mutation testing as one component of a larger system for maintaining robust, self-healing codebase metadata that supports reachability analysis, symbolic execution, and automated test generation.
Install
Claude Desktop / MCP Client
Add to your claude_desktop_config.json:
Or with Docker (embedding model pre-loaded, no Python needed):
MCP Tools
Curate-Ipsum exposes 30 tools over the MCP stdio transport, organised into six groups:
Testing — run_unit_tests, run_integration_tests, run_mutation_tests, get_run_history, get_region_metrics, detect_frameworks, parse_region, check_region_relationship, create_region
Belief Revision — add_assertion, contract_assertion, revise_theory, get_entrenchment, list_assertions, get_theory_snapshot, store_evidence, get_provenance, why_believe, belief_stability
Rollback & Failure — rollback_to, undo_last_operations, analyze_failure, list_world_history
Graph-Spectral — extract_call_graph, compute_partitioning, query_reachability, get_hierarchy, find_function_partition, incremental_update, persistent_graph_stats, graph_query
Verification — verify_property (Z3/angr), verify_with_orchestrator (CEGAR budget escalation), list_verification_backends
Synthesis & RAG — synthesize_patch (CEGIS + genetic + LLM), synthesis_status, cancel_synthesis, list_synthesis_runs, rag_index_nodes, rag_search, rag_stats
Current Status
Last Updated: 2026-02-08
The Problem
LLMs produce code that is:
- ✅ Syntactically valid (usually)
- ✅ Statistically plausible
- ❌ Semantically correct (sometimes)
- ❌ Type-safe (by accident)
- ❌ Formally verified (never)
Current approaches either trust LLM output blindly or reject it entirely. Neither is optimal.
The Solution
Use LLMs for cheap candidate generation, then invest computational resources to achieve formal guarantees:
Key Differentiators from State of the Art
vs. Traditional Mutation Testing (Stryker, mutmut, cosmic-ray)
vs. LLM Code Generation (Copilot, Claude, GPT)
vs. Program Synthesis (Sketch, Rosette, SyGuS)
vs. Symbolic Execution (KLEE, S2E)
Novel Contributions
-
Graph-Spectral Code Decomposition
- Fiedler vector partitioning for optimal reachability
- Hierarchical SCC condensation
- Planar subgraph identification → O(1) Kameda queries
- Kuratowski subgraphs as atomic non-planar units
-
Belief Revision for Synthesis
- AGM-compliant theory revision
- Entrenchment ordering for minimal contraction
- Provenance DAG for failure mode analysis
- Rollback sharpens validity (failures refine the universal model)
-
Implicit Region Detection
- Spectral anomalies reveal undertested code
- Cross-framework mutation resistance identifies critical regions
- Historical mutability guides partition optimization
-
Mathematical Constraint Reformulation
- Boolean-intractable → differential/root-finding
- SymPy path condition encoding
- Hybrid SMT + numerical solving
Architecture
Roadmap
Phase 1: Foundation ✅
- MCP server infrastructure
- Stryker report parsing
- Run history and PID metrics
- Flexible region model (hierarchical: file → class → function → lines)
- mutmut parser integration
- Framework auto-detection
- Unified parser interface
Phase 2: Graph Infrastructure ✅
- Graph models (CodeGraph, Node, Edge)
- Call graph extraction (AST-based)
- ASR extractor (import/class analysis)
- Dependency graph extraction (module-level imports)
- Laplacian construction from call/dependency graphs
- Fiedler vector computation (scipy.sparse.linalg)
- Recursive Fiedler partitioning with virtual sink/source
- SCC detection and hierarchical condensation
- Planar subgraph identification (Boyer-Myrvold)
- Kameda preprocessing for O(1) reachability
- MCP tools (extract, partition, reachability, hierarchy, find)
Phase 3: Multi-Framework Orchestration ✅
- Unified mutation framework interface
- cosmic-ray parser
- poodle parser
- universalmutator parser
Phase 4: Belief Revision Engine ✅
- py-brs library integration (AGM core)
- Evidence adapter (mutation results → beliefs)
- Theory manager for curate-ipsum
- AGM contraction (py-brs v2.0.0 released)
- Entrenchment calculation (py-brs v2.0.0)
- Provenance DAG storage and queries
- Failure mode analyzer
- Rollback mechanism
Phase 5: Synthesis Loop ✅
- CEGIS implementation with LLM seeding
- Genetic algorithm with AST-aware crossover
- Entropy monitoring and diversity injection
- Counterexample-directed mutation
- CEGAR budget escalation (10s → 30s → 120s)
Phase 6: Verification Backends ✅
- Z3 integration for SMT solving (default backend)
- angr Docker symbolic execution (expensive tier)
- CEGAR orchestrator with budget escalation
- Verification harness builder (C source generation)
- Mock backend for testing
- Alternative solvers (CVC5, Boolector)
- SymPy path condition encoding
Phase 7: Graph Persistence ✅
- Abstract GraphStore ABC
- SQLite graph store (primary)
- Kuzu graph store (optional)
- Synthesis result persistence
- Kameda & Fiedler persistence
- Incremental update engine
Phase 8: RAG / Semantic Search ✅
- ChromaDB vector store integration
- sentence-transformers embedding provider (all-MiniLM-L6-v2)
- Graph-expanded RAG pipeline (vector top-k → neighbor expansion → rerank)
- Decay scoring for temporal relevance
- CEGIS integration for context-aware synthesis
Phase 9: Production Hardening ✅
- CI/CD (GitHub Actions — lint, test matrix, integration, lockfile)
- Release pipeline (tag push → PyPI + GHCR + MCP registry)
- uv lockfile (149 packages)
- pre-commit hooks (ruff format + lint + lock check)
- MCP bundle packaging (server.json, smithery.yaml, manifest.json)
- HTML/SARIF reporting
- IDE extensions (VSCode)
- Regression detection and alerting
Future Work
Advanced Orchestration (Deferred)
- Implicit region detection (spectral anomalies)
- Non-contradictory framework assignment
- Cross-framework survival analysis
Semantic Search & RAG
- Code Graph RAG for semantic search
- Semantic search index (ChromaDB)
- RAG retrieval pipeline with graph expansion
- Text-to-Cypher queries
Quick Start
Configuration
All configuration is via environment variables (see .env.example):
For the full service stack (ChromaDB + angr runner):
Documentation
Planning & Design
- Phase 2 Plan - Active: Graph-spectral infrastructure (9 steps)
- Progress - Current status, what's done, what's next
- Decisions - Architectural decisions with reasoning (D-001 through D-008)
- M1 Multi-Framework Plan - Region model & parser design (done)
- BRS Integration Plan - Belief revision integration
- BRS v2 Refactoring Plan - Modular architecture
- ROADMAP - Full milestone tracker
Architecture
- Architectural Vision - Graph-spectral framework
- Synthesis Framework - CEGIS/CEGAR/genetic approach
- Belief Revision - AGM theory and provenance
Reference
- Summary - Functionality catalog
- Potential Directions - Enhancement roadmap
- Synergies - Tool ecosystem integration
- CONTEXT - Session context for AI assistants
- DOCS_INDEX - Documentation quick reference
Key References
- Alchourrón, Gärdenfors, Makinson (1985). On the Logic of Theory Change
- Fiedler (1973). Algebraic Connectivity of Graphs
- Kameda (1975). On the Vector Representation of Reachability in Planar Directed Graphs
- Solar-Lezama (2008). Program Synthesis by Sketching (CEGIS)
- Clarke et al. (2000). Counterexample-Guided Abstraction Refinement (CEGAR)
License
MIT License - see LICENSE
Source: README.md at commit 6c0f4a3
Tools
0Version history
1- v2.5.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts