///|
/// Private operation settings keep the public Config record source-compatible.
priv struct ConversionConfig {
  settings : Config
  value_contracts : Bool
}

///|
fn validate_value_config(
  config : ConversionConfig,
) -> Unit raise JsonSchemaError {
  if config.value_contracts && config.settings.support_non_numeric_floats {
    raise InvalidConfiguration(
      "Value schemas require support_non_numeric_floats=false; nonnumeric alternatives cannot retain numeric bounds",
    )
  }
  if config.value_contracts && config.settings.map_strategy != "propertyNames" {
    raise InvalidConfiguration(
      "Value schemas require map_strategy=propertyNames to retain map key and sparse value contracts",
    )
  }
  if config.value_contracts && config.settings.union_strategy != "oneOf" {
    raise InvalidConfiguration(
      "Value schemas require union_strategy=oneOf to retain union member contracts",
    )
  }
}