Ent is a system designed to leverage tree-edit operations for analyzing, modifying, and improving code architecture. The project aims to create an AI-driven issue/feature classifier for GitHub repositories, using advanced tree-edit distance calculations, memoization, and AI-generated code suggestions.
Our ultimate goal is to analyze the history of any Git repository, detect churn (repeated changes to specific areas), infer potential architecture improvements, and predict future issues or features.
This project aligns with the ideas discussed in the FASE 2010 paper on OperV, which explores operation-based version control. Ent extends those ideas by incorporating AI, allowing for intelligent decision-making around code changes and architecture predictions.
- Fine-grained and coarse-grained tree-edit operations (insert, delete, update).
- AI-assisted subtree hashing and edit sequence generation.
- Detection of churn points in large repositories.
- Prediction of future issues/features based on historical patterns.
To run the Ent system, you'll need:
- A Common Lisp implementation (SBCL recommended)
- Quicklisp for dependency management
# Clone the repository
git clone https://github.com/username/ent.git
cd ent
# Start your Lisp implementation
sbclLoad the core module in your Lisp environment:
(load "src/core.lisp")Then use the tree operations:
(make-node value &optional children)- Create a new tree node(insert-node tree parent-value new-node)- Insert a node under a parent(delete-node tree value)- Delete a node by value(update-node tree old-value new-value)- Update a node's value
See DEPENDENCIES.md for a full list of dependencies and setup instructions.
Run the test suite:
(load "tests/test-core.lisp")The system is structured as follows:
src/core.lisp- Core tree manipulation functionstests/test-core.lisp- Unit tests for core functionalityprompts/- AI interaction prompts (future feature)
Feel free to submit issues and enhancement requests via the issue tracker.