All notable changes to this project will be documented in this file.
- Dependency Update: Updated
telemetryfrom~> 1.2to~> 1.3 - Code Quality: Applied comprehensive Credo fixes including alias sorting, complexity reduction, and style improvements.
- Cleanup: Removed commented-out dependency declarations for
crucible_irandcrucible_framework
All existing code continues to work unchanged.
- TaskState Parity: Model/epoch/target/choices/scores/limits/tool metadata +
input_text/user_prompthelpers - Tool Calling Flow: Generate solver supports
loop,single, andnonetool-call handling - Tool Definitions:
CrucibleHarness.Toolfor normalized tool specs and execution
- Generate config docs now include
toolsandtool_choice - README/USAGE updated with tool-call examples and new TaskState fields
- Added tests for TaskState helpers, choices, tool-call loop, and message-limit completion
- inspect-ai Parity Modules: Added execution orchestration patterns inspired by inspect-ai
CrucibleHarness.Solver- Behaviour for composable execution stepsCrucibleHarness.Solver.Chain- Sequential solver composition with early terminationCrucibleHarness.Solver.Generate- Built-in solver for LLM generationCrucibleHarness.TaskState- State object threaded through solver pipelinesCrucibleHarness.Generate- Behaviour for LLM backend implementations
- Solver Composition: Chain multiple solvers into sequential pipelines
- Early Termination: Chains stop on errors or when
state.completedis set - Flexible Solver Types: Support for both module-based and struct-based solvers
- State Threading: TaskState carries messages, metadata, and inter-solver communication via store
- Backend Abstraction: Generate behaviour allows swapping LLM backends (Tinkex, OpenAI, etc.)
- Added comprehensive inline documentation with examples for all new modules
- Added design specification in
docs/20251223/INSPECT_AI_PARITY_SPEC.md
- Added 80+ new tests covering all solver functionality
- 100% test pass rate with no compilation warnings
- New modules follow inspect-ai's Solver/TaskState/Generate architecture
- Compatible with existing CrucibleHarness experiment orchestration
- No breaking changes to existing APIs
- Dependency Update: Now depends on
crucible_irv0.1.1 for shared IR structs - Framework Integration: Updated to work with
crucible_frameworkv0.5.0 - Module Namespace: All IR imports updated from
Crucible.IR.*toCrucibleIR.*
If you were using internal IR structs (uncommon in typical usage), update your imports:
# Before (if you were using internal IR structs)
alias Crucible.IR.{Experiment, BackendRef, StageDef}
# After
alias CrucibleIR.{Experiment, BackendRef, StageDef}For most users, this change is transparent as the harness API remains unchanged.
- Added
crucible_iras a direct dependency for IR struct definitions - Updated to
crucible_frameworkv0.5.0 which now usescrucible_irinternally - No breaking changes to the public API - all DSL macros work identically
-
Lifecycle Hooks System: Added comprehensive hook support for experiment lifecycle management
before_experiment/1- Setup operations before experiment startsafter_experiment/1- Teardown operations after experiment completesbefore_condition/1- Pre-processing before each condition executionafter_condition/1- Post-processing after each condition executionon_error/1- Custom error handling with :retry, :skip, :abort actions- New
CrucibleHarness.Hooks.Executormodule for safe hook execution with error handling
-
Error Recovery Framework (Partial): Foundation for robust error handling
- Test suite for retry logic with exponential backoff
- Test suite for error classification (transient vs permanent)
- Test suite for dead letter queue (DLQ) for failed tasks
- Test suite for circuit breaker pattern
- Implementation of error recovery modules in progress
-
Metric Validation System (Partial): Runtime validation of experiment results
- Test suite for metric schema validation
- Test suite for type coercion and range checking
- Test suite for nested schema validation
- Implementation of validation modules in progress
-
Comprehensive Design Document: Added
docs/20251125/enhancement_design.md- Detailed analysis of 8 major enhancement areas
- Implementation roadmap with 4 phases
- API specifications and examples
- Testing strategy and performance considerations
- Updated
CrucibleHarness.Experimentmodule to support hook macros - Extended experiment configuration to include hooks and metric schemas
- Version bump to 0.2.0 reflecting significant new capabilities
- Added detailed design document in
docs/20251125/ - Updated README.md with version 0.2.0
- Test files documenting expected behavior for new features
- Added 3 new comprehensive test files (90+ tests):
test/research_harness/hooks_test.exs- Lifecycle hooks testingtest/research_harness/errors_test.exs- Error recovery testingtest/research_harness/validation_test.exs- Metric validation testing
- Status: Core infrastructure for Phase 1 enhancements is in place
- Next Steps: Complete implementation of error recovery and metric validation modules
- Backward Compatibility: All changes are 100% backward compatible - hooks are optional
- Fixed Flow pipeline configuration in Runner for proper parallel execution
- Fixed arithmetic errors in statistical analyzer when variance is zero
- Fixed reporter formatters to handle infinity values gracefully
- Removed unused variable warnings in example files
- Comprehensive test suite with 13 tests covering all major modules
- Integration tests for full experiment workflow
- Runnable example scripts:
run_simple_comparison.exsandrun_ensemble_comparison.exs - Helper functions for safe number formatting in all report generators
- Statistical analyzer now handles edge cases (zero variance, equal means)
- Better error handling throughout the codebase
- Enhanced test coverage for Runner, Collector, Reporter, and utilities
- Initial release
- Automated experiment orchestration for large-scale AI research
- Declarative experiment definition with DSL for complex experimental designs
- Parallel execution leveraging BEAM's concurrency for efficient multi-condition runs
- Fault tolerance with checkpointing and resume capabilities
- Automated statistical analysis with significance testing across all condition pairs
- Multi-format reporting (Markdown, LaTeX, HTML, Jupyter notebooks)
- Cost management with estimation and budget controls
- Reproducibility features with version control and controlled random seeds
- Comprehensive README with examples
- API documentation for experiment definition and execution
- Usage examples for parameter sweeps and A/B testing
- Integration guide for research workflow automation