All notable changes to this project will be documented in this file.
- Updated
crucible_frameworkdependency from~> 0.5.0to~> 0.5.2 - Updated
telemetrydependency from~> 1.2to~> 1.3 - Updated
postgrexdependency from>= 0.0.0to>= 0.21.1 - Updated
supertesterdependency from~> 0.3.1to~> 0.4.0
- Canonical Schema Format: Normalized
describe/1to the canonical schema format as defined in the Stage Describe Contract specification v1.0.0- Changed
:stagekey to:namekey (atom value) - Added
required,optional,types,defaultsfields for option validation - Moved
inputs/outputsto__extensions__.hedgingnamespace - Added schema version marker (
__schema_version__: "1.0.0")
- Changed
- Updated
crucible_frameworkdependency from~> 0.4.0to~> 0.5.0
- Conformance Tests: New
test/crucible_hedging/conformance_test.exsverifying stage contract compliance - Stage Contract Documentation: Added Stage Contract section to README.md with schema introspection examples
- Type specifications for all options in the canonical format
- Updated README.md with Stage Contract section documenting required/optional options
- Added schema introspection code examples
- Crucible Framework Integration: Added
CrucibleHedging.CrucibleStagemodule implementingCrucible.Stagebehaviour for seamless pipeline integration- Proper
Crucible.Contexthandling with artifacts and metrics storage - Stage completion tracking with
mark_stage_complete/2 - Support for all hedging strategies through IR configuration
- Comprehensive error handling and validation
- Proper
- Enhanced SVG Logo: Updated
assets/crucible_hedging.svgwith speed-themed racing design featuring parallel paths and finish line visualization - Configuration Management: Added
config/config.exsto disable CrucibleFramework.Repo (hedging doesn't need database persistence) - Documentation: Added comprehensive documentation in
docs/20251225/:current_state.md- Complete module inventory and architecture documentationgaps.md- Gap analysis and future improvementsimplementation_prompt.md- Detailed implementation guide
- Updated
crucible_irdependency from~> 0.1.1to~> 0.2.0 - Added
crucible_framework ~> 0.4.0dependency for Stage behaviour support - Enhanced race condition handling in core hedging logic with monotonic completion ordering
- Improved code quality with Credo integration
- Updated README.md with Crucible Framework integration examples
- Race condition in
find_first_result/1by using both completion time and monotonic completion order - Metrics calculation edge cases for empty latency lists
- Multi-level hedging pending task updates
- Code style improvements for Credo compliance
- Enhanced test reliability with
supertesterfor proper isolation
- Added
crucible_framework ~> 0.4.0for pipeline integration - Added
ecto_sql ~> 3.11(optional, for framework compatibility) - Added
postgrex >= 0.0.0(optional, for framework compatibility) - Added
supertester ~> 0.3.1for improved test isolation - Added
stream_data ~> 1.0for property-based testing support - Added
credo ~> 1.7for code quality analysis
- CrucibleIR Integration: Added dependency on
crucible_ir ~> 0.1.1for unified configuration - Pipeline Stage Interface: New
CrucibleHedging.Stagemodule implementing pipeline stage pattern- Accepts
CrucibleIR.Reliability.Hedgingconfiguration from experiment context - Provides
run/2anddescribe/1functions for pipeline integration - Supports all hedging strategies through IR configuration
- Returns structured context with results and metadata
- Accepts
- IR Config Helper: New
from_ir_config/1function to convert IR structs to keyword options - Strategy Options Mapping: Support for strategy-specific options from IR config options map
- Comprehensive Stage Tests: Full test coverage for Stage module with all strategies
- Main
CrucibleHedgingmodule now supports IR config conversion - Stage module provides detailed metadata including strategy used
- Error handling for missing or invalid IR configurations
- Documentation with IR config usage examples
- Added Stage usage examples to README
- Documented IR config integration patterns
- Added docstrings for all new public functions
- Exponential Backoff Strategy: New adaptive strategy that adjusts hedge delay based on success/failure patterns
- Decreases delay on successful hedges (multiplicative decrease)
- Increases delay on failed hedges and errors (multiplicative increase)
- Configurable min/max bounds and adjustment factors
- Ideal for rate-limited APIs and services with variable health
- Strategy naming support to isolate per-backend backoff state
- Enhanced configuration validation for exponential backoff parameters
- Comprehensive test suite for exponential backoff strategy with 100% coverage
- Strategy statistics tracking (consecutive successes/failures, total adjustments)
- Reset capability for exponential backoff strategy
- Updated
CrucibleHedging.Strategyto register exponential_backoff strategy - Added exponential backoff configuration options to
CrucibleHedging.Config - Enhanced documentation with exponential backoff usage examples
- Added validation for exponential backoff configuration parameters
- Strategies now react to error outcomes so exponential backoff can increase delay on failures
- Comprehensive design document in
docs/20251125/enhancement_design.md - Updated README.md with exponential backoff strategy section
- Added usage examples and algorithm description
- Documented configuration options and validation rules
- Based on TCP congestion control (AIMD - Additive Increase Multiplicative Decrease)
- Implements exponential backoff patterns from distributed systems
- Initial release
- Request hedging for tail latency reduction in distributed systems
- Multiple hedging strategies (fixed, percentile-based, adaptive with Thompson Sampling, workload-aware)
- Multi-tier hedging with cascade across providers for cost optimization
- Adaptive learning with online optimization to minimize regret
- Budget-aware hedging with comprehensive cost tracking
- Rich telemetry integration with detailed observability
- Production-ready implementation with lightweight GenServers and proper supervision
- Comprehensive README with examples
- API documentation for all hedging strategies
- Usage examples for LLM inference optimization
- Research foundation based on Google's "The Tail at Scale" paper
- Performance benchmarks showing 75-96% P99 latency reduction