UNPKG

meld

Version:

Meld: A template language for LLM prompts

898 lines (754 loc) 21.1 kB
# State Instrumentation Plan ## Overview & Motivation [✅ Complete] The goal of this instrumentation layer is to provide deep visibility into state transitions, transformations, and lifecycle events within Meld's state management system. This will help us: - Debug state-related issues more effectively - Understand complex state transitions - Verify transformation behavior - Support long-term maintenance - Enable data-driven improvements ## Core Principles [✅ Complete] 1. **Incremental Implementation** [✅ Complete] - Start with critical operations (clone, transform) - Add capabilities progressively - Maintain existing test stability - Allow gradual adoption 2. **Backward Compatibility** [✅ Complete] - Support existing test patterns - Clear migration paths - Explicit removal targets - Controlled deprecation process 3. **Testing First** [✅ Complete] - Instrumentation must be thoroughly tested - No degradation of existing test coverage - Support for both old and new patterns during migration 4. **Documentation & Clarity** [✅ Complete] - Clear JSDoc for all new components - Migration annotations for legacy code - Explicit compatibility notes - Usage examples and patterns ## Guidelines [✅ Complete] ### Documentation Standards [✅ Complete] 1. New Components: ```typescript /** * @package * Tracks state lifecycle events and transitions. * * @remarks * Core component of the state instrumentation system. Provides * event emission, history tracking, and debugging capabilities. * * @example * ```ts * const tracker = new StateLifecycleTracker(); * tracker.onTransformation(event => { * console.log(`Node transformed: ${event.context}`); * }); * ``` */ ``` 2. Migration-Targeted Code: ```typescript /** * @deprecated * Legacy state tracking implementation. * Will be removed once all tests use StateLifecycleTracker. * * @see {@link StateLifecycleTracker} for the new implementation * @removal-target Phase 3 - Test Infrastructure Migration */ ``` ### Backward Compatibility [✅ Complete] 1. **Identification** [✅ Complete] - Mark legacy code with `@deprecated` - Document replacement patterns - Specify removal phase - Track usage patterns 2. **Migration Support** [✅ Complete] - Provide migration utilities - Support running in both modes - Clear upgrade paths - Validation tools 3. **Removal Process** [✅ Complete] - Phase-specific removal targets - Usage monitoring - Explicit dependencies - Clean migration paths ### Testing Requirements [✅ Complete] 1. **Coverage Requirements** [✅ Complete] - Full coverage of new components - Migration utility testing - Integration validation 2. **Test Infrastructure** [✅ Complete] - Support both old and new patterns - Clear test utilities - Migration helpers ## Implementation Phases Each phase of implementation follows these structural elements: 1. **Purpose & Objectives** - Clear goals - Success metrics - Risk assessment - Value proposition 2. **Requirements** - Functional requirements - Non-functional requirements - Migration requirements - Testing requirements 3. **Exit Criteria** - Specific deliverables - Quality metrics - Migration progress 4. **Testing Strategy** - Coverage requirements - Migration validation - Integration testing 5. **Migration Considerations** - Backward compatibility - Upgrade paths - Removal targets - Validation approach ## Phase 1: Core Event Infrastructure [✅ Complete] ### Purpose & Objectives [✅ Complete] Build the foundational event system to track state transitions and transformations. This phase focuses on: - Event emission [✅ Complete] - Event handling [✅ Complete] - Basic instrumentation [✅ Complete] - Core event types [✅ Complete] ### Core Components [✅ Complete] A) Event System [✅ Complete] • Event emission [✅ Complete] • Event handling [✅ Complete] • Event types: ```typescript type StateEvent = { type: 'create' | 'clone' | 'transform'; stateId: string; source: string; timestamp: number; }; ``` B) Event Handling [✅ Complete] • Event registration [✅ Complete] • Event dispatch [✅ Complete] • Basic filtering [✅ Complete] • Handler management: ```typescript interface EventHandler { onEvent(event: StateEvent): void; filter?: (event: StateEvent) => boolean; } ``` C) Basic Instrumentation [✅ Complete] • Event logging [✅ Complete] • Basic metrics [✅ Complete] • Error tracking [✅ Complete] • Debug output [✅ Complete] ### Requirements [✅ Complete] 1. Functional Requirements [✅ Complete] - Event emission - Event handling - Basic logging - Error tracking 2. Non-Functional Requirements [✅ Complete] - Clear event flow - Easy registration - Simple debugging - Error handling - Memory management [✅ Complete] 3. Migration Requirements [✅ Complete] - Support existing code - Clear upgrade path - No breaking changes - Documentation 4. Testing Requirements [✅ Complete] - Event validation - Handler testing - Error handling - Integration tests ### Exit Criteria [✅ Complete] 1. Implementation [✅ Complete] - Events working - Handlers working - Logging working - Integration done 2. Testing [✅ Complete] - All tests passing - Events verified - Handlers tested - Integration verified 3. Documentation [✅ Complete] - Events documented - Handlers guide - Debug guide - Migration guide 4. Validation [✅ Complete] - Events verified - Handlers working - Logging verified - Integration complete ### Testing Strategy 1. Event Testing - Event emission - Event handling - Event filtering - Basic metrics 2. Integration Testing - Handler integration - Service integration - Tool integration - Migration validation 3. Error Testing - Error handling - Error logging - Debug output - Recovery paths ### Example Implementation Patterns 1. Event System: ```typescript /** * @package * Core event system for state tracking. * * @remarks * Provides event emission and handling for state operations. * * @example * ```ts * const events = new EventSystem(); * events.on('transform', event => { * console.log(`State ${event.stateId} transformed`); * }); * ``` */ ``` 2. Event Handling: ```typescript /** * @package * Event handler registration and management. * * @remarks * Manages event handlers and filtering. * * @example * ```ts * const handler = new EventHandler(); * handler.register({ * onEvent: event => console.log(event), * filter: event => event.type === 'transform' * }); * ``` */ ``` ### Migration Notes 1. Current Events ```typescript /** * @deprecated * Legacy event handling implementation. * Will be replaced by EventSystem in Phase 2. * * @see {@link EventSystem} * @removal-target Phase 2 */ ``` 2. Transition Strategy - Add events alongside existing code - Support both approaches - Validate all scenarios - Remove old code after migration ## Phase 2: State Tracking Enhancement [✅ Complete] ### Purpose & Objectives Build on the event system to track state relationships and transitions. This phase focuses on: - State instance tracking [✅ Complete] - Parent-child relationships [✅ Complete] - State lineage tracking [✅ Complete] - State transition history [✅ Complete] - Relationship visualization [✅ Complete] ### Core Components A) State Instance Tracking [✅ Complete] • Unique state identification [✅ Complete] • Relationship tracking [✅ Complete] • State lineage tracking [✅ Complete] • Basic state info [✅ Complete] B) State History [✅ Complete] • Operation history tracking [✅ Complete] • State relationships [✅ Complete] • Transition records [✅ Complete] • History structure [✅ Complete] C) Visualization Support [✅ Complete] • State hierarchy views [✅ Complete] • Transition diagrams [✅ Complete] • Relationship graphs [✅ Complete] • Basic metrics [✅ Complete] ### Requirements 1. Functional Requirements [✅ Complete] - Unique state identification [✅ Complete] - Relationship tracking [✅ Complete] - Lineage tracking [✅ Complete] - History recording [✅ Complete] - Visualization support [✅ Complete] 2. Non-Functional Requirements [✅ Complete] - Error handling [✅ Complete] - Debug support [✅ Complete] - Memory management [✅ Complete] 3. Migration Requirements [✅ Complete] - Legacy code support [✅ Complete] - Transition utilities [✅ Complete] - Documentation updates [✅ Complete] - Test adaptation [✅ Complete] 4. Testing Requirements [✅ Complete] - Unit test coverage [✅ Complete] - Integration tests [✅ Complete] - Migration tests [✅ Complete] ### Next Steps 1. Documentation [✅ Complete] - Complete API documentation [✅ Complete] - Finish migration guides [✅ Complete] - Add usage examples [✅ Complete] ### Exit Criteria [✅ Complete] 1. Implementation - Core tracking complete - History recording working - Visualization tools ready - Migration utilities done 2. Testing - All tests passing - Migration validated - Integration confirmed 3. Documentation - API documentation - Migration guides - Debug guides - Example code 4. Validation - Error rates - Migration success - User feedback ### Testing Strategy 1. Tracking Testing [✅ Complete] - ID generation - Relationship tracking - History recording - Basic metrics 2. Integration Testing [✅ Complete] - Event system integration - Service integration - Tool integration - Migration validation 3. Visualization Testing [✅ Complete] - Graph generation - Relationship display - History views - Basic metrics ### Example Implementation Patterns 1. State Tracking: ```typescript /** * @package * Tracks state instances and relationships. * * @remarks * Provides unique identification and relationship tracking * for state instances. * * @example * ```ts * const tracker = new StateTracker(); * tracker.onNewState(state => { * console.log(`New state: ${state.id}`); * if (state.parentId) { * console.log(`Parent: ${state.parentId}`); * } * }); * ``` */ ``` 2. History Recording: ```typescript /** * @package * Records state operation history. * * @remarks * Tracks operations and relationships between states. * * @example * ```ts * const history = new StateHistory(); * history.recordOperation({ * type: 'clone', * source: 'directive', * parentId: originalState.id * }); * ``` */ ``` ### Migration Notes 1. Current Tracking ```typescript /** * @deprecated * Legacy state tracking implementation. * Will be replaced by StateTracker in Phase 3. * * @see {@link StateTracker} * @removal-target Phase 3 */ ``` 2. Transition Strategy - Add tracking alongside existing code - Support both approaches - Validate all scenarios - Remove old code after migration ## Phase 3: Debugging Infrastructure & Visualization [✅ Complete] ### Purpose & Objectives Build debugging tools that leverage the event system and state tracking to provide clear visibility into state transitions and transformations. This phase focuses on: - Debugging tools for state transitions - Visual representation of state hierarchies - Automated diagnostic tools for failing tests - Clear state visualization ### Core Components A) Debug Tooling • CLI tools for analyzing state history • Visual representation of state transitions • Integration with existing debug logging • State operation tracking: ```typescript { operationType: 'clone' | 'transform' | 'merge'; source: string; context: string; location?: SourceLocation; stateId: string; parentStateId?: string; } ``` B) Snapshot System • State snapshots at key points • Comparison utilities for state diffs • Integration with existing MemfsTestFileSystem • Capture configuration: ```typescript { capturePoints: ['pre-transform', 'post-transform', 'pre-merge', 'error']; includeFields: ['nodes', 'transformedNodes', 'variables']; format: 'full' | 'summary'; } ``` C) Diagnostic Tools • Automatic state history for failing tests • Root cause analysis helpers • State transition visualizers • State relationship diagrams ### Requirements 1. Functional Requirements - Clear CLI debugging interface - Visual state hierarchy tools - Automated diagnostic capabilities - State transition tracking 2. Non-Functional Requirements - Clear visualization output - Helpful error messages - Intuitive debug workflows - Easy test integration 3. Migration Requirements - Support existing debugging patterns - Integration with current tools - Clear upgrade path - Documentation of new workflows 4. Testing Requirements - Tool reliability validation - Integration test coverage - Error handling verification - Debug workflow validation ### Exit Criteria 1. Implementation - Debug tools functional - Visualization system working - Diagnostic capabilities tested - State tracking validated 2. Testing - All tools thoroughly tested - Integration tests passing - Error handling verified - Debug workflows validated 3. Documentation - Complete debugging guide - Tool usage documentation - Debug workflow guides - Migration workflows documented 4. Validation - Tool effectiveness verified - Debug workflows validated - State tracking verified - Documentation complete ### Testing Strategy 1. Tool Testing - CLI tool validation - Visualization accuracy - Diagnostic tool reliability - State tracking verification 2. Integration Testing - Tool chain integration - Debug workflow validation - Error handling verification - State tracking validation 3. User Workflow Testing - Debug scenario coverage - Tool chain effectiveness - Migration path validation - Error handling verification ### Example Implementation Patterns 1. Debug Tool Configuration: ```typescript /** * @package * Configures state debugging tools and captures. * * @remarks * Controls what information is captured and how it's presented. * Focuses on making state transitions clear and debuggable. * * @example * ```ts * const debugConfig = { * capturePoints: ['pre-transform', 'post-transform'], * visualization: { * showLineage: true, * highlightChanges: true * } * }; * ``` */ ``` 2. Diagnostic Integration: ```typescript /** * @package * Integrates diagnostic tools with test infrastructure. * * @remarks * Provides automatic diagnostic information for failing tests. * Helps identify root causes of state-related failures. * * @example * ```ts * test('should handle complex transformation', async () => { * const diagnostics = await StateDebugger.trace(async () => { * const state = new StateService(); * await complexOperation(state); * }); * * // Automatic analysis of state transitions * expect(diagnostics).not.toHaveStateInconsistencies(); * expect(diagnostics).toShowExpectedTransformations(); * }); * ``` */ ``` ### Migration Notes 1. Current Debug Tools ```typescript /** * @deprecated * Legacy debugging implementation. * Will be replaced by StateDebugger in Phase 4. * * @see {@link StateDebugger} * @removal-target Phase 4 */ ``` 2. Transition Strategy - Introduce new tools alongside existing ones - Support both debugging approaches - Validate all debug scenarios - Remove old tools after full migration ## Phase 4: Production Readiness & Stabilization [🚧 In Progress] ### Purpose & Objectives Finalize the instrumentation system for production use, complete migrations, and add token tracking for AI model compatibility. This phase focuses on: - Token tracking and model compatibility - Final legacy code migration - Complete documentation - Stability verification ### Core Components A) Token Tracking • Character and token counting • Model compatibility checking • Clear limit indicators • Simple status output: ```typescript { characters: number; tokens: number; modelCompatibility: { claude: boolean; // ✔/❌ for 200k tokens gpt4: boolean; // ✔/❌ for 200k tokens palm: boolean; // ✔/❌ for 1M tokens } } ``` B) Model Configuration • Simple model limit definitions • Easy limit updates • Clear status reporting: ```typescript { modelLimits: { claude: 200000, gpt4: 200000, palm: 1000000 } } ``` C) Migration Completion • Legacy code removal • Pattern standardization • Test modernization • Verification tools ### Requirements 1. Functional Requirements - Accurate token counting - Simple model compatibility checks - Clear status reporting - Migration verification utilities 2. Non-Functional Requirements - Clear status messages - Easy model limit updates - Robust error handling - Simple configuration 3. Migration Requirements - Complete legacy code removal - All tests using new patterns - No deprecated APIs in use - Clean architecture 4. Documentation Requirements - Complete API documentation - Model limit documentation - Token tracking guide - Migration completion report ### Exit Criteria 1. Implementation - Token tracking working - Model checks functional - Migration complete - Documentation thorough 2. Testing - All tests passing - Token counting verified - Model checks tested - No legacy code in use 3. Documentation - Full API documentation - Token tracking guides - Model compatibility documented - Migration guides complete 4. Validation - Token counting accuracy verified - Model checks validated - Migration completed - Documentation verified ### Testing Strategy 1. Token Analysis Testing - Character counting accuracy - Token counting accuracy - Model limit checking - Status reporting 2. Migration Testing - Legacy code scan - Pattern verification - API usage validation - Integration verification 3. System Testing - Large document handling - Status reporting clarity - Error handling verification - Integration validation ### Example Implementation Patterns 1. Token Analysis: ```typescript /** * @package * Tracks token usage and model compatibility. * * @remarks * Simple token counting and model limit checking, * similar to the cpai tool's output format. * * @example * ```ts * const analysis = await TokenAnalyzer.analyze(state); * console.log(`📋 ${analysis.characters} characters ` + * `(${analysis.tokens} tokens)`); * console.log('Input limits:', * `${analysis.modelCompatibility.claude ? '✔' : '❌'} Claude`, * `${analysis.modelCompatibility.gpt4 ? '✔' : '❌'} GPT-4`); * ``` */ ``` 2. Migration Verification: ```typescript /** * @package * Verifies completion of instrumentation migration. * * @remarks * Ensures all legacy patterns have been replaced and * validates the new implementation is complete. * * @example * ```ts * const verification = await MigrationVerifier.scan({ * checkDeprecated: true, * validatePatterns: true, * requireModernAPI: true * }); * * expect(verification).toBeFullyMigrated(); * ``` */ ``` ### Final Migration Notes 1. Verification Process - Scan for deprecated APIs - Validate all new patterns - Verify token tracking - Confirm status reporting 2. Cleanup Process - Remove deprecated code - Clean up migration utilities - Archive migration docs - Update API documentation ### Production Considerations 1. Token Tracking - Accurate counting - Clear status reporting - Easy model updates - Simple configuration 2. Stability - Error handling - Status clarity - Update handling - Documentation maintenance 3. Maintenance - Model limit updates - Status format updates - Simple configuration - Documentation updates ### Long-term Maintenance 1. Model Compatibility - Track token limit changes - Update model configurations - Maintain status format - Update documentation 2. Update Process - Version compatibility - Migration tools - Testing procedures - Documentation updates 3. Support Requirements - Token tracking tools - Status reporting - Model updates - Documentation maintenance