# Climate Health Resilience Simulator — scientific parameter registry
# --------------------------------------------------------------------------
# EVERY VALUE IN THIS FILE IS SYNTHETIC, ASSUMED, OR ILLUSTRATIVE.
# No value implies evidence from any real population, city, or event.
# Each parameter declares: owner module, consumer modules, evidence status,
# calibration and sensitivity eligibility, and an interpretation warning.
parameter_set_id: climate_health_illustrative_v2
description: Illustrative governing defaults; v2 corrects zone-modifier semantics, bounded heat-vulnerability moments, marginal disability, urgent-resolution, queue ownership, seeking/access accounting, and joint new-need probability validation (independent-review remediation 2026-08-09).
assumption_label: illustrative
calibrated: false
parameters:
  population.age_group_proportions:
    name: population.age_group_proportions
    description: Shares of the synthetic population in each age group.
    unit: proportion
    value_type: distribution
    minimum: null
    maximum: null
    default: {"18_44": 0.45, "45_64": 0.30, "65_79": 0.18, "80_plus": 0.07}
    evidence_status: synthetic
    source: "placeholder: census-age-shape analogue (none used)"
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: false
    interpretation_warning: Age-group shares are synthetic; they do not describe any real city.
  population.sex_category_proportions:
    name: population.sex_category_proportions
    description: Shares of the synthetic population in each represented sex category.
    unit: proportion
    value_type: distribution
    minimum: null
    maximum: null
    default: {female: 0.52, male: 0.48}
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: false
    interpretation_warning: The category reflects the synthetic configuration only.
  population.socioeconomic_proportions:
    name: population.socioeconomic_proportions
    description: Shares of the synthetic population by socioeconomic group.
    unit: proportion
    value_type: distribution
    minimum: null
    maximum: null
    default: {low: 0.30, middle: 0.50, high: 0.20}
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: false
    interpretation_warning: Groups are synthetic labels, not official income strata.
  population.zone_proportions:
    name: population.zone_proportions
    description: Shares of the synthetic population by residential zone.
    unit: proportion
    value_type: distribution
    minimum: null
    maximum: null
    default: {0: 0.25, 1: 0.20, 2: 0.20, 3: 0.20, 4: 0.15}
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: false
    interpretation_warning: Zone shares are synthetic; no real geography is reproduced.
  population.chronic_burden_proportions:
    name: population.chronic_burden_proportions
    description: Shares of the synthetic population by number of chronic conditions.
    unit: proportion
    value_type: distribution
    minimum: null
    maximum: null
    default: {0: 0.55, 1: 0.25, 2: 0.12, 3: 0.08}
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: false
    interpretation_warning: Chronic burden is a synthetic categorical count, not a clinical diagnosis.
  population.disability_probability:
    name: population.disability_probability
    description: Probability a synthetic resident has a disability.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.13
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Disability is a simplified binary synthetic trait.
  population.public_transport_dependence_probability:
    name: population.public_transport_dependence_probability
    description: Probability a synthetic resident without a vehicle depends on public transport.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.55
    evidence_status: assumed
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed share; not derived from any city's modal split.
  population.private_vehicle_probability:
    name: population.private_vehicle_probability
    description: Probability a synthetic resident has access to a private vehicle.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.60
    evidence_status: assumed
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed vehicle-access share; no city-level data used.
  population.social_isolation_probability:
    name: population.social_isolation_probability
    description: Probability a synthetic resident is socially isolated.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.18
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Simplified binary isolation indicator, not a validated scale.
  population.mobility_limitation_probability:
    name: population.mobility_limitation_probability
    description: Probability a synthetic resident has a mobility limitation.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.10
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Simplified binary trait affecting travel multipliers.
  population.latent_correlation_strength:
    name: population.latent_correlation_strength
    description: Scales the correlation pattern among synthetic latent traits.
    unit: dimensionless
    value_type: float
    minimum: 0.0
    maximum: 0.95
    default: 0.35
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Correlation structure is synthetic; it is not an estimate from data.
  population.heat_vulnerability_mean:
    name: population.heat_vulnerability_mean
    description: Mean of the bounded normal heat-vulnerability score; lower-bound truncation at zero shifts the observed mean slightly above the declared value.
    unit: score (0-1)
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.30
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Composite exploratory score; not a clinical risk score.
  population.heat_vulnerability_std:
    name: population.heat_vulnerability_std
    description: Standard deviation of the bounded normal heat-vulnerability score before truncation to the unit interval.
    unit: score (0-1)
    value_type: float
    minimum: 0.0
    maximum: 0.5
    default: 0.15
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory dispersion; not a clinical distribution.
  population.baseline_need_mean:
    name: population.baseline_need_mean
    description: Mean baseline care-need intensity of the synthetic population.
    unit: score (0-1)
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.25
    evidence_status: synthetic
    source: null
    owner_module: population.synthesis
    consumer_modules: [population.synthesis]
    calibration_eligible: false
    sensitivity_eligible: false
    interpretation_warning: Descriptive synthetic resident attribute retained for provenance; it has no behavioural pathway in version 1.
  geography.n_zones:
    name: geography.n_zones
    description: Number of residential/facility zones in the synthetic city.
    unit: zones
    value_type: int
    minimum: 2
    maximum: 50
    default: 5
    evidence_status: synthetic
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: false
    sensitivity_eligible: false
    interpretation_warning: Zone count is a modelling choice, not a city district count.
  geography.zone_grid_size:
    name: geography.zone_grid_size
    description: Side length of the square zone grid.
    unit: zones
    value_type: int
    minimum: 1
    maximum: 10
    default: 3
    evidence_status: synthetic
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: false
    sensitivity_eligible: false
    interpretation_warning: Grid geometry is synthetic.
  geography.zone_spacing_km:
    name: geography.zone_spacing_km
    description: Distance between adjacent zone centres.
    unit: km
    value_type: float
    minimum: 0.1
    maximum: 50.0
    default: 8.0
    evidence_status: synthetic
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic spacing; no real street geometry used.
  geography.base_speed_kmh:
    name: geography.base_speed_kmh
    description: Assumed baseline driving speed for travel-time calculation.
    unit: km/h
    value_type: float
    minimum: 1.0
    maximum: 120.0
    default: 30.0
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed urban driving speed; not traffic-model output.
  geography.within_zone_travel_time_minutes:
    name: geography.within_zone_travel_time_minutes
    description: Travel time between points inside the same zone.
    unit: minutes
    value_type: float
    minimum: 0.0
    maximum: 120.0
    default: 12.0
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Simplified within-zone travel assumption.
  geography.travel_transit_multiplier:
    name: geography.travel_transit_multiplier
    description: Multiplier applied to travel time for public-transport-dependent residents.
    unit: dimensionless
    value_type: float
    minimum: 1.0
    maximum: 10.0
    default: 1.7
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed transit penalty factor.
  geography.travel_mobility_multiplier:
    name: geography.travel_mobility_multiplier
    description: Multiplier applied to travel time for residents with mobility limitation.
    unit: dimensionless
    value_type: float
    minimum: 1.0
    maximum: 10.0
    default: 1.5
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed mobility penalty factor.
  geography.travel_disruption_max_multiplier:
    name: geography.travel_disruption_max_multiplier
    description: Maximum travel-time multiplier during full transport disruption.
    unit: dimensionless
    value_type: float
    minimum: 1.0
    maximum: 10.0
    default: 3.0
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed disruption ceiling; no transport model used.
  geography.travel_disruption_ramp_days:
    name: geography.travel_disruption_ramp_days
    description: Days over which transport disruption reaches full severity.
    unit: days
    value_type: int
    minimum: 0
    maximum: 30
    default: 2
    evidence_status: assumed
    source: null
    owner_module: infrastructure.power
    consumer_modules: [simulation.model]
    calibration_eligible: false
    sensitivity_eligible: true
    interpretation_warning: Ramp assumption; disruption timing is scenario-driven.
  geography.travel_support_multiplier:
    name: geography.travel_support_multiplier
    description: Travel-time multiplier for residents receiving targeted transport support.
    unit: dimensionless
    value_type: float
    minimum: 0.05
    maximum: 1.0
    default: 0.6
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed effectiveness of transport support; not field-evaluated.
  geography.travel_hard_limit_multiplier:
    name: geography.travel_hard_limit_multiplier
    description: Multiple of the acceptable travel time beyond which a zone is unreachable.
    unit: dimensionless
    value_type: float
    minimum: 1.0
    maximum: 10.0
    default: 2.0
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed threshold structure, not an accessibility standard.
  geography.max_acceptable_travel_time_routine_minutes:
    name: geography.max_acceptable_travel_time_routine_minutes
    description: Maximum acceptable travel time for routine care.
    unit: minutes
    value_type: float
    minimum: 0.0
    maximum: 600.0
    default: 60.0
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed accessibility threshold; no local standard adopted.
  geography.max_acceptable_travel_time_urgent_minutes:
    name: geography.max_acceptable_travel_time_urgent_minutes
    description: Maximum acceptable travel time for urgent care.
    unit: minutes
    value_type: float
    minimum: 0.0
    maximum: 600.0
    default: 45.0
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed accessibility threshold; no local standard adopted.
  geography.max_acceptable_travel_time_emergency_minutes:
    name: geography.max_acceptable_travel_time_emergency_minutes
    description: Maximum acceptable travel time for emergency care.
    unit: minutes
    value_type: float
    minimum: 0.0
    maximum: 600.0
    default: 30.0
    evidence_status: assumed
    source: null
    owner_module: geography.zones
    consumer_modules: [geography.zones]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed accessibility threshold; no clinical standard adopted.
  climate.tmax_base_mean_c:
    name: climate.tmax_base_mean_c
    description: Mean daily maximum temperature of the synthetic seasonal baseline.
    unit: degC
    value_type: float
    minimum: -20.0
    maximum: 55.0
    default: 32.0
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic climate baseline; not a real climatology.
  climate.tmax_base_amplitude_c:
    name: climate.tmax_base_amplitude_c
    description: Seasonal amplitude of the synthetic maximum-temperature sinusoid.
    unit: degC
    value_type: float
    minimum: 0.0
    maximum: 30.0
    default: 6.0
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic seasonality.
  climate.tmax_daily_noise_c:
    name: climate.tmax_daily_noise_c
    description: Standard deviation of synthetic day-to-day temperature noise.
    unit: degC
    value_type: float
    minimum: 0.0
    maximum: 10.0
    default: 1.2
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic noise; not observational variance.
  climate.tmin_offset_c:
    name: climate.tmin_offset_c
    description: Offset subtracted from daily maximum to obtain minimum temperature.
    unit: degC
    value_type: float
    minimum: 0.0
    maximum: 25.0
    default: 8.0
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic diurnal range assumption.
  climate.tmax_heatwave_threshold_c:
    name: climate.tmax_heatwave_threshold_c
    description: Maximum temperature at or above which a day counts toward a heatwave.
    unit: degC
    value_type: float
    minimum: 0.0
    maximum: 60.0
    default: 35.0
    evidence_status: illustrative
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure, simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Illustrative threshold; not an official heatwave definition.
  climate.heatwave_ramp_days:
    name: climate.heatwave_ramp_days
    description: Days for heatwave excess temperature to ramp to its peak.
    unit: days
    value_type: int
    minimum: 0
    maximum: 30
    default: 3
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: false
    sensitivity_eligible: true
    interpretation_warning: Synthetic heatwave shape assumption.
  climate.heatwave_decay_days:
    name: climate.heatwave_decay_days
    description: Days for heatwave excess temperature to decay from its peak.
    unit: days
    value_type: int
    minimum: 0
    maximum: 30
    default: 3
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: false
    sensitivity_eligible: true
    interpretation_warning: Synthetic heatwave shape assumption.
  climate.relative_humidity_base_percent:
    name: climate.relative_humidity_base_percent
    description: Baseline relative humidity of the synthetic climate profile.
    unit: percent
    value_type: float
    minimum: 0.0
    maximum: 100.0
    default: 45.0
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic humidity; not observational.
  climate.relative_humidity_heatwave_percent:
    name: climate.relative_humidity_heatwave_percent
    description: Relative humidity during synthetic heatwave episodes.
    unit: percent
    value_type: float
    minimum: 0.0
    maximum: 100.0
    default: 35.0
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic humidity; not observational.
  climate.urban_heat_island_boost_c:
    name: climate.urban_heat_island_boost_c
    description: Zone-level maximum temperature boost applied to exposed zones.
    unit: degC
    value_type: float
    minimum: 0.0
    maximum: 15.0
    default: 2.0
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Simplified heat-island representation.
  climate.zone_exposure_modifiers:
    name: climate.zone_exposure_modifiers
    description: Per-zone multipliers applied literally to the urban heat-island boost by zone key; values around one are multipliers, never probability shares, and are never normalized.
    unit: dimensionless
    value_type: mapping
    minimum: null
    maximum: null
    default: {0: 1.0, 1: 1.05, 2: 1.10, 3: 0.95, 4: 1.15}
    evidence_status: synthetic
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: false
    interpretation_warning: Synthetic zone multipliers; no land-surface data used.
  climate.cumulative_exposure_threshold_c:
    name: climate.cumulative_exposure_threshold_c
    description: Temperature above which degrees count toward cumulative heat exposure.
    unit: degC
    value_type: float
    minimum: 0.0
    maximum: 60.0
    default: 32.0
    evidence_status: illustrative
    source: null
    owner_module: climate.exposure
    consumer_modules: [climate.exposure]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Illustrative cumulative-exposure basis.
  infrastructure.outage_zone_coverage:
    name: infrastructure.outage_zone_coverage
    description: Fraction of zones affected by an electricity outage episode.
    unit: proportion
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.8
    evidence_status: synthetic
    source: null
    owner_module: infrastructure.power
    consumer_modules: [infrastructure.power]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic outage coverage; scenario-controlled.
  infrastructure.backup_failure_probability:
    name: infrastructure.backup_failure_probability
    description: Daily probability that backup power fails when needed.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.0
    evidence_status: synthetic
    source: null
    owner_module: infrastructure.power
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic backup reliability; default assumes perfect backup.
  facilities.primary_care_count:
    name: facilities.primary_care_count
    description: Number of primary-care facilities in the synthetic city.
    unit: facilities
    value_type: int
    minimum: 0
    maximum: 100
    default: 3
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic facility inventory; not a real service registry.
  facilities.urgent_care_count:
    name: facilities.urgent_care_count
    description: Number of urgent-care facilities in the synthetic city.
    unit: facilities
    value_type: int
    minimum: 0
    maximum: 100
    default: 1
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic facility inventory.
  facilities.emergency_count:
    name: facilities.emergency_count
    description: Number of emergency departments in the synthetic city.
    unit: facilities
    value_type: int
    minimum: 0
    maximum: 100
    default: 1
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic facility inventory.
  facilities.community_health_count:
    name: facilities.community_health_count
    description: Number of community health centres in the synthetic city.
    unit: facilities
    value_type: int
    minimum: 0
    maximum: 100
    default: 2
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic facility inventory.
  facilities.cooling_centre_count:
    name: facilities.cooling_centre_count
    description: Number of optional cooling centres in the synthetic city.
    unit: facilities
    value_type: int
    minimum: 0
    maximum: 100
    default: 1
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Cooling centres are not linked to care allocation in version 1.
  facilities.zone_assignments:
    name: facilities.zone_assignments
    description: Configured placement zones for each fixed facility type.
    unit: zone identifiers
    value_type: mapping
    minimum: null
    maximum: null
    default:
      primary_care: [0, 2, 4]
      urgent_care: [2]
      emergency: [4]
      community_health: [1, 4]
      cooling: [3]
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: false
    sensitivity_eligible: false
    interpretation_warning: Synthetic facility placement; not a real service registry.
  facilities.primary_care_capacity:
    name: facilities.primary_care_capacity
    description: Nominal daily person-visit capacity of each primary-care facility.
    unit: person-visits per day
    value_type: float
    minimum: 0.0
    maximum: 100000.0
    default: 24.0
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic nominal capacity; not a real service registry.
  facilities.urgent_care_capacity:
    name: facilities.urgent_care_capacity
    description: Nominal daily person-visit capacity of each urgent-care facility.
    unit: person-visits per day
    value_type: float
    minimum: 0.0
    maximum: 100000.0
    default: 8.0
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic nominal capacity.
  facilities.emergency_capacity:
    name: facilities.emergency_capacity
    description: Nominal daily person-visit capacity of each emergency department.
    unit: person-visits per day
    value_type: float
    minimum: 0.0
    maximum: 100000.0
    default: 6.0
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic nominal capacity.
  facilities.community_health_capacity:
    name: facilities.community_health_capacity
    description: Nominal daily person-visit capacity of each community health centre.
    unit: person-visits per day
    value_type: float
    minimum: 0.0
    maximum: 100000.0
    default: 10.0
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic nominal capacity.
  facilities.cooling_centre_capacity:
    name: facilities.cooling_centre_capacity
    description: Nominal daily person capacity of each cooling centre.
    unit: persons per day
    value_type: float
    minimum: 0.0
    maximum: 100000.0
    default: 20.0
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Cooling centres are not linked to care allocation in version 1.
  facilities.opening_hours_default:
    name: facilities.opening_hours_default
    description: Default daily opening hours of care facilities.
    unit: hours per day
    value_type: float
    minimum: 0.1
    maximum: 24.0
    default: 10.0
    evidence_status: assumed
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities, simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed service hours; not a real schedule.
  facilities.max_effective_capacity_factor:
    name: facilities.max_effective_capacity_factor
    description: Upper bound on effective capacity as a multiple of nominal capacity.
    unit: dimensionless
    value_type: float
    minimum: 0.1
    maximum: 10.0
    default: 1.0
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [simulation.model]
    calibration_eligible: false
    sensitivity_eligible: false
    interpretation_warning: Engineering bound; effective capacity never exceeds nominal.
  facilities.cooling_failure_capacity_factor:
    name: facilities.cooling_failure_capacity_factor
    description: Effective-capacity factor when facility cooling fails.
    unit: dimensionless
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.5
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Illustrative cooling-failure degradation factor.
  facilities.workforce_absenteeism_base:
    name: facilities.workforce_absenteeism_base
    description: Baseline staff-absenteeism fraction at facilities.
    unit: proportion
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.04
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic absenteeism; not workforce data.
  facilities.workforce_absenteeism_heat_max:
    name: facilities.workforce_absenteeism_heat_max
    description: Maximum staff-absenteeism fraction under extreme heat.
    unit: proportion
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.25
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic ceiling; no workforce study used.
  facilities.workforce_absenteeism_heat_beta:
    name: facilities.workforce_absenteeism_heat_beta
    description: Additional absenteeism fraction per degree above the heatwave threshold.
    unit: proportion per degC
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.03
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic heat-response slope.
  facilities.electricity_dependent_fraction:
    name: facilities.electricity_dependent_fraction
    description: Fraction of facilities that depend on the electricity grid.
    unit: proportion
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.85
    evidence_status: assumed
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed dependency share; no facility engineering audit.
  facilities.cooling_dependent_fraction:
    name: facilities.cooling_dependent_fraction
    description: Fraction of facilities whose capacity degrades without cooling.
    unit: proportion
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.9
    evidence_status: assumed
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Assumed dependency share.
  facilities.backup_power_fraction_default:
    name: facilities.backup_power_fraction_default
    description: Default fraction of electricity-dependent facilities with backup power.
    unit: proportion
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.30
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [services.facilities]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic default; scenario S6 overrides via its own coverage.
  facilities.staff_shortage_workforce_fraction_threshold:
    name: facilities.staff_shortage_workforce_fraction_threshold
    description: Workforce fraction below which a facility-day is labelled staff-short.
    unit: workforce fraction
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.90
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [simulation.model]
    calibration_eligible: false
    sensitivity_eligible: false
    interpretation_warning: Synthetic reporting threshold; not an operational staffing standard.
  facilities.queue_multiplier:
    name: facilities.queue_multiplier
    description: Queue capacity as a multiple of effective facility capacity.
    unit: dimensionless
    value_type: float
    minimum: 0.0
    maximum: 10.0
    default: 1.5
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [allocation.queueing]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic queueing rule.
  facilities.max_queue_days:
    name: facilities.max_queue_days
    description: Maximum days a resident may wait before need becomes unmet.
    unit: days
    value_type: int
    minimum: 0
    maximum: 60
    default: 3
    evidence_status: synthetic
    source: null
    owner_module: services.facilities
    consumer_modules: [allocation.queueing]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic waiting-time rule.
  needs.routine_daily_probability:
    name: needs.routine_daily_probability
    description: Daily probability a resident without need acquires routine care need.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.020
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic need incidence; not service-use statistics.
  needs.urgent_daily_probability:
    name: needs.urgent_daily_probability
    description: Daily probability a resident without need acquires urgent care need.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.004
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic need incidence.
  needs.emergency_daily_probability:
    name: needs.emergency_daily_probability
    description: Daily probability a resident without need acquires emergency care need.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.0008
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic need incidence; not an emergency-rate estimate.
  needs.heat_need_multiplier_peak:
    name: needs.heat_need_multiplier_peak
    description: Maximum multiplicative increase in care need during extreme exposure.
    unit: dimensionless
    value_type: float
    minimum: 1.0
    maximum: 20.0
    default: 3.0
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory demand-response curve; not empirical demand elasticity.
  needs.heat_need_exposure_halfway:
    name: needs.heat_need_exposure_halfway
    description: Exposure above threshold at which heat-driven need reaches half its peak.
    unit: degC
    value_type: float
    minimum: 0.1
    maximum: 20.0
    default: 4.0
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory demand-response curve.
  needs.chronic_need_multiplier:
    name: needs.chronic_need_multiplier
    description: Multiplicative increase in routine need per additional chronic condition.
    unit: dimensionless
    value_type: float
    minimum: 1.0
    maximum: 10.0
    default: 1.4
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic burden-response multiplier.
  needs.urgent_escalation_probability:
    name: needs.urgent_escalation_probability
    description: Daily probability a routine need escalates to urgent.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.10
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic escalation rule.
  needs.emergency_escalation_probability:
    name: needs.emergency_escalation_probability
    description: Daily probability an urgent need escalates to emergency.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.03
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic escalation rule.
  needs.need_resolution_daily_probability:
    name: needs.need_resolution_daily_probability
    description: Daily probability an existing need resolves without service.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.35
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [health_needs.needs]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic resolution rule; served needs resolve immediately.
  needs.seeking_probability_base:
    name: needs.seeking_probability_base
    description: Probability a resident with accessible need seeks care.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.85
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic care-seeking behaviour.
  needs.seeking_probability_heat_stress_boost:
    name: needs.seeking_probability_heat_stress_boost
    description: Additional seeking probability for heat-stressed residents.
    unit: probability
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.10
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic behaviour boost.
  needs.transport_limited_seeking_penalty:
    name: needs.transport_limited_seeking_penalty
    description: Fractional reduction in seeking probability for transport-limited residents.
    unit: proportion
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.25
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [simulation.model]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Synthetic behaviour penalty.
  needs.seeking_boost_risk_statuses:
    name: needs.seeking_boost_risk_statuses
    description: Health-risk statuses whose members receive the configured seeking-probability boost.
    unit: status list
    value_type: list
    minimum: null
    maximum: null
    default: [heat_stressed]
    evidence_status: synthetic
    source: null
    owner_module: health_needs.needs
    consumer_modules: [simulation.model]
    calibration_eligible: false
    sensitivity_eligible: true
    interpretation_warning: Canonical default applies the boost to heat-stressed residents only; status membership is configuration, not a clinical claim.
  risk.heat_stress_probability_base:
    name: risk.heat_stress_probability_base
    description: Baseline daily probability of heat-stress status during exposure.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.10
    evidence_status: synthetic
    source: null
    owner_module: health_needs.risk
    consumer_modules: [vulnerability.profiles]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory status; not a validated clinical outcome.
  risk.heat_stress_vulnerability_beta:
    name: risk.heat_stress_vulnerability_beta
    description: Sensitivity of heat-stress probability to vulnerability score.
    unit: dimensionless
    value_type: float
    minimum: 0.0
    maximum: 10.0
    default: 2.0
    evidence_status: synthetic
    source: null
    owner_module: health_needs.risk
    consumer_modules: [vulnerability.profiles]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory response slope.
  risk.deterioration_unmet_urgent_probability:
    name: risk.deterioration_unmet_urgent_probability
    description: Daily probability of clinical deterioration after unmet urgent need.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.10
    evidence_status: synthetic
    source: null
    owner_module: health_needs.risk
    consumer_modules: [health_needs.risk]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory status transition, not a clinical model.
  risk.critical_unmet_emergency_probability:
    name: risk.critical_unmet_emergency_probability
    description: Daily probability of critical status after unmet emergency need.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.25
    evidence_status: synthetic
    source: null
    owner_module: health_needs.risk
    consumer_modules: [health_needs.risk]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory status transition, not a clinical model.
  risk.heat_stress_recovery_probability:
    name: risk.heat_stress_recovery_probability
    description: Daily probability of returning to stable status when not under stress.
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.5
    evidence_status: synthetic
    source: null
    owner_module: health_needs.risk
    consumer_modules: [health_needs.risk]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory recovery rule.
  risk.heat_mortality_base_probability:
    name: risk.heat_mortality_base_probability
    description: Base daily heat-related mortality probability (zero under defaults).
    unit: probability per day
    value_type: float
    minimum: 0.0
    maximum: 1.0
    default: 0.0
    evidence_status: synthetic
    source: null
    owner_module: health_needs.risk
    consumer_modules: [vulnerability.profiles]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Mortality is not a version-1 primary outcome; default is zero.
  risk.heat_mortality_vulnerability_beta:
    name: risk.heat_mortality_vulnerability_beta
    description: Sensitivity of exploratory mortality probability to vulnerability.
    unit: dimensionless
    value_type: float
    minimum: 0.0
    maximum: 10.0
    default: 1.0
    evidence_status: synthetic
    source: null
    owner_module: health_needs.risk
    consumer_modules: [vulnerability.profiles]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Exploratory; unused while mortality default is zero.
  risk.risk_exposure_threshold_c:
    name: risk.risk_exposure_threshold_c
    description: Zone temperature above which risk transitions begin to respond.
    unit: degC
    value_type: float
    minimum: 0.0
    maximum: 60.0
    default: 33.0
    evidence_status: illustrative
    source: null
    owner_module: health_needs.risk
    consumer_modules: [vulnerability.profiles]
    calibration_eligible: true
    sensitivity_eligible: true
    interpretation_warning: Illustrative risk-response threshold.
  allocation.targeted_transport_daily_cap:
    name: allocation.targeted_transport_daily_cap
    description: Daily cap on targeted-transport recipients when the scenario sets no cap.
    unit: persons per day
    value_type: int
    minimum: 0
    maximum: 1000000
    default: 20
    evidence_status: synthetic
    source: null
    owner_module: allocation.queueing
    consumer_modules: [simulation.model]
    calibration_eligible: false
    sensitivity_eligible: false
    interpretation_warning: Synthetic bounded fallback capacity; scenario-specific caps may be lower.
