All notable changes to this project will be documented in this file.
- Normalized describe/1 to canonical schema format - Stage now returns a consistent schema:
namechanged from string ("CrucibleBench.Stage") to atom (:bench)- Added
__schema_version__: "1.0.0"marker for schema evolution - Added
required,optional,types,defaultsfields for option validation - Moved analysis metadata to
__extensions__.benchnamespace - Removed
verbosemode (all metadata now in__extensions__)
- Added crucible_framework dependency - Now requires
crucible_framework ~> 0.5.0 - Behaviour now mandatory - Uses
@behaviour Crucible.Stageunconditionally with@impl true
- Schema version marker (
__schema_version__: "1.0.0") - Conformance tests for stage contract (
test/crucible_bench/conformance_test.exs) - Type specifications in schema for all options:
:tests- List of statistical test enums:alpha- Float for significance level:confidence_level- Float for confidence level:bootstrap_iterations- Integer for bootstrap iterations:data_source- Enum for data source selection
- README updated with Stage Contract section
- README updated with Schema Introspection example
- Installation version updated to 0.4.0
- Stage Multi-Group Support - Stage now supports multiple data layouts:
- Two-group comparison:
controlandtreatmentkeys for t-test, Mann-Whitney - Multi-group comparison:
groupskey for ANOVA, Kruskal-Wallis - Paired comparison:
beforeandafterkeys for paired t-test, Wilcoxon
- Two-group comparison:
- Stage Metrics Merging - Results automatically merged into
context.metrics:- Summary stats:
bench_n,bench_mean,bench_sd,bench_median - Test p-values:
bench_ttest_p_value,bench_anova_p_value, etc.
- Summary stats:
- Stage Type Specifications - Added
@specdeclarations for public functions - Stage Behaviour Compliance - Conditional
@behaviour Crucible.Stagewhen available - Updated SVG - Professional bell curve design for
crucible_bench.svg - Current State Documentation - Added
docs/20251225/current_state.mdwith complete module reference - Gap Analysis - Added
docs/20251225/gaps.mdwith improvement opportunities - Implementation Guide - Added
docs/20251225/implementation_prompt.mdfor Stage enhancements
- Credo Strict Compliance - All 18 issues resolved:
- Number formatting (
20700→20_700) - Alphabetically sorted aliases across 7 files
Enum.map_join/3instead ofEnum.map/2 |> Enum.join/2- Reduced function arity using map parameters
- Extracted helpers to reduce cyclomatic complexity and nesting depth
- Replaced
length/1 == 0withEnum.empty?/1
- Number formatting (
- Dependencies Updated:
crucible_irupgraded from~> 0.1.1to~> 0.2.0eval_exupgraded from~> 0.1.2to~> 0.1.4- Added
credo ~> 1.7as dev/test dependency
- README updated with Advanced Stage Configuration section
- README updated with Metrics Merging section
- New test suite for two-group comparisons
- New test suite for multi-group comparisons (ANOVA, Kruskal-Wallis)
- New test suite for paired comparisons (paired t-test, Wilcoxon)
- New test suite for metrics merging
- New test suite for behaviour compliance
- EvalLog Schema: Inspect-ai compatible evaluation log structs
- EvalEx Adapter: Convert EvalEx.Result into CrucibleBench.EvalLog
- Metric Extraction: Helpers mirroring inspect-ai analysis extractors
- README updated with EvalLog adapter usage
- Inspect-ai parity requirements updated with current status
- CrucibleIR Integration - Added dependency on
crucible_ir ~> 0.1.1for shared IR structures - CrucibleBench.Stage - New pipeline stage module for integration with crucible_framework
- Implements stage behaviour for use in pipeline orchestration
- Accepts
CrucibleIR.Reliability.Statsconfiguration from experiment context - Extracts and analyzes data from pipeline context (
:outputsor:metricskeys) - Returns comprehensive statistical analysis in
:benchcontext key - Supports test selection, confidence intervals, and bootstrap analysis
- Provides
describe/1function for stage introspection
- IR Config Support - Main
CrucibleBench.compare/3function now acceptsCrucibleIR.Reliability.Statsstruct- Automatically converts IR configuration to internal options format
- Maintains backwards compatibility with keyword list options
- Maps IR test types (
:ttest,:bootstrap, etc.) to CrucibleBench implementations
- Version bumped to 0.3.0 (MINOR version due to new functionality)
- Enhanced
CrucibleBenchmodule with multi-clause function definitions for config handling
- Complete API documentation for
CrucibleBench.Stagemodule - Updated README with Stage usage examples
- Enhanced main module documentation with IR config examples
- New comprehensive test suite for
CrucibleBench.Stage(18 tests) - Tests cover context processing, error handling, config conversion, and integration
- Property-based validation of IR config acceptance
-
Multiple Comparison Corrections - Controls Type I error rates when conducting multiple tests
- Bonferroni correction (most conservative, controls FWER)
- Holm step-down method (less conservative than Bonferroni, still controls FWER)
- Benjamini-Hochberg FDR correction (controls false discovery rate, more powerful)
- New module:
CrucibleBench.Stats.MultipleComparisons - Integration with hyperparameter sweep experiments (automatic p-value adjustment)
- Detailed correction results with original and adjusted p-values
-
Formal Normality Tests - Statistical tests for distribution assumptions
- Shapiro-Wilk test (most powerful omnibus test, n = 3 to 5000)
- Comprehensive normality assessment combining multiple approaches
- Quick normality check using skewness/kurtosis thresholds
- New module:
CrucibleBench.Stats.NormalityTests
-
Variance Equality Tests - Validates homogeneity of variance assumptions
- Levene's test (robust to non-normality, uses median-based deviations)
- F-test for two groups (parametric, sensitive to normality)
- Quick variance check using variance ratios
- New module:
CrucibleBench.Stats.VarianceTests
- Hyperparameter sweep experiments now apply multiple comparison corrections by default (Holm method)
- Export module updated to display adjusted p-values in pairwise comparison tables
- Experiment results include correction method information
- Comprehensive enhancement design document in
docs/20251125/enhancement_design.md - Complete API documentation for all new modules
- Examples demonstrating each new feature
- Best practices for multiple comparison handling
- 3 new comprehensive test suites (multiple_comparisons_test, normality_tests_test, variance_tests_test)
- Property-based testing for monotonicity and boundary conditions
- Integration tests demonstrating end-to-end functionality
- Complete statistical testing framework with parametric (Student's, Welch's, paired t-tests, one-way ANOVA) and non-parametric (Mann-Whitney U, Wilcoxon signed-rank, Kruskal-Wallis) coverage using accurate distribution functions
- Expanded effect size suite including Cohen's d, Hedges' g, Glass's delta, paired Cohen's d, eta-squared/omega-squared, and rank-biserial correlation with interpretation guidance
- Confidence intervals (analytical and bootstrap) and power analysis (a priori and post-hoc for t-tests and ANOVA) with actionable recommendations
- High-level analysis helpers for automatic test selection plus experiment DSL for A/B tests, ablation studies, and hyperparameter sweeps
- Publication-ready exports to Markdown, LaTeX, and HTML with standardized result metadata
- Initial release
- Comprehensive statistical testing framework for AI/ML research
- Parametric tests (t-tests, ANOVA) and non-parametric tests (Mann-Whitney, Wilcoxon, Kruskal-Wallis)
- Effect size measures (Cohen's d, Hedges' g, Glass's delta, eta-squared, omega-squared)
- Power analysis with a priori and post-hoc calculations
- Confidence intervals using bootstrap and analytical methods
- High-level experiment DSL for A/B tests, ablation studies, and hyperparameter sweeps
- Publication-ready export formats (Markdown, LaTeX, HTML)
- Comprehensive README with examples
- API documentation for all statistical tests
- Usage examples for common AI research scenarios
- Best practices guide for statistical rigor in AI research