{"$defs":{"AlarmEvent":{"description":"Runtime alarm occurrence — distinct from AlarmDefinition (design-time).\n\nEach row records one alarm trip: when it activated, when it returned\nto normal, whether it was acknowledged/shelved/suppressed, and by whom.\nStored in an append-only ``alarm_event`` table for rationalization\nfeedback (compare actual alarm loads against design alarm database).","properties":{"event_id":{"format":"uuid","title":"Event Id","type":"string"},"project_ref":{"title":"Project Ref","type":"string"},"alarm_uid":{"description":"FK to alarm_definition.alarm_uid","format":"uuid","title":"Alarm Uid","type":"string"},"equipment_uid":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Equipment Uid"},"event_timestamp":{"format":"date-time","title":"Event Timestamp","type":"string"},"return_to_normal_timestamp":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Return To Normal Timestamp"},"duration_s":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Duration S"},"acknowledged":{"default":false,"title":"Acknowledged","type":"boolean"},"acknowledged_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Acknowledged By"},"acknowledged_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"Acknowledged At"},"shelved":{"default":false,"title":"Shelved","type":"boolean"},"shelve_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Shelve Reason"},"suppressed":{"default":false,"title":"Suppressed","type":"boolean"},"standing":{"default":false,"description":"True if alarm was still active at shift end / report cutoff","title":"Standing","type":"boolean"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Notes"}},"required":["project_ref","alarm_uid","event_timestamp"],"title":"AlarmEvent","type":"object"},"ChemicalDoseRun":{"description":"Chemical addition event — tracks what was dosed, how much, and why.\n\nLinks to equipment_uid (dosing pump or metering system) and\nrecords the target parameter being controlled.","properties":{"dose_id":{"format":"uuid","title":"Dose Id","type":"string"},"project_ref":{"title":"Project Ref","type":"string"},"equipment_uid":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Equipment Uid"},"chemical":{"description":"Chemical name (e.g., NaOH, FeCl3, NaOCl)","title":"Chemical","type":"string"},"dose_rate":{"minimum":0,"title":"Dose Rate","type":"number"},"dose_unit":{"$ref":"#/$defs/EngineeringUnit"},"total_volume_l":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Total Volume L"},"target_parameter":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Parameter being controlled (e.g., pH, residual Cl2)","title":"Target Parameter"},"target_setpoint":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Target Setpoint"},"actual_parameter_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Actual Parameter Value"},"parameter_unit":{"anyOf":[{"$ref":"#/$defs/EngineeringUnit"},{"type":"null"}],"default":null},"start_datetime":{"format":"date-time","title":"Start Datetime","type":"string"},"end_datetime":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"default":null,"title":"End Datetime"},"operator":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Operator"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Notes"}},"required":["project_ref","chemical","dose_rate","dose_unit","start_datetime"],"title":"ChemicalDoseRun","type":"object"},"ControlPerformanceSnapshot":{"description":"Point-in-time control loop health assessment.\n\nCaptures setpoint, PV, output, mode, and optional performance\nmetrics (IAE, oscillation detection) for control loop tuning\nreviews and trend analysis.","properties":{"snapshot_id":{"format":"uuid","title":"Snapshot Id","type":"string"},"project_ref":{"title":"Project Ref","type":"string"},"loop_id":{"description":"ISA-5.1 loop identifier","pattern":"^[0-9]{3}-[A-Z]-[0-9]{2,4}$","title":"Loop Id","type":"string"},"equipment_uid":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Equipment Uid"},"snapshot_datetime":{"format":"date-time","title":"Snapshot Datetime","type":"string"},"setpoint":{"title":"Setpoint","type":"number"},"process_variable":{"title":"Process Variable","type":"number"},"output_pct":{"maximum":100,"minimum":0,"title":"Output Pct","type":"number"},"mode":{"enum":["AUTO","MANUAL","CASCADE"],"title":"Mode","type":"string"},"units":{"anyOf":[{"$ref":"#/$defs/EngineeringUnit"},{"type":"null"}],"default":null},"error":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SP - PV at snapshot time","title":"Error"},"iae_score":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Integral of absolute error over assessment window","title":"Iae Score"},"oscillation_flag":{"default":false,"title":"Oscillation Flag","type":"boolean"},"saturation_flag":{"default":false,"description":"True if output is at 0% or 100% (valve fully open/closed)","title":"Saturation Flag","type":"boolean"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Notes"}},"required":["project_ref","loop_id","snapshot_datetime","setpoint","process_variable","output_pct","mode"],"title":"ControlPerformanceSnapshot","type":"object"},"EngineeringUnit":{"description":"Constrained engineering units for water/wastewater treatment.\n\nCodes follow QUDT / UN/CEFACT Rec 20 conventions with Python-safe\nidentifiers (underscores for slashes).  JSON values match the Python\nname except where noted (e.g. ``min_`` → ``\"min\"``).","enum":["m3_per_d","m3_per_h","L_per_s","L_per_min","MGD","gpm","mg_per_L","g_per_m3","ug_per_L","percent","mg_per_kg","kg_per_d","kg_per_h","t_per_d","degC","K","kPa","bar","psi","mH2O","kW","W","hp","kWh","MJ","m","mm","cm","m2","m3","L","kg","g","mg","s","min","h","d","m_per_s","m_per_min","kg_per_m3_per_d","kg_per_m2_per_d","PH","NTU","SVI_mL_per_g","V","A","ohm","Hz","mS_per_cm","uS_per_cm","meq_per_L","CFU_per_100mL","MPN_per_100mL","SU","L_per_m2_per_h","gpd_per_ft2","ppmv","BTU_per_scf","MJ_per_Nm3","mg_per_Nm3","percent_vol","mg_per_kg_dry","CFU_per_g","MPN_per_g","ug_per_m3","kg_per_yr","percent_VS_reduction","MPN_per_4g","Pt_Co"],"title":"EngineeringUnit","type":"string"},"OperatorRound":{"description":"Structured field walkthrough by an operator.\n\nCaptures checkpoint-by-checkpoint observations during daily\nplant rounds, supplementing SCADA sensor data with human\nobservations (visual, auditory, olfactory).","properties":{"round_id":{"format":"uuid","title":"Round Id","type":"string"},"project_ref":{"title":"Project Ref","type":"string"},"round_datetime":{"format":"date-time","title":"Round Datetime","type":"string"},"operator":{"title":"Operator","type":"string"},"checkpoints":{"items":{"$ref":"#/$defs/RoundCheckpoint"},"title":"Checkpoints","type":"array"},"anomaly_count":{"default":0,"minimum":0,"title":"Anomaly Count","type":"integer"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Notes"},"duration_min":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Duration Min"}},"required":["project_ref","round_datetime","operator"],"title":"OperatorRound","type":"object"},"RoundCheckpoint":{"description":"Single checkpoint in an operator round.","properties":{"location":{"title":"Location","type":"string"},"observation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Observation"},"reading_value":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Reading Value"},"reading_unit":{"anyOf":[{"$ref":"#/$defs/EngineeringUnit"},{"type":"null"}],"default":null},"photo_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Photo Ref"},"anomaly_flag":{"default":false,"title":"Anomaly Flag","type":"boolean"},"equipment_uid":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Equipment Uid"}},"required":["location"],"title":"RoundCheckpoint","type":"object"},"ShiftLog":{"description":"Operator shift handover record.\n\nCaptures the structured summary an outgoing operator leaves for the\nincoming shift: what happened, what to watch, and any unresolved issues.","properties":{"log_id":{"format":"uuid","title":"Log Id","type":"string"},"project_ref":{"title":"Project Ref","type":"string"},"shift_date":{"format":"date","title":"Shift Date","type":"string"},"shift":{"enum":["DAY","NIGHT","SWING"],"title":"Shift","type":"string"},"operator":{"title":"Operator","type":"string"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Summary"},"entries":{"items":{"$ref":"#/$defs/ShiftLogEntry"},"title":"Entries","type":"array"},"handover_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Handover Notes"},"incoming_operator":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Incoming Operator"},"published_at":{"format":"date-time","title":"Published At","type":"string"}},"required":["project_ref","shift_date","shift","operator"],"title":"ShiftLog","type":"object"},"ShiftLogEntry":{"description":"Single notable event within a shift.","properties":{"entry_timestamp":{"format":"date-time","title":"Entry Timestamp","type":"string"},"category":{"enum":["PROCESS","EQUIPMENT","SAFETY","ENVIRONMENTAL","STAFFING","VISITOR","OTHER"],"title":"Category","type":"string"},"description":{"title":"Description","type":"string"},"equipment_uid":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"default":null,"title":"Equipment Uid"}},"required":["entry_timestamp","category","description"],"title":"ShiftLogEntry","type":"object"}},"description":"Project-level operations runtime data bundle.","properties":{"package_id":{"format":"uuid","title":"Package Id","type":"string"},"project_ref":{"title":"Project Ref","type":"string"},"alarm_events":{"items":{"$ref":"#/$defs/AlarmEvent"},"title":"Alarm Events","type":"array"},"shift_logs":{"items":{"$ref":"#/$defs/ShiftLog"},"title":"Shift Logs","type":"array"},"operator_rounds":{"items":{"$ref":"#/$defs/OperatorRound"},"title":"Operator Rounds","type":"array"},"chemical_dose_runs":{"items":{"$ref":"#/$defs/ChemicalDoseRun"},"title":"Chemical Dose Runs","type":"array"},"control_snapshots":{"items":{"$ref":"#/$defs/ControlPerformanceSnapshot"},"title":"Control Snapshots","type":"array"},"published_at":{"format":"date-time","title":"Published At","type":"string"}},"required":["project_ref"],"title":"OperationsRuntimePackage","type":"object","$id":"https://puranwater.com/schemas/operations-runtime-package.schema.json"}