Data seeding, filter overhaul, UI scaling fixes, sanitized AlarmAnalysis copy

Data & simulation:
- simulation_tags.json: re-prioritize 10 tags to Medium so all four
  priorities appear in live data (backfilled journal history to match)
- SimHarness probe P2: ack-user/includeData ground truth + filtered-bundle
  verification against the live journal

Data layer (PrimeControls.calc/alarms):
- filters now drive every metric: queryStatus rows (Active Now/Unacked/
  Standing) filtered via calc.apply_status_filters; event_count counts only
  filtered instances (per-instance n_events); dropdown options enumerate
  unfiltered data so choices never collapse
- build_bundle refactored into _assemble(); when filters are active an
  unfiltered mirror is attached as bundle.overview - the Overview tab stays
  a plant-wide summary while all other consumers bind filtered sections
- _fetch_journal now honors includeData (required for ackUserName; without
  it ack attribution is always None); enabled for journal rows + source
  detail so Top Ack Users and the Ack By column populate

FilterBar/Dashboard:
- root-cause fix: bidirectional bindings never wrote dropdown selections
  back to session props, so filters silently did nothing; Apply now pulls
  values directly from the sibling controls, Clear resets both
- multi-select dropdowns cap at 280px and wrap chips; filter bar row is
  auto-height so wrapped chips push tabs down instead of overlapping
- filter bar hidden on the Overview tab (not applicable there)

UI scaling:
- Header: Prime logo added; KpiCard compacted to fit the 71px KPI row
  (basis-95% overflow fix, chip hugs text, embeds clipped) - no scrollbars
- Overview timeline: thinned x labels (minDistance 140), labels anchored
  below the axis, smaller legend markers
- Bad Actors focus chip shows the full source string with the clear X
- popup repeaters (Daily Activity, ScoreBars) no longer overflow
  (useDefaultViewWidth/Height off, taller strip); 5px table cell padding

Tooling/tests:
- lint_project.py: accept propConfig params.* as param declarations
  (Designer saves strip null params entries)
- tests: 31 -> 34 (status-filter semantics, overview mirror, filtered
  event counts)
- .gitignore: runtime churn (valueStore.idb, local-system-properties,
  migration logs, thumbnails, .schemas)

New project: AlarmAnalysis - submission copy of PrimeBAT with client-visible
Prime Controls branding removed (logo, subtitle, project title, shift report
heading); PrimeControls organizational namespaces retained per spec.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 16:27:48 -05:00
parent b70b4d6991
commit d353c5001e
165 changed files with 13988 additions and 525 deletions

View File

@@ -26,10 +26,10 @@
"name": "Authenticated"
}
],
"timestamp": 1784216310176,
"timestamp": 1784232384833,
"type": "basic-token"
},
"settings": {
"tokenHash": "gRWFOVFZWoJU0K2ZC7wscQR-u0fJgCDYW27643fMe8I"
"tokenHash": "So4BhtfZoGvLECKxykeufxMlyEa7AvInYFxuLnG3y-A"
}
}

View File

@@ -8,7 +8,7 @@
"config.json"
],
"attributes": {
"uuid": "5084e69e-49cc-4117-a144-ec3a6fff6ec1",
"uuid": "3e632819-1ddd-4115-bd5a-d0ea4423112f",
"enabled": true
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,21 @@
{
"scope": "A",
"description": "",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"image (4).png"
],
"attributes": {
"width": 980,
"format": "PNG",
"lastModification": {
"actor": "admin",
"timestamp": "2026-07-16T20:05:50Z"
},
"size": 22586,
"lastModificationSignature": "8fb1036e309aeb5d2a121adcae1ce030b7ba1f6f4451665db873ab2a5e0e2612",
"height": 286
}
}

View File

@@ -6,12 +6,12 @@
{
"mode": "Equality",
"setpointA": 1.0,
"name": "FlameScannerFlicker_Fleeting",
"label": "Flame Scanner Flicker",
"priority": "High"
"name": "BlowdownConductivityHigh",
"label": "Blowdown Conductivity High",
"priority": "Low"
}
],
"name": "FlameScannerFlicker_Fleeting",
"name": "BlowdownConductivityHigh",
"tagType": "AtomicTag"
},
{
@@ -29,66 +29,6 @@
"name": "FeedPumpA_Fault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "StackTempHigh",
"label": "Stack Temp High",
"priority": "Low"
}
],
"name": "StackTempHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "DrumLevelXmtrFail_Standing",
"label": "Drum Level Transmitter Failed",
"priority": "High"
}
],
"name": "DrumLevelXmtrFail_Standing",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "FuelGasPressLow",
"label": "Fuel Gas Pressure Low",
"priority": "Low"
}
],
"name": "FuelGasPressLow",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "DrumLevelLow",
"label": "Drum Level Low",
"priority": "High"
}
],
"name": "DrumLevelLow",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -104,21 +44,6 @@
"name": "FeedPumpB_Fault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "BlowdownConductivityHigh",
"label": "Blowdown Conductivity High",
"priority": "Low"
}
],
"name": "BlowdownConductivityHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -134,6 +59,21 @@
"name": "SteamPressHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "DrumLevelLow",
"label": "Drum Level Low",
"priority": "High"
}
],
"name": "DrumLevelLow",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -143,10 +83,70 @@
"setpointA": 1.0,
"name": "EconomizerDPHigh",
"label": "Economizer Diff Press High",
"priority": "Low"
"priority": "Medium"
}
],
"name": "EconomizerDPHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "DrumLevelXmtrFail_Standing",
"label": "Drum Level Transmitter Failed",
"priority": "High"
}
],
"name": "DrumLevelXmtrFail_Standing",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "FlameScannerFlicker_Fleeting",
"label": "Flame Scanner Flicker",
"priority": "High"
}
],
"name": "FlameScannerFlicker_Fleeting",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "StackTempHigh",
"label": "Stack Temp High",
"priority": "Low"
}
],
"name": "StackTempHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "FuelGasPressLow",
"label": "Fuel Gas Pressure Low",
"priority": "Medium"
}
],
"name": "FuelGasPressLow",
"tagType": "AtomicTag"
}
]

View File

@@ -53,7 +53,7 @@
"setpointA": 1.0,
"name": "Pump2_Fault",
"label": "Intake Pump 2 Fault",
"priority": "High"
"priority": "Medium"
}
],
"name": "Pump2_Fault",
@@ -143,7 +143,7 @@
"setpointA": 1.0,
"name": "ScreenDiffPressHigh",
"label": "Intake Screen Diff Press High",
"priority": "Low"
"priority": "Medium"
}
],
"name": "ScreenDiffPressHigh",

View File

@@ -1,4 +1,19 @@
[
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "GuardDoorOpen",
"label": "Guard Door Open",
"priority": "Low"
}
],
"name": "GuardDoorOpen",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -8,7 +23,7 @@
"setpointA": 1.0,
"name": "PrinterInkLow",
"label": "Date Coder Ink Low",
"priority": "Low"
"priority": "Medium"
}
],
"name": "PrinterInkLow",
@@ -21,12 +36,12 @@
{
"mode": "Equality",
"setpointA": 1.0,
"name": "EStopPulse_Fleeting",
"label": "E-Stop Circuit Pulse",
"priority": "Critical"
"name": "ConveyorOverload",
"label": "Conveyor Motor Overload",
"priority": "Medium"
}
],
"name": "EStopPulse_Fleeting",
"name": "ConveyorOverload",
"tagType": "AtomicTag"
},
{
@@ -51,27 +66,12 @@
{
"mode": "Equality",
"setpointA": 1.0,
"name": "LabelerFault",
"label": "Labeler Fault",
"priority": "High"
}
],
"name": "LabelerFault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "CapperTorqueLow",
"label": "Capper Torque Low",
"name": "ShrinkTunnelTemp_Chatter",
"label": "Shrink Tunnel Temp Deviation",
"priority": "Low"
}
],
"name": "CapperTorqueLow",
"name": "ShrinkTunnelTemp_Chatter",
"tagType": "AtomicTag"
},
{
@@ -96,12 +96,12 @@
{
"mode": "Equality",
"setpointA": 1.0,
"name": "GuardDoorOpen",
"label": "Guard Door Open",
"name": "CapperTorqueLow",
"label": "Capper Torque Low",
"priority": "Low"
}
],
"name": "GuardDoorOpen",
"name": "CapperTorqueLow",
"tagType": "AtomicTag"
},
{
@@ -111,12 +111,27 @@
{
"mode": "Equality",
"setpointA": 1.0,
"name": "ShrinkTunnelTemp_Chatter",
"label": "Shrink Tunnel Temp Deviation",
"priority": "Low"
"name": "EStopPulse_Fleeting",
"label": "E-Stop Circuit Pulse",
"priority": "Critical"
}
],
"name": "ShrinkTunnelTemp_Chatter",
"name": "EStopPulse_Fleeting",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "LabelerFault",
"label": "Labeler Fault",
"priority": "High"
}
],
"name": "LabelerFault",
"tagType": "AtomicTag"
},
{
@@ -133,20 +148,5 @@
],
"name": "FillerLevelDeviation",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "ConveyorOverload",
"label": "Conveyor Motor Overload",
"priority": "High"
}
],
"name": "ConveyorOverload",
"tagType": "AtomicTag"
}
]

View File

@@ -1,79 +1,4 @@
[
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "T101_LevelHigh",
"label": "Tank 101 Level High",
"priority": "High"
}
],
"name": "T101_LevelHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "ManifoldLeakDetect",
"label": "Manifold Leak Detected",
"priority": "Low"
}
],
"name": "ManifoldLeakDetect",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "TransferPumpFault",
"label": "Transfer Pump Fault",
"priority": "High"
}
],
"name": "TransferPumpFault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "PumpSealFlushLow_Fleeting",
"label": "Pump Seal Flush Flow Low",
"priority": "Low"
}
],
"name": "PumpSealFlushLow_Fleeting",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "VaporRecoveryFault",
"label": "Vapor Recovery Unit Fault",
"priority": "Low"
}
],
"name": "VaporRecoveryFault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -83,27 +8,12 @@
"setpointA": 1.0,
"name": "T103_TempHigh",
"label": "Tank 103 Temp High",
"priority": "Low"
"priority": "Medium"
}
],
"name": "T103_TempHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "T104_PressHigh",
"label": "Tank 104 Pressure High",
"priority": "Low"
}
],
"name": "T104_PressHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -126,12 +36,12 @@
{
"mode": "Equality",
"setpointA": 1.0,
"name": "ContainmentSumpHigh",
"label": "Containment Sump Level High",
"priority": "Critical"
"name": "VaporRecoveryFault",
"label": "Vapor Recovery Unit Fault",
"priority": "Low"
}
],
"name": "ContainmentSumpHigh",
"name": "VaporRecoveryFault",
"tagType": "AtomicTag"
},
{
@@ -148,5 +58,95 @@
],
"name": "T105_LevelXmtrFail_Standing",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "T104_PressHigh",
"label": "Tank 104 Pressure High",
"priority": "Low"
}
],
"name": "T104_PressHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "PumpSealFlushLow_Fleeting",
"label": "Pump Seal Flush Flow Low",
"priority": "Low"
}
],
"name": "PumpSealFlushLow_Fleeting",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "T101_LevelHigh",
"label": "Tank 101 Level High",
"priority": "High"
}
],
"name": "T101_LevelHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "TransferPumpFault",
"label": "Transfer Pump Fault",
"priority": "Medium"
}
],
"name": "TransferPumpFault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "ContainmentSumpHigh",
"label": "Containment Sump Level High",
"priority": "Critical"
}
],
"name": "ContainmentSumpHigh",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "ManifoldLeakDetect",
"label": "Manifold Leak Detected",
"priority": "Low"
}
],
"name": "ManifoldLeakDetect",
"tagType": "AtomicTag"
}
]

View File

@@ -1,79 +1,4 @@
[
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "AirHeaderPressLow",
"label": "Instrument Air Pressure Low",
"priority": "Critical"
}
],
"name": "AirHeaderPressLow",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "WaterSoftenerFault",
"label": "Water Softener Fault",
"priority": "Low"
}
],
"name": "WaterSoftenerFault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "AirDryerDewpoint_Chatter",
"label": "Air Dryer Dewpoint High",
"priority": "Low"
}
],
"name": "AirDryerDewpoint_Chatter",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "CoolingTowerVibration",
"label": "Cooling Tower Fan Vibration",
"priority": "Low"
}
],
"name": "CoolingTowerVibration",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "N2PressLow",
"label": "Nitrogen Pressure Low",
"priority": "Low"
}
],
"name": "N2PressLow",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -119,6 +44,81 @@
"name": "UPSOnBattery",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "AirHeaderPressLow",
"label": "Instrument Air Pressure Low",
"priority": "Critical"
}
],
"name": "AirHeaderPressLow",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "CoolingTowerVibration",
"label": "Cooling Tower Fan Vibration",
"priority": "Low"
}
],
"name": "CoolingTowerVibration",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "N2PressLow",
"label": "Nitrogen Pressure Low",
"priority": "Medium"
}
],
"name": "N2PressLow",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "WaterSoftenerFault",
"label": "Water Softener Fault",
"priority": "Low"
}
],
"name": "WaterSoftenerFault",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"alarms": [
{
"mode": "Equality",
"setpointA": 1.0,
"name": "AirDryerDewpoint_Chatter",
"label": "Air Dryer Dewpoint High",
"priority": "Low"
}
],
"name": "AirDryerDewpoint_Chatter",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
@@ -128,7 +128,7 @@
"setpointA": 1.0,
"name": "GlycolTempHigh",
"label": "Glycol Supply Temp High",
"priority": "Low"
"priority": "Medium"
}
],
"name": "GlycolTempHigh",

View File

@@ -1,4 +0,0 @@
{
"demoTimeRemaining": 7197,
"systemUID": "74d9b05c-8099-426f-b466-2ab5a2e70b2f"
}

View File

@@ -1,16 +0,0 @@
{
"scope": "A",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"config.json"
],
"attributes": {
"lastModification": {
"actor": "unknown",
"timestamp": "2026-07-16T16:18:56Z"
},
"lastModificationSignature": "61a3d9f3963e46d707e2a5482cd15ca4eb9a9c3a7f5d185ae83f7097c6280633"
}
}