Skip to content

v0.5.0

@nshkrdotcom nshkrdotcom tagged this 27 Dec 20:46
Refactor the CrucibleStage.describe/1 callback to conform to the
Crucible Stage contract specification v1.0. This breaking change
establishes a standardized schema format for tooling integration
and stage introspection.

Schema Changes:
- Rename :stage key to :name (atom value) for consistency
- Add __schema_version__ marker ("1.0.0") for schema evolution
- Add required field (list of required option keys)
- Add optional field (list of optional option keys)
- Add types field (type specifications for all options)
- Add defaults field (default values for optional options)
- Move metrics list to __extensions__.fairness.supported_metrics
- Add data_sources describing assigns and outputs field mappings
- Add output_location specifying metrics storage path

Testing:
- Add conformance_test.exs validating Stage contract compliance
- Extend describe/1 tests for canonical schema validation
- Add tests for extensions, data sources, and type coverage

Dependencies:
- Update crucible_framework to ~> 0.5.0 (required for new contract)
- Update crucible_ir to ~> 0.2.1
- Pin postgrex to >= 0.21.1

This is a breaking change for any code relying on the previous
describe/1 return format. Consumers should update to use :name
instead of :stage and access supported metrics via the
__extensions__.fairness.supported_metrics path.
Assets 2
Loading