Alexander Whitestone
77c8ccf18c
feat: restore self-modification loop ( Fixes #983 )
...
Tests / lint (pull_request) Successful in 34s
Tests / test (pull_request) Failing after 29m20s
Restores the branch→edit→test→commit/revert loop deleted in
Operation Darling Purge (commit 584eeb679e ).
New package: src/self_coding/
- self_modify/loop.py — SelfModifyLoop: creates a self-modify/<slug>
branch, runs an edit callable, gates commits on pytest -x -q, reverts
on failure, then opens a Gitea PR via the REST API.
- gitea_client.py — thin GiteaClient wrapper (create_pull_request,
add_issue_comment); degrades gracefully when token absent or network
unreachable.
Tests: tests/self_coding/test_loop.py (15 unit tests, all passing).
All 451 unit tests green; lint clean.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 21:37:23 -04:00
Alexander Payne
18bc64b36d
feat: Self-Coding Foundation (Phase 1)
...
Implements the foundational infrastructure for Timmy's self-modification capability:
## New Services
1. **GitSafety** (src/self_coding/git_safety.py)
- Atomic git operations with rollback capability
- Snapshot/restore for safe experimentation
- Feature branch management (timmy/self-edit/{timestamp})
- Merge to main only after tests pass
2. **CodebaseIndexer** (src/self_coding/codebase_indexer.py)
- AST-based parsing of Python source files
- Extracts classes, functions, imports, docstrings
- Builds dependency graph for blast radius analysis
- SQLite storage with hash-based incremental indexing
- get_summary() for LLM context (<4000 tokens)
- get_relevant_files() for task-based file discovery
3. **ModificationJournal** (src/self_coding/modification_journal.py)
- Persistent log of all self-modification attempts
- Tracks outcomes: success, failure, rollback
- find_similar() for learning from past attempts
- Success rate metrics and recent failure tracking
- Supports vector embeddings (Phase 2)
4. **ReflectionService** (src/self_coding/reflection.py)
- LLM-powered analysis of modification attempts
- Generates lessons learned from successes and failures
- Fallback templates when LLM unavailable
- Supports context from similar past attempts
## Test Coverage
- 104 new tests across 7 test files
- 95% code coverage on self_coding module
- Green path tests: full workflow integration
- Red path tests: errors, rollbacks, edge cases
- Safety constraint tests: test coverage requirements, protected files
## Usage
from self_coding import GitSafety, CodebaseIndexer, ModificationJournal
git = GitSafety(repo_path=/path/to/repo)
indexer = CodebaseIndexer(repo_path=/path/to/repo)
journal = ModificationJournal()
Phase 2 will build the Self-Edit MCP Tool that orchestrates these services.
2026-02-26 11:08:05 -05:00