3.6 KiB
3.6 KiB
MMA Migration: Epics and Detailed Tasks
Track 1: The Memory Foundations (AST Parser)
Goal: Build the engine that prevents token-bloat by turning massive source files into curated memory views.
1. TDD Approach for tree-sitter Integration
- Create
tests/test_file_cache_ast.py. - Define mock Python source files containing various structures (classes, functions, docstrings,
@core_logicdecorators,# [HOT]comments). - Write failing tests that instantiate
ASTParserand assert thatget_skeleton_view()andget_curated_view()return the precisely filtered strings. - Red Phase: Ensure tests fail because
ASTParserdoes not exist. - Green Phase: Implement the tree-sitter logic iteratively until strings match exactly.
2. ASTParser Extraction Rules (Tasks)
- Task 1.1: Dependency Setup
- Add
tree-sitterandtree-sitter-pythontopyproject.toml/requirements.txt.
- Add
- Task 1.2: Core Parser Class
- Create
ASTParserinfile_cache.pythat initializes the language parser.
- Create
- Task 1.3: Skeleton View Extraction
- Write query to extract
function_definitionandclass_definition. - Keep signatures, parameters, and return type hints.
- Replace all bodies with
pass.
- Write query to extract
- Task 1.4: Curated View Extraction
- Write query to keep class structures and
expression_statementdocstrings. - Implement heuristic to preserve full bodies of functions decorated with
@core_logicor containing# [HOT]comments. - Replace all other function bodies with
... # Hidden.
- Write query to keep class structures and
3. Acceptance Testing Criteria
- Unit Tests: All AST parsing tests pass with >90% coverage for
file_cache.py. - Integration Test: Execute the parser on a large, complex project file (e.g.,
ai_client.py). The outputSkeleton Viewmust be less than 15% of the original token count. TheCurated Viewmust correctly retain docstrings and marked functions while stripping standard bodies.
Track 2: State Machine & Data Structures
Goal: Define the rigid Python objects (Pydantic/Dataclasses) that AI agents will pass to each other, enforcing structured data over loose chat strings.
1. TDD Approach for \models.py\
- Create \ ests/test_models.py.
- Write failing tests that instantiate \Track, \Ticket, and \WorkerContext\ with various valid and invalid schemas.
- Write tests that assert state transitions (e.g., from \pending\ to \locked, from \step_paused\ to \completed) correctly update internal flags and dependencies.
- Red Phase: Tests fail because \models.py\ classes are undefined or lack transition methods.
- Green Phase: Implement the dataclasses and state mutators.
2. State Machine Tasks
- Task 2.1: The Dataclasses
- Create \models.py. Define \Ticket\ (id, target_file, prompt, worker_archetype, status, dependencies).
- Define \Track\ (id, title, description, status, tickets).
- Task 2.2: Worker Context Definition
- Define \WorkerContext\ holding a \Ticket\ ID, assigned model, configuration injection, and an ephemeral \messages\ array.
- Task 2.3: State Mutator Methods
- Implement methods like \ icket.mark_blocked(dependency_id), \ icket.mark_complete(), and \ rack.get_executable_tickets(). Ensure strict validation of valid state transitions.
3. Acceptance Testing Criteria
- Unit Tests: \models.py\ has 100% test coverage for all state transitions.
- Integration Test: Instantiate a \Track\ with 3 dependent \Tickets\ in Python. Programmatically mark tickets as complete and assert that the subsequent dependent tickets transition from \locked\ to \pending\ without any AI involvement.