- Syntax validation - All .py files compile without errors
- Import structure - All relative imports work correctly
- Type consistency - No type mismatches in function calls
- Exception handling - Try/except blocks catch appropriate errors
- Resource cleanup - Sockets/files properly closed
- Memory leaks - No circular references or leaked observers
- Thread safety - No threading (Ableton restriction compliant)
- Logging consistency - All important actions logged
- Magic numbers - No hardcoded values without constants
- Dead code - No unused functions or commented-out blocks
- TODO/FIXME - All TODO comments addressed or tracked
- Python version - Compatible with Ableton's Python 3.11
- Ableton API usage - All Live Object Model calls are valid
- Error messages - Clear, actionable error messages
- Syntax validation - All .js files parse correctly
- Max API usage - All Max.js API calls are valid
- Event handling - Proper inlet/outlet management
- Memory management - No memory leaks in long-running patches
- Error handling - All UDP/WebSocket errors caught
- Timing issues - No race conditions in event handlers
- Performance - No blocking operations in audio thread
- Compilation - Builds without errors on target platform
- Memory safety - No memory leaks (JUCE leak detector)
- Thread safety - Audio thread vs UI thread separation
- VST3 compliance - Follows VST3 SDK standards
- Plugin validation - Passes VST3 Plugin Validator
- JUCE best practices - Proper MessageManager usage
- Resource initialization - All resources initialized in constructor
- Destructor cleanup - All resources freed properly
- Exception safety - No exceptions in audio thread
- Platform compatibility - Windows x64 support verified
- TypeScript compilation - No type errors
- React best practices - Proper hooks usage, no memory leaks
- State management - Consistent state updates
- Effect cleanup - All useEffect hooks have cleanup
- Event listener cleanup - All listeners removed on unmount
- API key security - Keys not exposed in client code
- Error boundaries - React error boundaries implemented
- Prop validation - All components have proper prop types
- Port uniqueness - No unintended port conflicts
- Port documentation - All ports documented in CLAUDE.md
- Firewall rules - localhost-only for security
- Port binding - Proper error handling for "address in use"
- Port configuration - Centralized port config (not hardcoded everywhere)
- Platform paths - Windows paths correct (backslashes, drives)
- Path existence - All required directories exist
- Path permissions - Write permissions verified
- Relative vs absolute - Consistent path handling
- User paths - Ableton User Library path detection
- Special characters - Spaces in paths handled correctly
- Path separators - os.path.join() used (not string concat)
- .env file exists - Required for API keys
- API keys valid - All keys are active and working
- .env not in git - .gitignore excludes .env
- env var loading - dotenv configured correctly
- Missing env handling - Graceful fallback if keys missing
- Env var documentation - All vars documented in CLAUDE.md
- CMake configuration - VST3 builds correctly
- Vite configuration - React app builds correctly
- Package.json - All dependencies listed
- Node version - Minimum version specified
- Build scripts - Automated build scripts work
- Output paths - Build artifacts go to correct locations
- Clean builds - Fresh builds succeed
- Message format - JSON schema consistent across all components
- Line-delimited JSON - All messages end with \n
- Message size - No messages exceed UDP packet size (65KB safe limit)
- Encoding - UTF-8 encoding consistent
- Malformed JSON - Proper error handling for parse errors
- Missing fields - Graceful handling of incomplete messages
- Command IDs - Unique ID generation for request/response matching
- Timeout handling - Commands that don't respond handled
- Acknowledgments - All commands send ack/error responses
- Event throttling - High-frequency events throttled (tempo, position)
- Connection handling - Reconnect logic implemented
- Heartbeat - Keep-alive pings to detect disconnections
- Binary vs text - Proper message type handling
- Buffer overflow - Large messages don't crash
- Multiple clients - Handles multiple Max for Live instances (or rejects)
- Live version - Compatible with Live 11 and Live 12
- LOM access - All Live Object Model paths valid
- Observer leaks - All observers removed when no longer needed
- Index validation - Track/scene/clip indices checked before access
- Object lifetime - Check has_clip/is_available before accessing
- API changes - Handle differences between Live 11 and Live 12
- Undo integration - Ableton undo history not broken by script
- Session vs Arrangement - Handle both views correctly
- DAW compatibility - Works in Ableton Live, FL Studio, etc.
- Parameter automation - Automation lanes work correctly
- State saving - Plugin state saves/loads with project
- Preset handling - Presets save/load correctly
- MIDI routing - MIDI input/output works
- Audio routing - Audio passthrough works
- Sample rate changes - Handles sample rate changes gracefully
- Buffer size changes - Handles buffer size changes
- Docstrings - All public functions have docstrings
- Inline comments - Complex logic explained
- Parameter docs - Args/Returns documented
- Examples - Usage examples for complex functions
- Type hints - Python type hints where helpful
- Installation guide - Step-by-step install instructions
- Quick start - Get started in 5 minutes
- Feature documentation - All 8 workflow features documented
- Command reference - All 46 commands documented
- Troubleshooting - Common issues and solutions
- FAQ - Frequently asked questions answered
- Screenshots - Visual guides for setup
- Architecture overview - High-level system design
- Communication protocol - Message format specification
- Build instructions - How to build from source
- Contributing guide - How to contribute
- Code style guide - Coding conventions
- Testing guide - How to test changes
- Release process - How to create releases
- README.md - Project overview, features, status
- CHANGELOG.md - Version history and changes
- LICENSE - Software license
- ROADMAP.md - Future development plans
- CLAUDE.md - Complete technical reference (β already exists)
- Directory structure - Logical, consistent organization
- Naming conventions - Consistent file/folder naming
- No clutter - No temporary files in repo
- Build artifacts - Build outputs in .gitignore
- Dependencies - All dependencies in package managers (not vendored)
- One-click install - Automated installer script
- Dependency check - Verifies all prerequisites
- Path detection - Auto-detects Ableton paths
- Permission check - Verifies write permissions
- Backup existing - Backs up before overwriting
- Rollback - Can undo installation
- Verification - Tests installation success
- VST3 packaging - Plugin packaged correctly (.vst3 bundle)
- Electron packaging - App packaged as .exe installer
- Remote Script zip - Easy drag-drop installation
- Max for Live .amxd - Max device frozen and packaged
- Version numbering - Semantic versioning
- Release notes - What's new in each version
- Download links - Easy access to releases
- Command latency - < 10ms app β script β DAW
- Event latency - < 16ms (60 FPS UI updates)
- MIDI latency - No audible delay
- Audio latency - No audio dropouts
- Event rate - Can handle 60 events/second
- Batch operations - Batch variations generate efficiently
- Large projects - Works with 100+ tracks
- Memory usage - Stays under 100MB for Remote Script
- CPU usage - < 5% CPU in normal operation
- No busy loops - Polling at reasonable rates
- Lazy loading - Only load data when needed
- Caching - Cache expensive computations
- Debouncing - UI events debounced
- Throttling - High-frequency events throttled
- String operations - Efficient string handling (not repeated concatenation)
- Not in code - Keys only in .env
- Not in logs - Keys not logged
- Not in git - .env in .gitignore
- Rotation - Keys can be rotated easily
- Validation - Invalid keys handled gracefully
- Localhost only - UDP/WebSocket only bind to 127.0.0.1
- No remote access - Firewall blocks external access
- Input validation - All JSON inputs validated
- Injection prevention - No code injection via commands
- Path traversal - File paths validated (no ../)
- DoS prevention - Rate limiting on commands
- Destructive operations - Confirmation required
- Undo support - Can undo AI actions
- Kill switch - Can pause/stop AI immediately
- User override - User input always wins over AI
- No data collection - No telemetry without consent
- Privacy - User data stays local
- Intuitive - Features work as expected
- Discoverable - Features easy to find
- Feedback - Clear feedback for all actions
- Error messages - Helpful, actionable errors
- Loading states - Spinners/progress for long operations
- Keyboard shortcuts - Common actions have shortcuts
- Drag and drop - MIDI bubbles draggable to DAW
- No crashes - Handles errors gracefully
- Reconnection - Auto-reconnects on disconnect
- State persistence - Settings saved across sessions
- Graceful degradation - Works without optional components
- Error recovery - Can recover from errors
- Consistent UI - Uniform design language
- Responsive - UI responds immediately to input
- Animations - Smooth transitions
- Icons - Clear, professional icons
- Colors - Accessible color scheme (contrast ratios)
- Typography - Readable fonts and sizes
- Dark mode - Supports dark mode
- Separation of concerns - Each component has single responsibility
- Dependency injection - Dependencies passed, not hardcoded
- Interface segregation - Interfaces are minimal and focused
- DRY principle - No repeated code
- SOLID principles - Clean architecture
- Loose coupling - Components can be swapped
- High cohesion - Related code grouped together
- Plugin architecture - AI providers swappable
- Extensibility - Easy to add new commands
- Testability - Code can be unit tested
- More tracks - Scales to 200+ tracks
- More clips - Handles 1000+ clips
- Longer sessions - Can run for hours without issues
- Multiple instances - Can run multiple apps (different projects)
- Version compatibility - Handles future Ableton versions
- Migration paths - Can upgrade existing installations
- Backward compatibility - Old commands still work
- Deprecation strategy - Graceful deprecation of features
- Music theory - Test scale detection, chord generation, etc.
- MIDI workflow - Test undo/redo, version history, etc.
- Command handlers - Test each command in isolation
- Edge cases - Test boundary conditions
- Error cases - Test error handling
- UDP communication - Test message sending/receiving
- WebSocket communication - Test WS connection
- Remote Script - Test in actual Ableton Live
- VST3 - Test in actual DAW
- Electron app - Test full app workflow
- Direct track insertion - MIDI appears on track
- Drag-drop - Drag bubble to DAW
- Undo/redo - Can revert generations
- Version history - Can compare variations
- Auto tempo sync - Matches DAW tempo
- Key detection - Correctly detects key from audio
- MIDI learn - Learns from existing patterns
- Batch generation - Generates 10 variations
- Producer testing - Tested by real music producers
- Usability testing - Observe users completing tasks
- A/B testing - Compare different approaches
- Beta testing - Release to beta users
- Feedback collection - Gather and incorporate feedback
- ImportError - Missing module handling
- IndexError - Array bounds checking
- KeyError - Dictionary key existence checking
- ValueError - Invalid value handling
- TypeError - Type mismatch handling
- AttributeError - Missing attribute handling
- OSError - File/network operation errors
- JSONDecodeError - Malformed JSON handling
- Track doesn't exist - Index out of range
- Clip doesn't exist - No clip in slot
- Device removed - Device deleted during operation
- Parameter locked - Parameter not accessible
- API not available - Live 11 vs 12 differences
- Connection refused - Port not listening
- Connection timeout - No response received
- Connection reset - Unexpected disconnect
- Address in use - Port already bound
- Network unreachable - Should never happen (localhost)
- Invalid input - Out of range values
- Missing required field - Incomplete commands
- Conflicting state - Can't arm muted track, etc.
- Permission denied - File access errors
- Disk full - Can't save files
- Log levels - DEBUG, INFO, WARNING, ERROR
- Log rotation - Logs don't fill disk
- Structured logging - JSON logs for parsing
- Performance logging - Timing critical operations
- Error context - Full stack traces for errors
- Log filtering - Can filter by component/level
- Verbose mode - Extra debug output
- Network inspector - View UDP/WS messages
- State inspector - View internal state
- Performance profiler - Identify bottlenecks
- Memory profiler - Detect memory leaks
- Health check endpoint - Is system working?
- Version reporting - Report all component versions
- Dependency check - Verify all dependencies present
- Port check - Verify all ports accessible
- Connection status - Show connection health
- Crash reports - Capture and log crashes
- Error aggregation - Group similar errors
- User feedback - Easy bug reporting
- Reproduction steps - Capture state for debugging
- All 13 scale types - Major, minor, modes, pentatonic, blues, etc.
- Accuracy - > 90% detection accuracy
- Confidence score - Report confidence level
- Multiple keys - Handle modulation
- Edge cases - Chromatic, atonal, etc.
- All 16 chord types - Triads, 7ths, 9ths, etc.
- Inversions - Detect root position vs inversions
- Voicing - Optimal voice leading
- Slash chords - Handle C/E, etc.
- Complex chords - 11ths, 13ths, altered chords
- Genre awareness - Pop, jazz, blues, EDM, classical
- Common progressions - I-V-vi-IV, ii-V-I, etc.
- Voice leading - Smooth transitions
- Tension/release - Musical phrasing
- Modal harmony - Dorian, Mixolydian, etc.
- Time signatures - 4/4, 3/4, 6/8, 7/8, etc.
- Swing - Straight vs swing feel
- Syncopation - Off-beat accents
- Groove - Humanization and feel
- Polyrhythm - Complex rhythms
- System prompt - AI_SYSTEM_PROMPT.md loaded correctly
- Context injection - DAW context in prompts
- Music-first thinking - AI always considers music theory
- Format enforcement - AI outputs JSON commands
- Error correction - AI can recover from errors
- OpenAI GPT-4o - Working correctly
- Anthropic Claude - Working correctly
- Perplexity - Working correctly
- OpenRouter - Working correctly
- Fallback - Switch provider on failure
- Rate limiting - Respect API rate limits
- Cost tracking - Track token usage
- Command validation - AI can't execute arbitrary code
- ACL enforcement - Destructive operations blocked
- User confirmation - Confirm before destructive actions
- Hallucination detection - Detect invalid commands
- Context window - Don't exceed token limits
- Relevance - AI suggestions are musically relevant
- Creativity - AI generates interesting ideas
- Accuracy - AI understands DAW state correctly
- Consistency - AI behavior is predictable
- Learning - AI learns from user patterns (MIDI learn)
- New track creation - Creates track if none selected
- Selected track - Inserts to selected track if available
- User-specified track - Respects track_index argument
- MIDI routing - MIDI routed correctly
- Track naming - Meaningful track names
- Bubble draggable - Can drag MIDI bubble
- Drop target - Can drop on DAW track
- MIDI file link - Creates valid MIDI file
- No corruption - MIDI files always valid
- Automatic import - DAW imports automatically
- Undo works - Can revert last generation
- Redo works - Can redo after undo
- 50-step history - Maintains 50 undo levels
- State restoration - Fully restores previous state
- Undo stack clear - Clears on new action after undo
- Save versions - Each generation saved
- 100 version limit - Maintains 100 versions
- Tagging - Can tag favorite versions
- Comparison - Can compare versions
- SHA-256 hashing - Unique IDs for deduplication
- DAW tempo detection - Reads BPM from DAW
- MIDI tempo sync - Generated MIDI matches tempo
- Tempo changes - Handles tempo automation
- Real-time sync - Updates on tempo change
- Audio analysis - Analyzes audio files
- Chroma features - Uses chroma vectors
- Krumhansl-Schmuckler - Uses K-S algorithm
- MIREX 2024 - Follows latest standards
- Accuracy - > 85% accuracy
- Pattern extraction - Extracts rhythm, melody, intervals
- Multiple clips - Learns from whole project
- Style transfer - Applies learned patterns
- Genre detection - Detects musical style
- 1-20 variations - Generates multiple variations
- Variation strategies - Rhythm, melody, harmony, all
- MusicVAE-inspired - Uses VAE-like variation
- Diversity - Variations are different from each other
- Quality - All variations are musical
- Windows 10 - Works on Windows 10
- Windows 11 - Works on Windows 11
- x64 architecture - 64-bit support
- Path separators - Backslashes handled correctly
- Registry access - VST3 registry entries
- Firewall - Windows Firewall allows localhost
- .NET dependencies - Required .NET installed
- macOS 10.15+ - Catalina and later
- Apple Silicon - ARM64 support
- Intel - x86_64 support
- Universal Binary - Both architectures in one
- Code signing - App signed for Gatekeeper
- Notarization - App notarized by Apple
- Permissions - Microphone, file access permissions
- No external deps - Remote Script has no pip dependencies
- Live API only - Only uses built-in Live modules
- Standard library - Uses only stdlib (json, socket, etc.)
- Version compatibility - Works with Python 3.11
- No npm deps - Max.js has no external dependencies
- Max API only - Only uses Max.js built-ins
- Compatibility - Works with Max 8.5+
- package.json up to date - All deps listed
- Version pinning - Exact versions or ranges
- Security audit - npm audit shows no vulnerabilities
- License compliance - All deps have compatible licenses
- Bundle size - Electron app not too large
- JUCE up to date - JUCE 8.0.9
- No external libs - Only JUCE and STL
- Static linking - All libs statically linked
- VST3 SDK - Included with JUCE
- Electron app exists - β Already complete
- React UI ported - β Already complete
- WebSocket server - β Already complete
- UDP server - β Already complete
- AI services working - β Already complete
- Minimal VST3 created - Check if exists
- UDP communication - Check implementation
- Connection status UI - Check UI exists
- "Open App" button - Check button exists
- DAW context extraction - Check implementation
- Python script created - β Already complete
- UDP JSON server - β Already complete
- LOM observers - β Already complete
- Command handlers - β All 46 commands
- Error handling - β Already complete
- Track operations - β Already complete
- Clip operations - β Already complete
- MIDI generation - β Already complete
- Automation writing - Check implementation
- Device control - β Already complete
- Scene operations - β Already complete
- M4L device created - Check if exists
- WebSocket connection - Check implementation
- Audio analysis - Check implementation
- Waveform access - Check implementation
- Envelope reading - Check implementation
- Command validation - Check implementation
- Rate limiting - Check implementation
- Kill switch - Check UI exists
- User override - Check implementation
- Logging - β Already complete
- Installer - Check if exists
- music_theory.py exists - β Yes
- All 13 scales defined - Check SCALES dict
- All 16 chord types - Check CHORD_TYPES dict
- Chord progressions - Check CHORD_PROGRESSIONS dict
- Voice leading function - Check apply_voice_leading()
- Melody harmonization - Check harmonize_melody()
- Rhythm generation - Check generate_rhythm_pattern()
- music_commands.py exists - β Yes
- 14 music commands - Check all implemented
- 4 DAW awareness commands - Check all implemented
- Error handling - Check try/except blocks
- Live API usage - Check get_notes_extended() usage
- midi_workflow.py exists - β Yes
- UndoRedoManager class - Check implementation
- VersionHistoryManager class - Check implementation
- BatchGenerator class - Check implementation
- AudioKeyDetector class - Check implementation
- MIDIPatternLearner class - Check implementation
- Command handlers - Check if registered in WingmanControl
- All imports work - β Already verified
- 46 command handlers - β Already verified
- UDP sender/receiver - Check implementation
- Observer setup - Check tempo/transport observers
- Error handling - Check exception catching
- Command latency - Measure and log
- Event throughput - Measure events/second
- Memory usage - Track over time
- CPU usage - Monitor during operation
- Commands executed - Count per session
- AI queries - Track AI usage
- Features used - Which features are popular
- Session duration - How long users work
- Error rate - Errors per session
- Success rate - Commands successful vs failed
- User satisfaction - Feedback scores
- Bug reports - Track and categorize
Here are commands to run to verify each category:
# Python syntax
find remote-script -name "*.py" -exec python3 -m py_compile {} \;
# Import structure
cd remote-script && python3 -c "from WingmanControl import WingmanControl"
# Port conflicts
netstat -ano | findstr "11000 11001 12000 12001 8123"
# VST3 build
cmake --build build --config Release --target Wingman_VST3
# React build
cd wingman-app && npm run build
# Security audit
cd wingman-app && npm audit
# File sizes
du -sh remote-script/ wingman-app/ bridge-vst3/
# Line counts
cloc remote-script/ wingman-app/ bridge-vst3/
# TODO/FIXME count
grep -r "TODO\|FIXME" remote-script/ wingman-app/ bridge-vst3/ | wc -l
# Dead code detection
vulture remote-script/
# Type checking
mypy remote-script/WingmanControl/
# Linting
pylint remote-script/WingmanControl/
eslint wingman-app/src/- Architecture diagram - Can draw the full system
- Message flow - Can trace a command end-to-end
- Error propagation - Understand how errors bubble up
- State management - Know where each piece of state lives
- Critical paths - Know the most important code paths
- Port conflicts - Know how to diagnose
- Import errors - Know how to fix
- API errors - Know Live API limitations
- Performance issues - Know what to optimize
- User confusion - Know common UX pitfalls
- All tests pass - Unit, integration, manual
- No known critical bugs - All P0 bugs fixed
- Documentation complete - All docs written
- Installer tested - Installation works
- Backward compatibility - Upgrades work
- Performance acceptable - Meets performance targets
- Security reviewed - No security issues
- Legal review - Licenses cleared
- VST3 plugin - Wingman.vst3 bundle
- Electron installer - WingmanSetup.exe
- Remote Script zip - WingmanControl.zip
- Max for Live device - Wingman.amxd
- Documentation PDF - User manual
- Release notes - CHANGELOG.md updated
- Version tags - Git tagged with version
- FAQ updated - Common questions answered
- Video tutorials - YouTube tutorials created
- Support email - Support email set up
- Discord/Slack - Community channel created
- Issue tracker - GitHub issues enabled
- API documentation - Full API docs
- Contributing guide - CONTRIBUTING.md
- Code of conduct - CODE_OF_CONDUCT.md
- Development setup - Dev environment guide
- Architecture docs - Technical deep dives
TOTAL CHECKS: 500+ β
This checklist covers everything from code quality to user experience to ensure Wingman reaches 100% perfection. Each checkbox represents a specific verification that should be performed.