{
  "release_id": "2026-05-31.atlas.2",
  "generated_at": "2026-05-31",
  "previous_release_id": null,
  "migration_type": "initial_release_baseline",
  "summary": "This is the first immutable PainMap atlas release in this series. Treat the listed schemas, fields, and layer IDs as the migration baseline for future release comparisons.",
  "schema_changes": [
    {
      "surface": "/data/place-measurements.json",
      "change_type": "baseline_schema",
      "fields_added": [
        "extraction_timestamp",
        "transform_version",
        "reviewer_status",
        "source_file_checksum",
        "source_file_checksum_algorithm",
        "source_file_checksum_basis"
      ],
      "downstream_action": "Carry measurement lineage fields with copied values and use /schemas/place-measurements.schema.json for validation."
    },
    {
      "surface": "/v1/places/index.json",
      "change_type": "baseline_schema",
      "fields_added": [
        "coverage_status",
        "canonical_measurement_count",
        "profile_url",
        "measurements_url",
        "neighbors_url",
        "available_layers"
      ],
      "downstream_action": "Use coverage_status before fetching profile or measurement URLs because boundary-only places do not have canonical measurement rows."
    },
    {
      "surface": "/v1/adm1/index.json",
      "change_type": "baseline_schema",
      "fields_added": [
        "adm1_priority_rank",
        "poverty_context",
        "context_url",
        "parent_place_id"
      ],
      "downstream_action": "Treat ADM1 rows as poverty-context overlays, not canonical PainMap pain measurements."
    },
    {
      "surface": "/ogc/collections/places/items.json",
      "change_type": "baseline_schema",
      "fields_added": [
        "coverage_status",
        "profile_url",
        "measurements_url",
        "neighbors_url"
      ],
      "downstream_action": "Join OGC feature properties to the place index when clients need both geometry and release coverage metadata."
    }
  ],
  "renamed_fields": [],
  "removed_fields": [],
  "new_layer_ids": [
    {
      "layer_id": "factory-farmed-animals",
      "label": "Factory-farmed animals",
      "evidence_kind": "proxy",
      "value_type": "normalized_proxy_score",
      "ranking_mode": "higher_proxy_score_more_attention"
    },
    {
      "layer_id": "human-burden",
      "label": "Human burden indicators",
      "evidence_kind": "proxy",
      "value_type": "normalized_proxy_score",
      "ranking_mode": "higher_proxy_score_more_attention"
    },
    {
      "layer_id": "human-poverty-adm1-context",
      "label": "ADM1 poverty context overlay",
      "evidence_kind": "proxy",
      "value_type": "subnational_poverty_context",
      "ranking_mode": "higher_prosperity_gap_more_attention"
    },
    {
      "layer_id": "wild-insects",
      "label": "Wild terrestrial arthropod scale",
      "evidence_kind": "proxy",
      "value_type": "normalized_proxy_score",
      "ranking_mode": "higher_proxy_score_more_attention"
    },
    {
      "layer_id": "animal-priority-overlay",
      "label": "Animal priority overlay",
      "evidence_kind": "priority-overlay",
      "value_type": "normalized_priority_score",
      "ranking_mode": "higher_priority_more_attention"
    },
    {
      "layer_id": "event-evidence",
      "label": "Event-level animal pain evidence",
      "evidence_kind": "modeled",
      "value_type": "welfare_footprint_event_estimate",
      "ranking_mode": "event_context_only"
    },
    {
      "layer_id": "country-boundaries",
      "label": "Country and ADM1 boundaries",
      "evidence_kind": "boundary",
      "value_type": "geometry",
      "ranking_mode": "not_ranked"
    }
  ],
  "validation_surfaces": [
    "/schemas/place-index.schema.json",
    "/schemas/adm1-context.schema.json",
    "/schemas/place-measurements.schema.json",
    "/schemas/coverage.schema.json",
    "/schemas/release-modes.schema.json",
    "/schemas/ogc-place-features.schema.json",
    "/data/openapi.json",
    "/data/third-party-fetches.json",
    "/data/accessibility-audit.json",
    "/data/ui-smoke.json",
    "/releases/2026-05-31/manifest.json"
  ]
}
