Commit Graph

2 Commits

Author SHA1 Message Date
3bff7cf6b3 feat: Add structured logging system for production-ready error handling (Phase 1.3)
Implements comprehensive, production-ready logging infrastructure to replace
ad-hoc print() statements across the codebase. This establishes a consistent
logging standard for MVP stability.

## What Changed

**New Files:**
- optimization_engine/logger.py (330 lines)
  - AtomizerLogger class with trial-specific methods
  - Color-coded console output (Windows 10+ and Unix)
  - Automatic file logging with rotation (50MB, 3 backups)
  - Zero external dependencies (stdlib only)

- docs/07_DEVELOPMENT/Phase_1_3_Implementation_Plan.md
  - Complete Phase 1.3 implementation plan
  - API documentation and usage examples
  - Migration strategy for existing studies

## Features

1. **Structured Trial Logging:**
   - logger.trial_start() - Log trial with design variables
   - logger.trial_complete() - Log results with objectives/constraints
   - logger.trial_failed() - Log failures with error details
   - logger.study_start() - Log study initialization
   - logger.study_complete() - Log final summary

2. **Production Features:**
   - ANSI color-coded console output (DEBUG=cyan, INFO=green, etc.)
   - Automatic file logging to {study_dir}/optimization.log
   - Log rotation: 50MB max, 3 backup files
   - Timestamps and structured format for dashboard parsing

3. **Simple API:**
   ```python
   from optimization_engine.logger import get_logger
   logger = get_logger(__name__, study_dir=Path("studies/foo/2_results"))
   logger.study_start("foo", n_trials=30, sampler="NSGAIISampler")
   logger.trial_start(1, design_vars)
   logger.trial_complete(1, objectives, constraints, feasible=True)
   ```

## Testing

- Verified color output on Windows 10
- Tested file logging and rotation
- Confirmed trial-specific methods format correctly
- UTF-8 encoding handles special characters

## Next Steps (Phase 1.3.1)

- Integrate logging into drone_gimbal_arm_optimization (reference implementation)
- Create migration guide for existing studies
- Update create-study skill to include logger setup

## Technical Details

Current state analyzed:
- 1416 occurrences of logging/print across 79 files
- 411 occurrences of try:/except/raise across 59 files
- Mix of print(), traceback, and inconsistent formatting

This logging system provides the foundation for:
- Dashboard integration (structured trial logs)
- Error recovery (checkpoint system in Phase 1.3.2)
- Production debugging (file logs with rotation)

Related: Phase 1.2 (Configuration Validation)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 09:27:27 -05:00
155f5a8522 feat: Add configuration validation system for MVP stability (Phase 1.2)
Implements JSON Schema validation for optimization configurations to ensure
consistency across all studies and prevent configuration errors.

Added:
- optimization_engine/schemas/optimization_config_schema.json
  - Comprehensive schema for Protocol 10 & 11 configurations
  - Validates objectives, constraints, design variables, simulation settings
  - Enforces standard field names (goal, bounds, parameter, threshold)

- optimization_engine/config_manager.py
  - ConfigManager class with schema validation
  - CLI tool: python config_manager.py <config.json>
  - Type-safe accessor methods for config elements
  - Custom validations: bounds check, multi-objective consistency, location check

- optimization_engine/schemas/README.md
  - Complete documentation of standard configuration format
  - Validation examples and common error fixes
  - Migration guidance for legacy configs

- docs/07_DEVELOPMENT/Phase_1_2_Implementation_Plan.md
  - Detailed implementation plan for remaining Phase 1.2 tasks
  - Migration tool design, integration guide, testing plan

Testing:
- Validated drone_gimbal_arm_optimization config successfully
- ConfigManager works with drone_gimbal format (new standard)
- Identifies legacy format issues in bracket studies

Standards Established:
- Configuration location: studies/{name}/1_setup/
- Objective direction: "goal" not "type"
- Design var bounds: "bounds": [min, max] not "min"/"max"
- Design var name: "parameter" not "name"
- Constraint threshold: "threshold" not "value"

Next Steps (Phase 1.2.1+):
- Config migration tool for legacy studies
- Integration with run_optimization.py
- Update create-study Claude skill with schema reference
- Migrate bracket studies to new format

Relates to: Phase 1.2 MVP Development Plan

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 09:21:55 -05:00