{
  "$schema": "https://spacemedicinefoundation.org/robotic-medicine/protocols/schema/protocol.schema.json",
  "schema_version": "0.3",
  "version": "0.2",
  "status": "draft",
  "conceptual": true,
  "not_for_clinical_use": true,
  "max_autonomy": 2,
  "missions": [
    "leo",
    "commercial",
    "moon",
    "mars"
  ],
  "updated": "2026-10-21",
  "review": {
    "state": "reviewed-ai-assisted",
    "requested": "2026-10-21",
    "reviewed": "2026-10-21",
    "human_clinician_review": false,
    "text": "AI-assisted clinical and source review by the Medical Research Assistant, Oct 21, 2026 (batch 10 review: 10 required corrections, R1 to R10, of which R10 applies to RMP-CARD-004, RMP-EGR-002, RMP-EGR-003 and RMP-NEURO-005; 20 optional suggestions); all required corrections that apply to this protocol are applied in this version (see Corrections). No named human clinician has reviewed it. Not for clinical use."
  },
  "fixed_rules": {
    "flight_surgeon_is_medical_authority": true,
    "cmo_acts_under_delegated_care": true,
    "human_starts_and_restarts_robot": true,
    "robot_never_diagnoses": true,
    "no_drug_or_fluid_advice_by_robot": true,
    "safe_state_on_fault_or_no_response": true,
    "lost_link_pause_then_cmo_decides": true
  },
  "robot_lockouts": {
    "diagnosis": true,
    "drug_or_fluid_advice": true,
    "starting_stopping_or_adjusting_oxygen_or_any_medicine": true,
    "self_start_or_self_restart": true,
    "changing_own_protocol_thresholds_or_limits": true,
    "handing_over_a_mismatched_item_as_verified": true
  },
  "id": "RMP-RAD-002",
  "slug": "rmp-rad-002",
  "title": "Personal dosimeter readout, exchange and logging (the crewmember keeps their own dosimeter; the robot never interprets a reading)",
  "category": "rad",
  "tier": 2,
  "rung_note": "Max rung 2 for the scheduled prompt, reading each active dosimeter display and ID label by camera without contact, logging the reading as displayed, and carrying a closed passive-dosimeter exchange pouch to the stowage location the radiation plan lists. The crewmember removes and fits their own dosimeter; the robot never opens, resets or configures a dosimeter and never says what a reading means.",
  "result_language": {
    "use": [
      "reading as displayed",
      "reading not obtained",
      "dosimeter ID does not match the record",
      "logged, not interpreted",
      "sent to flight surgeon"
    ],
    "never": [
      "normal",
      "no problem found",
      "all clear",
      "negative",
      "any diagnosis or cause",
      "within limits",
      "below the limit",
      "over the limit",
      "low dose",
      "high dose",
      "safe level",
      "acceptable",
      "expected",
      "nothing to worry about",
      "safe",
      "mild",
      "minor"
    ]
  },
  "scope": {
    "summary": "At the times the flight surgeon schedules (or on a crewmember's or the CMO's command), the robot prompts each crewmember that a dosimeter readout or passive-dosimeter exchange is due. The prompt and the exchange and stowage log are the core. A camera readout is optional, only when the vehicle has no dosimetry downlink, the downlink has failed, or the flight surgeon asks for it: the crewmember then holds their active dosimeter where the robot's camera can read the display and ID label without contact, and the robot logs the totals and rate as displayed, with the dosimeter ID and clock time. For a scheduled exchange, the crewmember places their own passive dosimeter in a labelled exchange pouch and closes it, and the robot carries the closed pouch to the stowage location the radiation plan lists. Missing or damaged dosimeters are flagged. The robot never interprets a reading or compares it with a limit.",
    "why": "Each crewmember's radiation exposure must be monitored (V2 6162) and kept as low as reasonably achievable (V1 4029), within the career limit of 600 mSv effective dose (V1 4030) and with protection from solar particle events (V1 4031). Since 2020, ISS crew have carried Crew Active Dosimeters that measure continuously, time-stamp readings and send them by Bluetooth to station laptops for the Space Radiation Analysis Group, with a display that shows the crewmember their total mission dose and recent dose rate; passive dosimeters give only the cumulative dose on return (SRAG; Gaza 2023). Monitoring, dosimetry and timely reporting to alert crew to shelter are essential (OCHMO-TB-020). Interpreting doses and tracking limits belong to the flight surgeon and the program's radiation team, never the robot. The robot's role (a prompt, a camera readout as displayed, and carrying a closed pouch) is design judgment; it adds a record, never a replacement for the vehicle's own dosimetry downlink.",
    "covers": [
      "Scheduled or on-command readouts of personal active dosimeters, as displayed",
      "Scheduled passive-dosimeter exchanges done by the crewmember, with the closed pouch carried to stowage",
      "Missing, damaged or unreadable dosimeters",
      "Radiation alarms and solar particle events: RMP-RAD-001"
    ],
    "locked_out": [
      "Diagnosis or naming a cause",
      "Any medicine, fluid or oxygen advice; starting, stopping or adjusting oxygen",
      "Touching the crewmember",
      "Handing over any medicine outside RMP-PHARM-001, or after a MISMATCH or CANNOT VERIFY (the item stays quarantined; only the CMO can ask for it, through the RMP-PHARM-001 logged two-step override)",
      "Opening, resetting, configuring or removing a dosimeter, or opening an exchange pouch",
      "Saying a reading is low, high, within or over a limit, or comparing it with a limit",
      "Deciding on shelter, EVA changes or any crew action (the commander and flight surgeon decide)",
      "Showing a crewmember's readings to anyone except that crewmember, the CMO, the flight surgeon and the radiation team the flight surgeon names"
    ],
    "related": [
      "RMP-RAD-001",
      "RMP-EVA-001",
      "RMP-PREV-001",
      "RMP-ENV-001"
    ]
  },
  "roles": {
    "medical_authority": "Flight surgeon (ground). Holds medical authority for every run.",
    "onboard_lead": "Crew medical officer (CMO), acting under delegated care; uses the pre-approved onboard checklist when there is no link.",
    "others": [
      "Radiation team (ground), named by the flight surgeon: interprets readings and tracks exposure against limits",
      "Vehicle commander: leads any radiation alarm or shelter procedure (RMP-RAD-001)",
      "Second trained CMO: receives every alert and takes over if the CMO is the patient"
    ],
    "robot_may": [
      "Prompt the crewmember at the scheduled time",
      "Read the dosimeter display and ID label by camera, without contact",
      "Log readings as displayed, with ID and clock time",
      "Carry a closed exchange pouch to the stowage location the radiation plan lists",
      "Flag a missing, damaged or unreadable dosimeter"
    ],
    "robot_may_not": [
      "Touch the crewmember or take a dosimeter from them",
      "Open a pouch or a dosimeter",
      "Say what a reading means or compare it with a limit",
      "Decide on shelter or any crew action",
      "Start a scheduled readout without a human accepting the prompt"
    ],
    "commercial": "On commercial flights, 'flight surgeon' and 'CMO' mean the operator's designated medical authority and trained onboard responder. If no trained responder is aboard, this protocol is not used. (NASA-STD-3001 requires two CMOs per vehicle for NASA programs [V1 3006]; FAA rules set no medical standards for spaceflight participants.)"
  },
  "preconditions": [
    {
      "id": "PRE-1",
      "text": "The readout or exchange starts only when the crewmember (or the CMO) accepts the on-screen prompt; a loaded schedule alone never starts it. An unaccepted prompt is logged \"not accepted\" and the CMO is told. A crewmember or the CMO can also start it by command.",
      "check": "human_start == true",
      "refs": [
        "V2 10174"
      ]
    },
    {
      "id": "PRE-2",
      "text": "Robot self-test passed; kit stowage locations known.",
      "refs": [
        "V2 10161",
        "V2 7059"
      ]
    },
    {
      "id": "PRE-3",
      "text": "Robot and supplies restrained when not moving.",
      "refs": [
        "V2 7046"
      ]
    },
    {
      "id": "PRE-4",
      "text": "Link status known. The crew never wait for the robot before acting.",
      "check": "link_state in [live, delayed, down]"
    }
  ],
  "consent": {
    "standard": "The crewmember agrees to the readout schedule and to readings being logged and sent to the flight surgeon and the radiation team the flight surgeon names; readings are part of the medical record.",
    "emergency": "During a radiation alarm or solar particle event this protocol does not run; RMP-RAD-001 applies.",
    "withdrawal": "The crewmember can skip or stop a readout; the robot logs \"skipped by the crewmember\" and tells the CMO and flight surgeon."
  },
  "inputs": [
    {
      "id": "IN-1",
      "name": "The flight surgeon's readout and exchange schedule, and the radiation plan's stowage location for returned passive dosimeters",
      "source": "Flight surgeon / radiation plan",
      "required": true,
      "if_missing": "The robot shows \"schedule not loaded\" and runs only on a human command; a pouch stays with the crewmember until the CMO names a location."
    },
    {
      "id": "IN-2",
      "name": "Each active dosimeter display (totals and rate) and ID label, as displayed",
      "source": "Crewmember's active dosimeter, read by camera",
      "required": true,
      "if_missing": "Log \"reading not obtained\" (never a value) and tell the CMO."
    },
    {
      "id": "IN-3",
      "name": "Dosimeter and pouch IDs on the crew record",
      "source": "Inventory system",
      "required": true,
      "if_missing": "Log \"dosimeter ID does not match the record\"; no reading is attributed to a crewmember."
    },
    {
      "id": "IN-4",
      "name": "Symptoms in the crewmember's words after a radiation alarm or solar particle event (nausea, vomiting, unusual tiredness, skin redness)",
      "source": "Crewmember",
      "required": false,
      "if_missing": "Log \"no response\"; D3 applies."
    },
    {
      "id": "IN-5",
      "name": "Link status and delay",
      "source": "Communications system",
      "required": true,
      "if_missing": "Treat as link down; readings are queued."
    }
  ],
  "steps": [
    {
      "id": "S1",
      "actor": "robot",
      "rung": 2,
      "action": "At the scheduled time, show the crewmember an on-screen prompt that a dosimeter readout (or a passive-dosimeter exchange) is due, and tell the flight surgeon and the CMO (URGENT if a red flag is stated). The readout starts only when the crewmember or the CMO accepts the prompt; an unaccepted prompt is logged \"not accepted\" and the CMO is told. Every URGENT alert goes to the CMO and the flight surgeon at the same time (queued for the flight surgeon if the link is down). If the CMO is the patient, is busy treating, or does not answer, the alert goes to the second trained CMO, or the crewmember named before flight [V1 3006]. An URGENT alert that is not acknowledged within <set by validation> seconds is repeated and sent to the next named crewmember.",
      "success": "Prompt accepted, or \"not accepted\" logged and sent.",
      "refs": [
        "V2 10174",
        "V2 6162",
        "V1 3006"
      ]
    },
    {
      "id": "S2",
      "actor": "crew",
      "action": "Only when a camera readout is run (S3): the crewmember holds their own active dosimeter where the robot's camera can read the display and ID label; they never hand it to the robot.",
      "success": "Display in view, or the crewmember reads it out.",
      "refs": [
        "V2 6162"
      ]
    },
    {
      "id": "S3",
      "actor": "robot",
      "rung": 2,
      "action": "Camera readout, only when the vehicle has no dosimetry downlink, the downlink has failed, or the flight surgeon asks for it: read the display and ID label by camera, no closer than the set camera distance, and log each value exactly as displayed with its unit, the dosimeter ID and the clock time. A value the camera cannot read is logged as \"reading not obtained\", never estimated; a value the crewmember reads out is logged as \"as stated by the crewmember\". The robot never says what a reading means. Otherwise the robot logs only that the crewmember confirmed the readout, and the vehicle downlink is the record.",
      "success": "Reading logged as displayed, \"reading not obtained\", or \"downlink is the record\".",
      "limit": "<set by validation>",
      "refs": [
        "V2 6162",
        "V1 7001"
      ]
    },
    {
      "id": "S4",
      "actor": "crew",
      "action": "For a scheduled passive-dosimeter exchange, the crewmember removes their own passive dosimeter, places it in the labelled exchange pouch, closes the pouch and fits the new dosimeter themselves.",
      "success": "Pouch closed; new dosimeter fitted, as stated.",
      "refs": [
        "V2 6162"
      ]
    },
    {
      "id": "S5",
      "actor": "robot",
      "rung": 2,
      "action": "Scan the pouch label and the new dosimeter's ID against the crew record, then carry the closed pouch, without opening it, along routes no crewmember is using, to the stowage location the radiation plan lists, and update the inventory record. A pouch that is open or damaged is not carried; it is flagged to the CMO.",
      "success": "Pouch stowed and recorded, or flagged.",
      "limit": "<set by validation>",
      "refs": [
        "V2 7059",
        "V2 7058"
      ]
    },
    {
      "id": "S6",
      "actor": "robot",
      "rung": 2,
      "action": "Show an on-screen prompt the crewmember can accept for any missing or damaged dosimeter and, after any radiation alarm or solar particle event, for nausea, vomiting, unusual tiredness or skin redness; log answers word for word.",
      "success": "Answers logged, or \"no response\".",
      "refs": [
        "V1 6003"
      ]
    },
    {
      "id": "S7",
      "actor": "robot",
      "rung": 2,
      "action": "After any URGENT alert: After an URGENT alert the robot does not leave on its own: it stays at its rest position in the module, with its screen and voice link available, until a human has taken over or tells it to go. It never follows, blocks or touches anyone. It keeps time-stamping what humans say they did, and repeats the alert if it is not acknowledged.",
      "success": "Robot at rest in the module until a human releases it; alert acknowledged or escalated.",
      "refs": [
        "V2 10173",
        "V1 3006"
      ]
    },
    {
      "id": "S8",
      "actor": "ground",
      "action": "The flight surgeon and the radiation team (or the CMO under the onboard checklist when there is no link) interpret the readings, track exposure against limits and decide on any action.",
      "success": "Decision logged.",
      "refs": [
        "V1 4029",
        "V1 4030",
        "V1 4031"
      ]
    },
    {
      "id": "S9",
      "actor": "robot",
      "rung": 2,
      "action": "Send the flight surgeon and the radiation team one package: readings as displayed with IDs and times, exchanges and stowage, missing or damaged dosimeters, answers, alerts and decisions.",
      "success": "Package delivered or queued.",
      "refs": [
        "V1 6003",
        "V1 7003"
      ]
    }
  ],
  "decisions": [
    {
      "id": "D1",
      "after": "S3",
      "decided_by": "robot",
      "question": "Does the dosimeter ID read by camera match the crewmember's record?",
      "branches": [
        {
          "if": "Yes",
          "then": "Log the reading against this crewmember."
        },
        {
          "if": "No, or the ID cannot be read",
          "then": "Log \"dosimeter ID does not match the record\"; no reading is attributed to the crewmember; flag to the CMO and flight surgeon."
        }
      ]
    },
    {
      "id": "D2",
      "after": "S6",
      "decided_by": "robot",
      "question": "Checked after every answer and at any point in the run (even mid-question or mid-step): does any answer, reading or observation meet a red flag?",
      "branches": [
        {
          "if": "Yes",
          "then": "Stop the current question or step at once and apply the action listed for each matching red flag (URGENT alert, flag, or stop), with the answer or reading itself, never a cause. Every URGENT alert goes to the CMO and the flight surgeon at the same time (queued for the flight surgeon if the link is down). If the CMO is the patient, is busy treating, or does not answer, the alert goes to the second trained CMO, or the crewmember named before flight [V1 3006]. An URGENT alert that is not acknowledged within <set by validation> seconds is repeated and sent to the next named crewmember."
        },
        {
          "if": "No",
          "then": "Continue."
        }
      ]
    },
    {
      "id": "D3",
      "after": "S6",
      "decided_by": "robot",
      "question": "Did the crewmember answer the prompt, or say they want to skip it?",
      "branches": [
        {
          "if": "Yes",
          "then": "Continue."
        },
        {
          "if": "Declined explicitly (the crewmember says no to a question)",
          "then": "Log \"declined\" for that question only; the alert already sent stands."
        },
        {
          "if": "No response, or the answer does not make sense",
          "then": "URGENT: log \"no response\" (never \"declined\"); the CMO, or the second trained CMO if the CMO is the patient, checks the crewmember in person at once."
        }
      ]
    },
    {
      "id": "D4",
      "after": "S8",
      "decided_by": "ground",
      "question": "What action, if any, follows from the readings?",
      "branches": [
        {
          "if": "Link live",
          "then": "Flight surgeon decides; robot logs."
        },
        {
          "if": "Link down or delay too long",
          "then": "The CMO decides under the pre-approved onboard checklist; the flight surgeon reviews the log at the next contact."
        }
      ]
    }
  ],
  "stop_rules": [
    {
      "id": "X1",
      "trigger": "The patient (or the crewmember being examined) says stop, or withdraws consent",
      "action": "Robot stops all motion at once, backs away to its rest position and tells the CMO. Recording stops unless the patient agrees to keep it running.",
      "level": "stop",
      "refs": [
        "V2 10165"
      ]
    },
    {
      "id": "X2",
      "trigger": "Any crewmember presses stop or takes over control",
      "action": "Protective stop; robot holds its stopped position; only a human may restart it.",
      "level": "safe-state",
      "refs": [
        "V2 10165",
        "V2 10168",
        "V2 10174"
      ]
    },
    {
      "id": "X3",
      "trigger": "Robot fault, sensor fault, or a force, speed or reach limit is reached",
      "action": "Protective stop and hand control to the CMO; log the fault.",
      "level": "safe-state",
      "refs": [
        "V2 10172",
        "V2 10168"
      ]
    },
    {
      "id": "X4",
      "trigger": "CMO is asked to take over and does not respond (for example, the CMO is the patient)",
      "action": "Robot stays stopped; the next named crewmember is called.",
      "level": "safe-state",
      "refs": [
        "V2 10173",
        "V2 7045"
      ]
    },
    {
      "id": "X5",
      "trigger": "Loss of link, or delay longer than the limit for live guidance",
      "action": "Only the robot pauses: before it holds, it moves to a position clear of a hatch route or a crewmember's route (it never pauses in one), and tells the CMO. This pauses robot movement only: dosimeter readouts and all crew care continue under the onboard checklist and never wait for the link or the robot. The CMO decides whether the robot continues offline under the pre-approved onboard checklist; it resumes only on the CMO's confirmation.",
      "level": "pause",
      "refs": [
        "V2 10172",
        "V2 10173"
      ]
    },
    {
      "id": "X6",
      "trigger": "An URGENT alert is not acknowledged within the set time",
      "action": "Robot repeats the alert and sends it to the next named crewmember (the second trained CMO first if the CMO is the patient), and keeps repeating at the set interval. It stays where it is: it does not leave on its own.",
      "level": "urgent",
      "refs": [
        "V1 3006",
        "V2 10173"
      ]
    },
    {
      "id": "X7",
      "trigger": "The crewmember stops responding, or seems confused or drowsy, at any point",
      "action": "URGENT alert at once, even mid-question or mid-step; the robot stops its current task, stays at its rest position and does not continue the run; a crewmember checks in person.",
      "level": "urgent"
    },
    {
      "id": "X8",
      "trigger": "A crewmember asks the robot what is wrong, or for medicine, fluid or treatment advice",
      "action": "Robot declines, says it cannot assess or advise, and routes the question to the CMO or flight surgeon.",
      "level": "stop"
    },
    {
      "id": "X9",
      "trigger": "Any radiation alarm, solar particle event warning or shelter order",
      "action": "The readout ends at once; RMP-RAD-001 applies on the commander's command; the robot clears routes to the shelter and every hatch; the crew go to shelter without waiting for the robot.",
      "level": "urgent",
      "refs": [
        "V2 6164"
      ]
    },
    {
      "id": "X10",
      "trigger": "Someone needs the space or route the robot is in",
      "action": "Robot moves clear at once without contact and holds; it never pauses in a hatch route.",
      "level": "safe-state",
      "refs": [
        "V2 10172"
      ]
    }
  ],
  "red_flags": [
    {
      "id": "RF1",
      "sign": "A dosimeter alarm, a vehicle radiation monitor alarm, or a solar particle event warning",
      "threshold": "any",
      "action": "URGENT alert; start RMP-RAD-001 on the commander's command; the crew go to shelter without waiting for the robot",
      "source": "tb020"
    },
    {
      "id": "RF2",
      "sign": "Nausea, vomiting, unusual tiredness or skin redness after a radiation alarm or solar particle event, as stated",
      "threshold": "any",
      "action": "URGENT alert; see RMP-RAD-001",
      "source": "erars"
    },
    {
      "id": "RF3",
      "sign": "A displayed dose rate at or above the alert value the flight surgeon set (design judgment; a secondary flag only: the robot's reading may lag the display, and the vehicle monitor is the alert, V2 6164)",
      "threshold": "at or above <set by flight surgeon> (unit as the dosimeter displays it)",
      "action": "Flag at once to the flight surgeon and the CMO; the robot never says what it means"
    },
    {
      "id": "RF4",
      "sign": "A dosimeter missing, damaged, or with a blank display (design judgment)",
      "threshold": "any",
      "action": "Flag to the CMO and flight surgeon; \"reading not obtained\" is logged, never a value"
    }
  ],
  "safety_limits": [
    {
      "id": "L1",
      "name": "Contact with the crewmember",
      "value": "not allowed",
      "enforced": "Keep-out zone in the robot controller",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "L2",
      "name": "Camera distance from the crewmember",
      "value": "<set by validation>",
      "enforced": "Hard limit in the controller",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "L3",
      "name": "Opening a pouch or a dosimeter, or resetting or configuring a dosimeter",
      "value": "not allowed",
      "enforced": "No such task is loaded"
    },
    {
      "id": "L4",
      "name": "Robot speed near the crewmember",
      "value": "<set by validation>",
      "enforced": "Hard limit in the controller",
      "refs": [
        "V2 10172"
      ]
    }
  ],
  "logs": [
    {
      "id": "LOG-1",
      "text": "Every input, robot action, decision (with who made it) and hand-off, time-stamped to the second.",
      "refs": [
        "V2 10163",
        "V2 10164"
      ]
    },
    {
      "id": "LOG-2",
      "text": "Mode changes and safety-limit events are announced to the operator as they happen and logged.",
      "refs": [
        "V2 10162",
        "V2 10172"
      ]
    },
    {
      "id": "LOG-3",
      "text": "Records are stored and sent as private medical data, encrypted, with access limited to the medical team.",
      "refs": [
        "V1 6003",
        "V1 7003"
      ]
    },
    {
      "id": "LOG-4",
      "text": "Results are kept in a permanent, retrievable format so the flight surgeon can see trends.",
      "refs": [
        "V1 7001"
      ]
    },
    {
      "id": "LOG-5",
      "text": "Each reading as displayed with unit, dosimeter ID and time; readings not obtained; ID mismatches; exchanges with pouch ID and stowage location; answers as stated; who viewed the readings."
    },
    {
      "id": "LOG-6",
      "text": "Each URGENT alert, who received it, the time it was acknowledged (or the escalation to the next named crewmember), and the time a human released the robot.",
      "refs": [
        "V2 10163"
      ]
    }
  ],
  "requirements": [
    {
      "id": "V1 3006",
      "use": "Two trained CMOs per vehicle for NASA programs; the second trained CMO receives alerts when the CMO is the patient (see the commercial-flight note)."
    },
    {
      "id": "V1 4029",
      "use": "Exposure kept as low as reasonably achievable; the flight surgeon and radiation team decide."
    },
    {
      "id": "V1 4030",
      "use": "Career limit tracked by the program and flight surgeon, never by the robot."
    },
    {
      "id": "V1 4031",
      "use": "Solar particle event protection; alarms route to RMP-RAD-001."
    },
    {
      "id": "V1 6003",
      "use": "Logs and alerts sent to the ground are private medical communications."
    },
    {
      "id": "V1 7001",
      "use": "Records kept so the flight surgeon can see trends."
    },
    {
      "id": "V1 7003",
      "use": "Secure handling of medical records."
    },
    {
      "id": "V2 6162",
      "use": "Each crewmember's radiation exposure is monitored; the robot logs personal dosimeter readings as displayed."
    },
    {
      "id": "V2 6164",
      "use": "Radiation monitors alert crew and operations teams above set thresholds; the vehicle monitor stays primary."
    },
    {
      "id": "V2 7045",
      "use": "Usable by non-physician crew, including when the CMO is the patient."
    },
    {
      "id": "V2 7046",
      "use": "Patient, caregiver and supplies restrained."
    },
    {
      "id": "V2 7058",
      "use": "Stowage identification works with inventory management."
    },
    {
      "id": "V2 7059",
      "use": "Dosimeter and pouch locations are tracked in the inventory system."
    },
    {
      "id": "V2 10161",
      "use": "Robot shows its status and health."
    },
    {
      "id": "V2 10162",
      "use": "Mode changes are announced to the operator."
    },
    {
      "id": "V2 10163",
      "use": "Robot records and shares its data."
    },
    {
      "id": "V2 10164",
      "use": "Shows whether the human or the robot is expected to act."
    },
    {
      "id": "V2 10165",
      "use": "Human can override and shut down the robot."
    },
    {
      "id": "V2 10168",
      "use": "Human can take over."
    },
    {
      "id": "V2 10172",
      "use": "Protective stop when a limit is exceeded."
    },
    {
      "id": "V2 10173",
      "use": "Robot stays stopped if no one takes over."
    },
    {
      "id": "V2 10174",
      "use": "Only a human starts or restarts the robot."
    }
  ],
  "validation": [
    {
      "stage": "simulation",
      "what": "Scripted readouts with an unreadable display, an ID mismatch, an open pouch, a radiation alarm mid-readout, CMO as patient, lost link.",
      "pass": "Zero contact; zero interpretation; every red flag raised; readout ends on any alarm."
    },
    {
      "stage": "training model",
      "what": "Readout and exchange drill with training dosimeters.",
      "pass": "Every reading logged exactly as displayed with ID and time."
    },
    {
      "stage": "parabolic or station demonstration",
      "what": "Camera readout in weightlessness.",
      "pass": "Camera distance held."
    },
    {
      "stage": "flight use under flight surgeon supervision",
      "what": "First use alongside the vehicle dosimetry downlink.",
      "pass": "Agreement with the downlinked record; no safety events."
    }
  ],
  "signoff": {
    "protocol": [
      "Clinical lead for the specialty (sets every clinical threshold marked <set by clinical lead>)",
      "Flight surgeon, as medical authority",
      "Robotics and medical-device safety board",
      "Program approval for the mission"
    ],
    "restart_after_stop": "Human only. After any emergency or protective stop, a crewmember must restart the robot; the robot never restarts itself.",
    "each_run": "Scheduled by the flight surgeon and accepted by the crewmember, or started by a crewmember or the CMO. The flight surgeon and radiation team interpret every reading."
  },
  "change_control": [
    "Every change gets a new version number and a written reason; earlier versions are kept.",
    "Any change to steps, thresholds, limits or software that touches the patient repeats validation from the simulation stage before use.",
    "Software and learned-skill updates follow a pre-agreed change plan (what may change, how it is tested, how to roll back), modeled on the FDA predetermined change control plan approach.",
    "If a new version misbehaves, the robot rolls back to the last validated version and the event is reviewed by the flight surgeon and safety board.",
    "The robot never changes its own protocol, thresholds or limits."
  ],
  "comms": {
    "live": "Low Earth orbit: the flight surgeon and radiation team receive readings when the link allows.",
    "loss_of_signal": [
      "Only the robot pauses non-essential motion, at a position clear of hatch routes and crew routes, and tells the CMO; it resumes offline only on the CMO's confirmation.",
      "Dosimeter readouts and all crew care continue under the onboard checklist and never wait for the link or the robot.",
      "Readings are queued; the vehicle's own dosimetry and alarms are unaffected."
    ],
    "mars_delay": [
      "Mars: readings arrive with delay; the readout schedule and the dose-rate alert value are set before flight and the CMO decides on the onboard checklist."
    ]
  },
  "sources": [
    {
      "key": "tb020",
      "text": "NASA OCHMO. Design for Ionizing Radiation Protection. Technical Brief OCHMO-TB-020 Rev G (2025).",
      "url": "https://www.nasa.gov/wp-content/uploads/2023/12/ochmo-tb-020-radiation-protection.pdf",
      "supports": "Shielding is effective against solar particle events (SPEs); monitoring, accurate event determination, dosimetry and timely reporting to alert crew to seek shelter are essential. A storm shelter can add about 10 cm water equivalent in crew quarters, for example by rearranging water containers and other high-hydrogen items; radiation alerting gives early warning so the crew can configure the shelter; real-time alert dosimetry protects EVA crew if the EVA is ended within 2 hours with access to shielding. Read Oct 21, 2026."
    },
    {
      "key": "erars",
      "text": "NASA Human Research Program. Evidence Report: Risk of Acute Radiation Syndromes due to Solar Particle Events (2016).",
      "url": "https://humanresearchroadmap.nasa.gov/evidence/reports/Acute.pdf",
      "supports": "The acute radiation effects most likely in the prodromal phase after an SPE exposure are nausea, vomiting, anorexia and fatigue, with possible skin injury. Read Oct 21, 2026."
    },
    {
      "key": "srag",
      "text": "NASA Space Radiation Analysis Group (SRAG), Johnson Space Center. How do we protect the astronauts from space radiation? (web page, 2026).",
      "url": "https://srag.jsc.nasa.gov/spaceradiation/how/how.cfm",
      "supports": "Since 2020, Crew Active Dosimeters (about the size of two AA batteries) continuously measure and log each astronaut's radiation exposure; readings are time-stamped and sent by Bluetooth to ISS laptops for downlink to SRAG, and an always-on display shows the astronaut their total mission dose and recent dose rate. Passive dosimetry gives only the cumulative mission dose on return. Read Oct 21, 2026 (saved copy in src/b10)."
    },
    {
      "key": "gaza2023",
      "text": "Gaza R, Johnson AS, Hayes B, et al. The importance of time-resolved personal dosimetry in space: the ISS Crew Active Dosimeter. Life Sci Space Res. 2023;39:95-105.",
      "url": "https://doi.org/10.1016/j.lssr.2023.08.004",
      "doi": "10.1016/j.lssr.2023.08.004",
      "pmid": "37945094",
      "supports": "Abstract: monitoring space radiation is vital for risk reduction; the paper reports the ISS Crew Active Dosimeter, which gives time-resolved personal dosimetry for each crewmember. Abstract read Oct 21, 2026 (saved copy in src/b10)."
    },
    {
      "key": "v1",
      "text": "NASA. NASA-STD-3001, Space Flight Human-System Standard, Volume 1: Crew Health, Revision C (2023).",
      "url": "https://www.nasa.gov/wp-content/uploads/2023/11/nasa-std-3001-vol-1-rev-c-with-signature.pdf",
      "supports": "NASA-STD-3001 Vol 1 Rev C: V1 3006, V1 4029, V1 4030 (career limit 600 mSv effective dose), V1 4031, V1 6003, V1 7001, V1 7003."
    },
    {
      "key": "v2",
      "text": "NASA. NASA-STD-3001, Volume 2: Human Factors, Habitability, and Environmental Health (Rev F, 2026), including Section 10.6 Automated and Robotic Systems.",
      "url": "https://standards.nasa.gov/standard/NASA/NASA-STD-3001_VOL_2",
      "supports": "NASA-STD-3001 Vol 2 Rev F: V2 6162, V2 6164, V2 7058, V2 7059, and Section 10.6 automated and robotic systems."
    },
    {
      "key": "tb044",
      "text": "NASA OCHMO. Medical Operations. Technical Brief OCHMO-TB-044 (2025).",
      "url": "https://www.nasa.gov/wp-content/uploads/2025/08/ochmo-tb-044-medical-operations.pdf",
      "supports": "The crew surgeon keeps medical authority when care is delegated; crew medical officers train on the JSC 48522 medical checklist."
    },
    {
      "key": "marsdelay",
      "text": "NASA. Mars communications disruption and delay (fact sheet, 2023 Moon to Mars Architecture Concept Review).",
      "url": "https://www.nasa.gov/wp-content/uploads/2024/01/mars-communications-disruption-and-delay.pdf",
      "supports": "One-way Earth-Mars delay up to about 21-23 minutes, plus blackouts of about 2-3 weeks near solar conjunction."
    },
    {
      "key": "pccp",
      "text": "U.S. Food and Drug Administration. Marketing submission recommendations for a predetermined change control plan for artificial intelligence-enabled device software functions (guidance).",
      "url": "https://www.fda.gov/regulatory-information/search-fda-guidance-documents/marketing-submission-recommendations-predetermined-change-control-plan-artificial-intelligence",
      "supports": "A model for planning, validating and rolling back software updates."
    },
    {
      "key": "faa460",
      "text": "U.S. Code of Federal Regulations, Title 14, Part 460: Human space flight requirements.",
      "url": "https://www.ecfr.gov/current/title-14/chapter-III/subchapter-C/part-460",
      "supports": "Federal rules for crew and spaceflight participants on licensed commercial flights; they set no medical standards for spaceflight participants."
    }
  ],
  "corrections": [
    {
      "date": "2026-10-21",
      "version": "0.2",
      "source": "Batch 10 AI-assisted clinical review (Medical Research Assistant), Oct 21, 2026",
      "items": [
        "Link-loss wording (X5 and comms) fixed: the stray word \"crew\" before the list of what continues is removed, so the sentence reads, for example, \"the exam already under way and all crew care continue under the onboard checklist\" (R6).",
        "The camera readout is optional: it runs only when the vehicle has no dosimetry downlink, the downlink has failed, or the flight surgeon asks; the prompt and the exchange and stowage log are the core (SRAG: readings are sent by Bluetooth for downlink) (S7).",
        "RF3 stays a secondary flag and now says the robot's reading may lag the display and the vehicle monitor is the alert (V2 6164) (S8).",
        "RF1 and the radiation-alarm stop rule add \"the crew go to shelter without waiting for the robot\" (S9).",
        "Batch 10 protocols now record the review as AI-assisted (Medical Research Assistant, Oct 21, 2026); no named human clinician."
      ]
    }
  ]
}
