devagent-ignition 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. devagent_hmi.py +471 -0
  2. devagent_ignition-0.1.0.dist-info/METADATA +204 -0
  3. devagent_ignition-0.1.0.dist-info/RECORD +133 -0
  4. devagent_ignition-0.1.0.dist-info/WHEEL +4 -0
  5. devagent_ignition-0.1.0.dist-info/entry_points.txt +2 -0
  6. devagent_spatial/__init__.py +1 -0
  7. devagent_spatial/_resources/README.md +187 -0
  8. devagent_spatial/_resources/RELEASE_MANIFEST.json +312 -0
  9. devagent_spatial/_resources/SHA256SUMS.txt +270 -0
  10. devagent_spatial/_resources/SOURCE_PROVENANCE.json +186 -0
  11. devagent_spatial/_resources/assets/agent.js +102 -0
  12. devagent_spatial/_resources/assets/creator.css +247 -0
  13. devagent_spatial/_resources/assets/creator_2d.mjs +16 -0
  14. devagent_spatial/_resources/assets/creator_original_r9.mjs +58 -0
  15. devagent_spatial/_resources/assets/creator_original_v8.mjs +120 -0
  16. devagent_spatial/_resources/assets/creator_r9_diagnostics.mjs +53 -0
  17. devagent_spatial/_resources/assets/creator_scene.mjs +128 -0
  18. devagent_spatial/_resources/assets/creator_ui.mjs +60 -0
  19. devagent_spatial/_resources/assets/customer_documents.js +110 -0
  20. devagent_spatial/_resources/assets/equipment_controls.mjs +27 -0
  21. devagent_spatial/_resources/assets/facility2d.css +24 -0
  22. devagent_spatial/_resources/assets/facility2d_app.mjs +45 -0
  23. devagent_spatial/_resources/assets/facility2d_core.mjs +114 -0
  24. devagent_spatial/_resources/assets/facility2d_simulation.mjs +167 -0
  25. devagent_spatial/_resources/assets/facility2d_viewer.html +7 -0
  26. devagent_spatial/_resources/assets/fallback_scene.js +17 -0
  27. devagent_spatial/_resources/assets/flow_geometry.mjs +218 -0
  28. devagent_spatial/_resources/assets/harness.js +78 -0
  29. devagent_spatial/_resources/assets/live_design_review.js +129 -0
  30. devagent_spatial/_resources/assets/operations_ui.js +305 -0
  31. devagent_spatial/_resources/assets/operator_viewer.html +64 -0
  32. devagent_spatial/_resources/assets/project_package.js +52 -0
  33. devagent_spatial/_resources/assets/r9_transport.mjs +70 -0
  34. devagent_spatial/_resources/assets/runtime_feed.js +30 -0
  35. devagent_spatial/_resources/assets/studio.html +139 -0
  36. devagent_spatial/_resources/assets/style.css +191 -0
  37. devagent_spatial/_resources/assets/test_workspace.html +195 -0
  38. devagent_spatial/_resources/assets/three_scene.js +442 -0
  39. devagent_spatial/_resources/assets/unified_engineer.js +101 -0
  40. devagent_spatial/_resources/assets/v076_fat_ui.js +40 -0
  41. devagent_spatial/_resources/assets/v078_command_ui.js +44 -0
  42. devagent_spatial/_resources/assets/viewer.html +45 -0
  43. devagent_spatial/_resources/assets/viewer.js +112 -0
  44. devagent_spatial/_resources/design-system.json +130 -0
  45. devagent_spatial/_resources/examples/CV101-command-contract-PENDING.json +30 -0
  46. devagent_spatial/_resources/examples/cv101_guided.json +272 -0
  47. devagent_spatial/_resources/examples/make_examples.py +36 -0
  48. devagent_spatial/_resources/examples/single_floor.json +444 -0
  49. devagent_spatial/_resources/examples/v0771_training_wizard.json +11 -0
  50. devagent_spatial/_resources/examples/warehouse-3floor-standard-2d.json +708 -0
  51. devagent_spatial/_resources/examples/warehouse-operations-synthetic.json +1186 -0
  52. devagent_spatial/_resources/examples/warehouse-v07-lab-bindings-PENDING.json +372 -0
  53. devagent_spatial/_resources/examples/warehouse.json +708 -0
  54. devagent_spatial/_resources/examples/water.json +288 -0
  55. devagent_spatial/_resources/reference/r9-golden/REFERENCE_SHA256.json +13 -0
  56. devagent_spatial/_resources/reference/r9-golden/web/app.mjs +745 -0
  57. devagent_spatial/_resources/reference/r9-golden/web/index.html +213 -0
  58. devagent_spatial/_resources/reference/r9-golden/web/lab_panel.mjs +53 -0
  59. devagent_spatial/_resources/reference/r9-golden/web/model.mjs +367 -0
  60. devagent_spatial/_resources/reference/r9-golden/web/state_adapter.mjs +78 -0
  61. devagent_spatial/_resources/reference/r9-golden/web/styles.css +76 -0
  62. devagent_spatial/_resources/reference/r9-original/README_R9.md +27 -0
  63. devagent_spatial/_resources/reference/r9-original/SHA256SUMS.txt +63 -0
  64. devagent_spatial/_resources/reference/r9-original/SNAPSHOT_SHA256SUMS.txt +16 -0
  65. devagent_spatial/_resources/reference/r9-original/flow_routes.json +527 -0
  66. devagent_spatial/_resources/reference/r9-original/flow_sim.py +117 -0
  67. devagent_spatial/_resources/reference/r9-original/lab_control.py +73 -0
  68. devagent_spatial/_resources/reference/r9-original/web/app.mjs +745 -0
  69. devagent_spatial/_resources/reference/r9-original/web/index.html +213 -0
  70. devagent_spatial/_resources/reference/r9-original/web/lab_panel.mjs +53 -0
  71. devagent_spatial/_resources/reference/r9-original/web/model.mjs +367 -0
  72. devagent_spatial/_resources/reference/r9-original/web/state_adapter.mjs +78 -0
  73. devagent_spatial/_resources/reference/r9-original/web/styles.css +76 -0
  74. devagent_spatial/_resources/reference/r9-original/web/vendor/LICENSE-three.txt +21 -0
  75. devagent_spatial/_resources/reference/r9-original/web/vendor/SHA256SUMS.txt +4 -0
  76. devagent_spatial/_resources/reference/r9-original/web/vendor/addons/controls/OrbitControls.js +1860 -0
  77. devagent_spatial/_resources/reference/r9-original/web/vendor/three.core.js +58773 -0
  78. devagent_spatial/_resources/reference/r9-original/web/vendor/three.module.js +18251 -0
  79. devagent_spatial/_resources/reference/v8-original/README.md +36 -0
  80. devagent_spatial/_resources/reference/v8-original/SHA256SUMS.txt +12 -0
  81. devagent_spatial/_resources/reference/v8-original/model.py +124 -0
  82. devagent_spatial/_resources/reference/v8-original/run_demo.sh +4 -0
  83. devagent_spatial/_resources/reference/v8-original/server.py +100 -0
  84. devagent_spatial/_resources/reference/v8-original/tests/browser_smoke.py +50 -0
  85. devagent_spatial/_resources/reference/v8-original/tests/test_v8.py +144 -0
  86. devagent_spatial/_resources/reference/v8-original/topology.json +24 -0
  87. devagent_spatial/_resources/reference/v8-original/web/app.js +114 -0
  88. devagent_spatial/_resources/reference/v8-original/web/index.html +22 -0
  89. devagent_spatial/_resources/reference/v8-original/web/simulator.html +1 -0
  90. devagent_spatial/_resources/reference/v8-original/web/simulator.js +6 -0
  91. devagent_spatial/_resources/reference/v8-original/web/style.css +16 -0
  92. devagent_spatial/_resources/sample_customer_inputs/Plant_Equipment_Register.csv +4 -0
  93. devagent_spatial/_resources/sample_customer_inputs/Plant_Flow_Requirements.txt +5 -0
  94. devagent_spatial/_resources/sample_customer_inputs/Raw_PLC_Tag_Export.csv +4 -0
  95. devagent_spatial/_resources/templates/warehouse_connections.csv +12 -0
  96. devagent_spatial/_resources/templates/warehouse_equipment.csv +21 -0
  97. devagent_spatial/_resources/templates/warehouse_signals.csv +34 -0
  98. devagent_spatial/_resources/templates/water_connections.csv +7 -0
  99. devagent_spatial/_resources/templates/water_equipment.csv +10 -0
  100. devagent_spatial/_resources/templates/water_signals.csv +12 -0
  101. devagent_spatial/agent_harness.py +299 -0
  102. devagent_spatial/agent_runtime.py +314 -0
  103. devagent_spatial/contract_opc_fat.py +216 -0
  104. devagent_spatial/contract_opc_source.py +265 -0
  105. devagent_spatial/control_intents.py +38 -0
  106. devagent_spatial/customer_intake.py +235 -0
  107. devagent_spatial/engineering_expertise.py +114 -0
  108. devagent_spatial/generator.py +201 -0
  109. devagent_spatial/ignition_native.py +234 -0
  110. devagent_spatial/ignition_project.py +144 -0
  111. devagent_spatial/live_lab_binding.py +128 -0
  112. devagent_spatial/model.py +297 -0
  113. devagent_spatial/native_reference.py +69 -0
  114. devagent_spatial/opc_snapshot.py +87 -0
  115. devagent_spatial/operations.py +284 -0
  116. devagent_spatial/operations_capture.py +47 -0
  117. devagent_spatial/operations_lab.py +64 -0
  118. devagent_spatial/original_r9.py +169 -0
  119. devagent_spatial/original_v8.py +81 -0
  120. devagent_spatial/preflight.py +140 -0
  121. devagent_spatial/preview_simulation.py +189 -0
  122. devagent_spatial/project_package.py +101 -0
  123. devagent_spatial/qualification.py +152 -0
  124. devagent_spatial/strict_json.py +29 -0
  125. devagent_spatial/studio.py +894 -0
  126. devagent_spatial/studio_workflow.py +277 -0
  127. devagent_spatial/test_reporting.py +87 -0
  128. devagent_spatial/v076_opc_fat.py +180 -0
  129. devagent_spatial/v078_commands.py +277 -0
  130. devagent_spatial/v078_native_commands.py +161 -0
  131. devagent_spatial/v07_fat.py +110 -0
  132. devagent_spatial/v07_native.py +318 -0
  133. devagent_spatial/v083_native.py +349 -0
@@ -0,0 +1,1186 @@
1
+ {
2
+ "schema": "devagent.operations.replay.v1",
3
+ "status": "LAB_REPLAY_ONLY_NOT_VERIFIED",
4
+ "origin": "SYNTHETIC_OFFLINE_FIXTURE",
5
+ "mapping_digest": "d7a699f0ab51cf75ae5fcb4991a6369d9a4dd78b7f89e8481c541fdedc2aaeb4",
6
+ "project_name": "North Distribution Warehouse",
7
+ "frames": [
8
+ {
9
+ "at": "2026-01-01T12:00:00+00:00",
10
+ "index": 1,
11
+ "signals": [
12
+ {
13
+ "signal_id": "S_INFEED01_RUN_FEEDBACK",
14
+ "asset_id": "INFEED01",
15
+ "role": "run_feedback",
16
+ "quality": "GOOD",
17
+ "valid": true,
18
+ "value": false,
19
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
20
+ },
21
+ {
22
+ "signal_id": "S_INFEED01_FAULT",
23
+ "asset_id": "INFEED01",
24
+ "role": "fault",
25
+ "quality": "GOOD",
26
+ "valid": true,
27
+ "value": false,
28
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
29
+ "active": false
30
+ },
31
+ {
32
+ "signal_id": "S_CV101_RUN_FEEDBACK",
33
+ "asset_id": "CV101",
34
+ "role": "run_feedback",
35
+ "quality": "GOOD",
36
+ "valid": true,
37
+ "value": false,
38
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
39
+ },
40
+ {
41
+ "signal_id": "S_CV101_FAULT",
42
+ "asset_id": "CV101",
43
+ "role": "fault",
44
+ "quality": "GOOD",
45
+ "valid": true,
46
+ "value": false,
47
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
48
+ "active": false
49
+ },
50
+ {
51
+ "signal_id": "S_CV102_RUN_FEEDBACK",
52
+ "asset_id": "CV102",
53
+ "role": "run_feedback",
54
+ "quality": "GOOD",
55
+ "valid": true,
56
+ "value": false,
57
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
58
+ },
59
+ {
60
+ "signal_id": "S_CV102_FAULT",
61
+ "asset_id": "CV102",
62
+ "role": "fault",
63
+ "quality": "GOOD",
64
+ "valid": true,
65
+ "value": false,
66
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
67
+ "active": false
68
+ },
69
+ {
70
+ "signal_id": "S_CV201_RUN_FEEDBACK",
71
+ "asset_id": "CV201",
72
+ "role": "run_feedback",
73
+ "quality": "GOOD",
74
+ "valid": true,
75
+ "value": false,
76
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
77
+ },
78
+ {
79
+ "signal_id": "S_CV201_FAULT",
80
+ "asset_id": "CV201",
81
+ "role": "fault",
82
+ "quality": "GOOD",
83
+ "valid": true,
84
+ "value": false,
85
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
86
+ "active": false
87
+ },
88
+ {
89
+ "signal_id": "S_SORT201_RUN_FEEDBACK",
90
+ "asset_id": "SORT201",
91
+ "role": "run_feedback",
92
+ "quality": "GOOD",
93
+ "valid": true,
94
+ "value": false,
95
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
96
+ },
97
+ {
98
+ "signal_id": "S_SORT201_FAULT",
99
+ "asset_id": "SORT201",
100
+ "role": "fault",
101
+ "quality": "GOOD",
102
+ "valid": true,
103
+ "value": false,
104
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
105
+ "active": false
106
+ },
107
+ {
108
+ "signal_id": "S_CV202_RUN_FEEDBACK",
109
+ "asset_id": "CV202",
110
+ "role": "run_feedback",
111
+ "quality": "GOOD",
112
+ "valid": true,
113
+ "value": false,
114
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
115
+ },
116
+ {
117
+ "signal_id": "S_CV202_FAULT",
118
+ "asset_id": "CV202",
119
+ "role": "fault",
120
+ "quality": "GOOD",
121
+ "valid": true,
122
+ "value": false,
123
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
124
+ "active": false
125
+ },
126
+ {
127
+ "signal_id": "S_CV203_RUN_FEEDBACK",
128
+ "asset_id": "CV203",
129
+ "role": "run_feedback",
130
+ "quality": "GOOD",
131
+ "valid": true,
132
+ "value": false,
133
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
134
+ },
135
+ {
136
+ "signal_id": "S_CV203_FAULT",
137
+ "asset_id": "CV203",
138
+ "role": "fault",
139
+ "quality": "GOOD",
140
+ "valid": true,
141
+ "value": false,
142
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
143
+ "active": false
144
+ },
145
+ {
146
+ "signal_id": "S_CV301_RUN_FEEDBACK",
147
+ "asset_id": "CV301",
148
+ "role": "run_feedback",
149
+ "quality": "GOOD",
150
+ "valid": true,
151
+ "value": false,
152
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
153
+ },
154
+ {
155
+ "signal_id": "S_CV301_FAULT",
156
+ "asset_id": "CV301",
157
+ "role": "fault",
158
+ "quality": "GOOD",
159
+ "valid": true,
160
+ "value": false,
161
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
162
+ "active": false
163
+ },
164
+ {
165
+ "signal_id": "S_CV302_RUN_FEEDBACK",
166
+ "asset_id": "CV302",
167
+ "role": "run_feedback",
168
+ "quality": "GOOD",
169
+ "valid": true,
170
+ "value": false,
171
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
172
+ },
173
+ {
174
+ "signal_id": "S_CV302_FAULT",
175
+ "asset_id": "CV302",
176
+ "role": "fault",
177
+ "quality": "GOOD",
178
+ "valid": true,
179
+ "value": false,
180
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
181
+ "active": false
182
+ },
183
+ {
184
+ "signal_id": "S_CV303_RUN_FEEDBACK",
185
+ "asset_id": "CV303",
186
+ "role": "run_feedback",
187
+ "quality": "GOOD",
188
+ "valid": true,
189
+ "value": false,
190
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
191
+ },
192
+ {
193
+ "signal_id": "S_CV303_FAULT",
194
+ "asset_id": "CV303",
195
+ "role": "fault",
196
+ "quality": "GOOD",
197
+ "valid": true,
198
+ "value": false,
199
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
200
+ "active": false
201
+ },
202
+ {
203
+ "signal_id": "S_PE101_PHOTOEYE_BLOCKED",
204
+ "asset_id": "PE101",
205
+ "role": "photoeye_blocked",
206
+ "quality": "GOOD",
207
+ "valid": true,
208
+ "value": false,
209
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
210
+ "active": false
211
+ },
212
+ {
213
+ "signal_id": "S_PE101_PHOTOEYE_COUNT",
214
+ "asset_id": "PE101",
215
+ "role": "photoeye_count",
216
+ "quality": "GOOD",
217
+ "valid": true,
218
+ "value": 0,
219
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
220
+ },
221
+ {
222
+ "signal_id": "S_PE201_PHOTOEYE_BLOCKED",
223
+ "asset_id": "PE201",
224
+ "role": "photoeye_blocked",
225
+ "quality": "GOOD",
226
+ "valid": true,
227
+ "value": false,
228
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
229
+ "active": false
230
+ },
231
+ {
232
+ "signal_id": "S_PE201_PHOTOEYE_COUNT",
233
+ "asset_id": "PE201",
234
+ "role": "photoeye_count",
235
+ "quality": "GOOD",
236
+ "valid": true,
237
+ "value": 0,
238
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
239
+ },
240
+ {
241
+ "signal_id": "S_PE301_PHOTOEYE_BLOCKED",
242
+ "asset_id": "PE301",
243
+ "role": "photoeye_blocked",
244
+ "quality": "GOOD",
245
+ "valid": true,
246
+ "value": false,
247
+ "source_timestamp": "2026-01-01T12:00:00+00:00",
248
+ "active": false
249
+ },
250
+ {
251
+ "signal_id": "S_PE301_PHOTOEYE_COUNT",
252
+ "asset_id": "PE301",
253
+ "role": "photoeye_count",
254
+ "quality": "GOOD",
255
+ "valid": true,
256
+ "value": 0,
257
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
258
+ },
259
+ {
260
+ "signal_id": "S_DWS01_SCANNER_RESULT",
261
+ "asset_id": "DWS01",
262
+ "role": "scanner_result",
263
+ "quality": "GOOD",
264
+ "valid": true,
265
+ "value": "GOOD_READ",
266
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
267
+ },
268
+ {
269
+ "signal_id": "S_DWS01_NO_READ_COUNT",
270
+ "asset_id": "DWS01",
271
+ "role": "no_read_count",
272
+ "quality": "GOOD",
273
+ "valid": true,
274
+ "value": 0,
275
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
276
+ },
277
+ {
278
+ "signal_id": "S_SCN201_SCANNER_RESULT",
279
+ "asset_id": "SCN201",
280
+ "role": "scanner_result",
281
+ "quality": "GOOD",
282
+ "valid": true,
283
+ "value": "GOOD_READ",
284
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
285
+ },
286
+ {
287
+ "signal_id": "S_SCN201_NO_READ_COUNT",
288
+ "asset_id": "SCN201",
289
+ "role": "no_read_count",
290
+ "quality": "GOOD",
291
+ "valid": true,
292
+ "value": 0,
293
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
294
+ },
295
+ {
296
+ "signal_id": "S_VFD101_VFD_FREQUENCY",
297
+ "asset_id": "VFD101",
298
+ "role": "vfd_frequency",
299
+ "quality": "GOOD",
300
+ "valid": true,
301
+ "value": 0.0,
302
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
303
+ },
304
+ {
305
+ "signal_id": "S_VFD201_VFD_FREQUENCY",
306
+ "asset_id": "VFD201",
307
+ "role": "vfd_frequency",
308
+ "quality": "GOOD",
309
+ "valid": true,
310
+ "value": 0.0,
311
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
312
+ },
313
+ {
314
+ "signal_id": "S_VFD301_VFD_FREQUENCY",
315
+ "asset_id": "VFD301",
316
+ "role": "vfd_frequency",
317
+ "quality": "GOOD",
318
+ "valid": true,
319
+ "value": 0.0,
320
+ "source_timestamp": "2026-01-01T12:00:00+00:00"
321
+ }
322
+ ],
323
+ "metrics": {
324
+ "equipment_running": {
325
+ "value": 0,
326
+ "status": "LAB_REPLAY",
327
+ "sources": 10
328
+ },
329
+ "active_faults": {
330
+ "value": 0,
331
+ "status": "LAB_REPLAY",
332
+ "sources": 10
333
+ },
334
+ "photoeyes_blocked": {
335
+ "value": 0,
336
+ "status": "LAB_REPLAY",
337
+ "sources": 3
338
+ },
339
+ "total_scans": {
340
+ "value": null,
341
+ "status": "NOT_CONFIGURED",
342
+ "sources": 0
343
+ },
344
+ "no_reads": {
345
+ "value": 0,
346
+ "status": "LAB_REPLAY",
347
+ "sources": 2
348
+ },
349
+ "delivered": {
350
+ "value": null,
351
+ "status": "NOT_CONFIGURED",
352
+ "sources": 0
353
+ },
354
+ "parcels_in_transit": {
355
+ "value": null,
356
+ "status": "NOT_CONFIGURED",
357
+ "sources": 0
358
+ },
359
+ "last_scan_result": {
360
+ "value": "GOOD_READ",
361
+ "status": "LAB_REPLAY",
362
+ "sources": 2,
363
+ "asset_id": "SCN201"
364
+ },
365
+ "last_barcode": {
366
+ "value": null,
367
+ "status": "NOT_CONFIGURED",
368
+ "sources": 0
369
+ },
370
+ "signal_health": {
371
+ "value": 33,
372
+ "total": 33,
373
+ "status": "LAB_REPLAY"
374
+ }
375
+ },
376
+ "new_events": [],
377
+ "active_alarms": [],
378
+ "quality_issues": []
379
+ },
380
+ {
381
+ "at": "2026-01-01T12:00:03+00:00",
382
+ "index": 2,
383
+ "signals": [
384
+ {
385
+ "signal_id": "S_INFEED01_RUN_FEEDBACK",
386
+ "asset_id": "INFEED01",
387
+ "role": "run_feedback",
388
+ "quality": "GOOD",
389
+ "valid": true,
390
+ "value": true,
391
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
392
+ },
393
+ {
394
+ "signal_id": "S_INFEED01_FAULT",
395
+ "asset_id": "INFEED01",
396
+ "role": "fault",
397
+ "quality": "GOOD",
398
+ "valid": true,
399
+ "value": true,
400
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
401
+ "active": true
402
+ },
403
+ {
404
+ "signal_id": "S_CV101_RUN_FEEDBACK",
405
+ "asset_id": "CV101",
406
+ "role": "run_feedback",
407
+ "quality": "GOOD",
408
+ "valid": true,
409
+ "value": true,
410
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
411
+ },
412
+ {
413
+ "signal_id": "S_CV101_FAULT",
414
+ "asset_id": "CV101",
415
+ "role": "fault",
416
+ "quality": "GOOD",
417
+ "valid": true,
418
+ "value": false,
419
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
420
+ "active": false
421
+ },
422
+ {
423
+ "signal_id": "S_CV102_RUN_FEEDBACK",
424
+ "asset_id": "CV102",
425
+ "role": "run_feedback",
426
+ "quality": "GOOD",
427
+ "valid": true,
428
+ "value": true,
429
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
430
+ },
431
+ {
432
+ "signal_id": "S_CV102_FAULT",
433
+ "asset_id": "CV102",
434
+ "role": "fault",
435
+ "quality": "GOOD",
436
+ "valid": true,
437
+ "value": false,
438
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
439
+ "active": false
440
+ },
441
+ {
442
+ "signal_id": "S_CV201_RUN_FEEDBACK",
443
+ "asset_id": "CV201",
444
+ "role": "run_feedback",
445
+ "quality": "GOOD",
446
+ "valid": true,
447
+ "value": true,
448
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
449
+ },
450
+ {
451
+ "signal_id": "S_CV201_FAULT",
452
+ "asset_id": "CV201",
453
+ "role": "fault",
454
+ "quality": "GOOD",
455
+ "valid": true,
456
+ "value": false,
457
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
458
+ "active": false
459
+ },
460
+ {
461
+ "signal_id": "S_SORT201_RUN_FEEDBACK",
462
+ "asset_id": "SORT201",
463
+ "role": "run_feedback",
464
+ "quality": "GOOD",
465
+ "valid": true,
466
+ "value": true,
467
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
468
+ },
469
+ {
470
+ "signal_id": "S_SORT201_FAULT",
471
+ "asset_id": "SORT201",
472
+ "role": "fault",
473
+ "quality": "GOOD",
474
+ "valid": true,
475
+ "value": false,
476
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
477
+ "active": false
478
+ },
479
+ {
480
+ "signal_id": "S_CV202_RUN_FEEDBACK",
481
+ "asset_id": "CV202",
482
+ "role": "run_feedback",
483
+ "quality": "GOOD",
484
+ "valid": true,
485
+ "value": true,
486
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
487
+ },
488
+ {
489
+ "signal_id": "S_CV202_FAULT",
490
+ "asset_id": "CV202",
491
+ "role": "fault",
492
+ "quality": "GOOD",
493
+ "valid": true,
494
+ "value": false,
495
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
496
+ "active": false
497
+ },
498
+ {
499
+ "signal_id": "S_CV203_RUN_FEEDBACK",
500
+ "asset_id": "CV203",
501
+ "role": "run_feedback",
502
+ "quality": "GOOD",
503
+ "valid": true,
504
+ "value": true,
505
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
506
+ },
507
+ {
508
+ "signal_id": "S_CV203_FAULT",
509
+ "asset_id": "CV203",
510
+ "role": "fault",
511
+ "quality": "GOOD",
512
+ "valid": true,
513
+ "value": false,
514
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
515
+ "active": false
516
+ },
517
+ {
518
+ "signal_id": "S_CV301_RUN_FEEDBACK",
519
+ "asset_id": "CV301",
520
+ "role": "run_feedback",
521
+ "quality": "GOOD",
522
+ "valid": true,
523
+ "value": true,
524
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
525
+ },
526
+ {
527
+ "signal_id": "S_CV301_FAULT",
528
+ "asset_id": "CV301",
529
+ "role": "fault",
530
+ "quality": "GOOD",
531
+ "valid": true,
532
+ "value": false,
533
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
534
+ "active": false
535
+ },
536
+ {
537
+ "signal_id": "S_CV302_RUN_FEEDBACK",
538
+ "asset_id": "CV302",
539
+ "role": "run_feedback",
540
+ "quality": "GOOD",
541
+ "valid": true,
542
+ "value": true,
543
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
544
+ },
545
+ {
546
+ "signal_id": "S_CV302_FAULT",
547
+ "asset_id": "CV302",
548
+ "role": "fault",
549
+ "quality": "GOOD",
550
+ "valid": true,
551
+ "value": false,
552
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
553
+ "active": false
554
+ },
555
+ {
556
+ "signal_id": "S_CV303_RUN_FEEDBACK",
557
+ "asset_id": "CV303",
558
+ "role": "run_feedback",
559
+ "quality": "GOOD",
560
+ "valid": true,
561
+ "value": true,
562
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
563
+ },
564
+ {
565
+ "signal_id": "S_CV303_FAULT",
566
+ "asset_id": "CV303",
567
+ "role": "fault",
568
+ "quality": "GOOD",
569
+ "valid": true,
570
+ "value": false,
571
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
572
+ "active": false
573
+ },
574
+ {
575
+ "signal_id": "S_PE101_PHOTOEYE_BLOCKED",
576
+ "asset_id": "PE101",
577
+ "role": "photoeye_blocked",
578
+ "quality": "GOOD",
579
+ "valid": true,
580
+ "value": false,
581
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
582
+ "active": false
583
+ },
584
+ {
585
+ "signal_id": "S_PE101_PHOTOEYE_COUNT",
586
+ "asset_id": "PE101",
587
+ "role": "photoeye_count",
588
+ "quality": "GOOD",
589
+ "valid": true,
590
+ "value": 0,
591
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
592
+ },
593
+ {
594
+ "signal_id": "S_PE201_PHOTOEYE_BLOCKED",
595
+ "asset_id": "PE201",
596
+ "role": "photoeye_blocked",
597
+ "quality": "GOOD",
598
+ "valid": true,
599
+ "value": false,
600
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
601
+ "active": false
602
+ },
603
+ {
604
+ "signal_id": "S_PE201_PHOTOEYE_COUNT",
605
+ "asset_id": "PE201",
606
+ "role": "photoeye_count",
607
+ "quality": "GOOD",
608
+ "valid": true,
609
+ "value": 0,
610
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
611
+ },
612
+ {
613
+ "signal_id": "S_PE301_PHOTOEYE_BLOCKED",
614
+ "asset_id": "PE301",
615
+ "role": "photoeye_blocked",
616
+ "quality": "GOOD",
617
+ "valid": true,
618
+ "value": false,
619
+ "source_timestamp": "2026-01-01T12:00:03+00:00",
620
+ "active": false
621
+ },
622
+ {
623
+ "signal_id": "S_PE301_PHOTOEYE_COUNT",
624
+ "asset_id": "PE301",
625
+ "role": "photoeye_count",
626
+ "quality": "GOOD",
627
+ "valid": true,
628
+ "value": 0,
629
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
630
+ },
631
+ {
632
+ "signal_id": "S_DWS01_SCANNER_RESULT",
633
+ "asset_id": "DWS01",
634
+ "role": "scanner_result",
635
+ "quality": "GOOD",
636
+ "valid": true,
637
+ "value": "GOOD_READ",
638
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
639
+ },
640
+ {
641
+ "signal_id": "S_DWS01_NO_READ_COUNT",
642
+ "asset_id": "DWS01",
643
+ "role": "no_read_count",
644
+ "quality": "GOOD",
645
+ "valid": true,
646
+ "value": 1,
647
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
648
+ },
649
+ {
650
+ "signal_id": "S_SCN201_SCANNER_RESULT",
651
+ "asset_id": "SCN201",
652
+ "role": "scanner_result",
653
+ "quality": "GOOD",
654
+ "valid": true,
655
+ "value": "GOOD_READ",
656
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
657
+ },
658
+ {
659
+ "signal_id": "S_SCN201_NO_READ_COUNT",
660
+ "asset_id": "SCN201",
661
+ "role": "no_read_count",
662
+ "quality": "GOOD",
663
+ "valid": true,
664
+ "value": 1,
665
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
666
+ },
667
+ {
668
+ "signal_id": "S_VFD101_VFD_FREQUENCY",
669
+ "asset_id": "VFD101",
670
+ "role": "vfd_frequency",
671
+ "quality": "GOOD",
672
+ "valid": true,
673
+ "value": 0.0,
674
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
675
+ },
676
+ {
677
+ "signal_id": "S_VFD201_VFD_FREQUENCY",
678
+ "asset_id": "VFD201",
679
+ "role": "vfd_frequency",
680
+ "quality": "GOOD",
681
+ "valid": true,
682
+ "value": 0.0,
683
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
684
+ },
685
+ {
686
+ "signal_id": "S_VFD301_VFD_FREQUENCY",
687
+ "asset_id": "VFD301",
688
+ "role": "vfd_frequency",
689
+ "quality": "GOOD",
690
+ "valid": true,
691
+ "value": 0.0,
692
+ "source_timestamp": "2026-01-01T12:00:03+00:00"
693
+ }
694
+ ],
695
+ "metrics": {
696
+ "equipment_running": {
697
+ "value": 10,
698
+ "status": "LAB_REPLAY",
699
+ "sources": 10
700
+ },
701
+ "active_faults": {
702
+ "value": 1,
703
+ "status": "LAB_REPLAY",
704
+ "sources": 10
705
+ },
706
+ "photoeyes_blocked": {
707
+ "value": 0,
708
+ "status": "LAB_REPLAY",
709
+ "sources": 3
710
+ },
711
+ "total_scans": {
712
+ "value": null,
713
+ "status": "NOT_CONFIGURED",
714
+ "sources": 0
715
+ },
716
+ "no_reads": {
717
+ "value": 2,
718
+ "status": "LAB_REPLAY",
719
+ "sources": 2
720
+ },
721
+ "delivered": {
722
+ "value": null,
723
+ "status": "NOT_CONFIGURED",
724
+ "sources": 0
725
+ },
726
+ "parcels_in_transit": {
727
+ "value": null,
728
+ "status": "NOT_CONFIGURED",
729
+ "sources": 0
730
+ },
731
+ "last_scan_result": {
732
+ "value": "GOOD_READ",
733
+ "status": "LAB_REPLAY",
734
+ "sources": 2,
735
+ "asset_id": "SCN201"
736
+ },
737
+ "last_barcode": {
738
+ "value": null,
739
+ "status": "NOT_CONFIGURED",
740
+ "sources": 0
741
+ },
742
+ "signal_health": {
743
+ "value": 33,
744
+ "total": 33,
745
+ "status": "LAB_REPLAY"
746
+ }
747
+ },
748
+ "new_events": [
749
+ {
750
+ "kind": "ASSERTED",
751
+ "severity": "CRITICAL",
752
+ "signal_id": "S_INFEED01_FAULT",
753
+ "asset_id": "INFEED01",
754
+ "role": "fault",
755
+ "message": "Equipment fault",
756
+ "at": "2026-01-01T12:00:03+00:00",
757
+ "source": "LAB_REPLAY"
758
+ }
759
+ ],
760
+ "active_alarms": [
761
+ {
762
+ "signal_id": "S_INFEED01_FAULT",
763
+ "asset_id": "INFEED01",
764
+ "role": "fault",
765
+ "severity": "CRITICAL"
766
+ }
767
+ ],
768
+ "quality_issues": []
769
+ },
770
+ {
771
+ "at": "2026-01-01T12:00:06+00:00",
772
+ "index": 3,
773
+ "signals": [
774
+ {
775
+ "signal_id": "S_INFEED01_RUN_FEEDBACK",
776
+ "asset_id": "INFEED01",
777
+ "role": "run_feedback",
778
+ "quality": "GOOD",
779
+ "valid": true,
780
+ "value": true,
781
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
782
+ },
783
+ {
784
+ "signal_id": "S_INFEED01_FAULT",
785
+ "asset_id": "INFEED01",
786
+ "role": "fault",
787
+ "quality": "GOOD",
788
+ "valid": true,
789
+ "value": false,
790
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
791
+ "active": false
792
+ },
793
+ {
794
+ "signal_id": "S_CV101_RUN_FEEDBACK",
795
+ "asset_id": "CV101",
796
+ "role": "run_feedback",
797
+ "quality": "GOOD",
798
+ "valid": true,
799
+ "value": true,
800
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
801
+ },
802
+ {
803
+ "signal_id": "S_CV101_FAULT",
804
+ "asset_id": "CV101",
805
+ "role": "fault",
806
+ "quality": "GOOD",
807
+ "valid": true,
808
+ "value": false,
809
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
810
+ "active": false
811
+ },
812
+ {
813
+ "signal_id": "S_CV102_RUN_FEEDBACK",
814
+ "asset_id": "CV102",
815
+ "role": "run_feedback",
816
+ "quality": "GOOD",
817
+ "valid": true,
818
+ "value": true,
819
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
820
+ },
821
+ {
822
+ "signal_id": "S_CV102_FAULT",
823
+ "asset_id": "CV102",
824
+ "role": "fault",
825
+ "quality": "GOOD",
826
+ "valid": true,
827
+ "value": false,
828
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
829
+ "active": false
830
+ },
831
+ {
832
+ "signal_id": "S_CV201_RUN_FEEDBACK",
833
+ "asset_id": "CV201",
834
+ "role": "run_feedback",
835
+ "quality": "GOOD",
836
+ "valid": true,
837
+ "value": true,
838
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
839
+ },
840
+ {
841
+ "signal_id": "S_CV201_FAULT",
842
+ "asset_id": "CV201",
843
+ "role": "fault",
844
+ "quality": "GOOD",
845
+ "valid": true,
846
+ "value": false,
847
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
848
+ "active": false
849
+ },
850
+ {
851
+ "signal_id": "S_SORT201_RUN_FEEDBACK",
852
+ "asset_id": "SORT201",
853
+ "role": "run_feedback",
854
+ "quality": "GOOD",
855
+ "valid": true,
856
+ "value": true,
857
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
858
+ },
859
+ {
860
+ "signal_id": "S_SORT201_FAULT",
861
+ "asset_id": "SORT201",
862
+ "role": "fault",
863
+ "quality": "GOOD",
864
+ "valid": true,
865
+ "value": false,
866
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
867
+ "active": false
868
+ },
869
+ {
870
+ "signal_id": "S_CV202_RUN_FEEDBACK",
871
+ "asset_id": "CV202",
872
+ "role": "run_feedback",
873
+ "quality": "GOOD",
874
+ "valid": true,
875
+ "value": true,
876
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
877
+ },
878
+ {
879
+ "signal_id": "S_CV202_FAULT",
880
+ "asset_id": "CV202",
881
+ "role": "fault",
882
+ "quality": "GOOD",
883
+ "valid": true,
884
+ "value": false,
885
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
886
+ "active": false
887
+ },
888
+ {
889
+ "signal_id": "S_CV203_RUN_FEEDBACK",
890
+ "asset_id": "CV203",
891
+ "role": "run_feedback",
892
+ "quality": "GOOD",
893
+ "valid": true,
894
+ "value": true,
895
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
896
+ },
897
+ {
898
+ "signal_id": "S_CV203_FAULT",
899
+ "asset_id": "CV203",
900
+ "role": "fault",
901
+ "quality": "GOOD",
902
+ "valid": true,
903
+ "value": false,
904
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
905
+ "active": false
906
+ },
907
+ {
908
+ "signal_id": "S_CV301_RUN_FEEDBACK",
909
+ "asset_id": "CV301",
910
+ "role": "run_feedback",
911
+ "quality": "GOOD",
912
+ "valid": true,
913
+ "value": true,
914
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
915
+ },
916
+ {
917
+ "signal_id": "S_CV301_FAULT",
918
+ "asset_id": "CV301",
919
+ "role": "fault",
920
+ "quality": "GOOD",
921
+ "valid": true,
922
+ "value": false,
923
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
924
+ "active": false
925
+ },
926
+ {
927
+ "signal_id": "S_CV302_RUN_FEEDBACK",
928
+ "asset_id": "CV302",
929
+ "role": "run_feedback",
930
+ "quality": "GOOD",
931
+ "valid": true,
932
+ "value": true,
933
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
934
+ },
935
+ {
936
+ "signal_id": "S_CV302_FAULT",
937
+ "asset_id": "CV302",
938
+ "role": "fault",
939
+ "quality": "GOOD",
940
+ "valid": true,
941
+ "value": false,
942
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
943
+ "active": false
944
+ },
945
+ {
946
+ "signal_id": "S_CV303_RUN_FEEDBACK",
947
+ "asset_id": "CV303",
948
+ "role": "run_feedback",
949
+ "quality": "GOOD",
950
+ "valid": true,
951
+ "value": true,
952
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
953
+ },
954
+ {
955
+ "signal_id": "S_CV303_FAULT",
956
+ "asset_id": "CV303",
957
+ "role": "fault",
958
+ "quality": "GOOD",
959
+ "valid": true,
960
+ "value": false,
961
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
962
+ "active": false
963
+ },
964
+ {
965
+ "signal_id": "S_PE101_PHOTOEYE_BLOCKED",
966
+ "asset_id": "PE101",
967
+ "role": "photoeye_blocked",
968
+ "quality": "GOOD",
969
+ "valid": true,
970
+ "value": false,
971
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
972
+ "active": false
973
+ },
974
+ {
975
+ "signal_id": "S_PE101_PHOTOEYE_COUNT",
976
+ "asset_id": "PE101",
977
+ "role": "photoeye_count",
978
+ "quality": "GOOD",
979
+ "valid": true,
980
+ "value": 0,
981
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
982
+ },
983
+ {
984
+ "signal_id": "S_PE201_PHOTOEYE_BLOCKED",
985
+ "asset_id": "PE201",
986
+ "role": "photoeye_blocked",
987
+ "quality": "GOOD",
988
+ "valid": true,
989
+ "value": false,
990
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
991
+ "active": false
992
+ },
993
+ {
994
+ "signal_id": "S_PE201_PHOTOEYE_COUNT",
995
+ "asset_id": "PE201",
996
+ "role": "photoeye_count",
997
+ "quality": "GOOD",
998
+ "valid": true,
999
+ "value": 0,
1000
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1001
+ },
1002
+ {
1003
+ "signal_id": "S_PE301_PHOTOEYE_BLOCKED",
1004
+ "asset_id": "PE301",
1005
+ "role": "photoeye_blocked",
1006
+ "quality": "GOOD",
1007
+ "valid": true,
1008
+ "value": false,
1009
+ "source_timestamp": "2026-01-01T12:00:06+00:00",
1010
+ "active": false
1011
+ },
1012
+ {
1013
+ "signal_id": "S_PE301_PHOTOEYE_COUNT",
1014
+ "asset_id": "PE301",
1015
+ "role": "photoeye_count",
1016
+ "quality": "GOOD",
1017
+ "valid": true,
1018
+ "value": 0,
1019
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1020
+ },
1021
+ {
1022
+ "signal_id": "S_DWS01_SCANNER_RESULT",
1023
+ "asset_id": "DWS01",
1024
+ "role": "scanner_result",
1025
+ "quality": "GOOD",
1026
+ "valid": true,
1027
+ "value": "GOOD_READ",
1028
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1029
+ },
1030
+ {
1031
+ "signal_id": "S_DWS01_NO_READ_COUNT",
1032
+ "asset_id": "DWS01",
1033
+ "role": "no_read_count",
1034
+ "quality": "GOOD",
1035
+ "valid": true,
1036
+ "value": 2,
1037
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1038
+ },
1039
+ {
1040
+ "signal_id": "S_SCN201_SCANNER_RESULT",
1041
+ "asset_id": "SCN201",
1042
+ "role": "scanner_result",
1043
+ "quality": "GOOD",
1044
+ "valid": true,
1045
+ "value": "GOOD_READ",
1046
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1047
+ },
1048
+ {
1049
+ "signal_id": "S_SCN201_NO_READ_COUNT",
1050
+ "asset_id": "SCN201",
1051
+ "role": "no_read_count",
1052
+ "quality": "GOOD",
1053
+ "valid": true,
1054
+ "value": 2,
1055
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1056
+ },
1057
+ {
1058
+ "signal_id": "S_VFD101_VFD_FREQUENCY",
1059
+ "asset_id": "VFD101",
1060
+ "role": "vfd_frequency",
1061
+ "quality": "GOOD",
1062
+ "valid": true,
1063
+ "value": 0.0,
1064
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1065
+ },
1066
+ {
1067
+ "signal_id": "S_VFD201_VFD_FREQUENCY",
1068
+ "asset_id": "VFD201",
1069
+ "role": "vfd_frequency",
1070
+ "quality": "GOOD",
1071
+ "valid": true,
1072
+ "value": 0.0,
1073
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1074
+ },
1075
+ {
1076
+ "signal_id": "S_VFD301_VFD_FREQUENCY",
1077
+ "asset_id": "VFD301",
1078
+ "role": "vfd_frequency",
1079
+ "quality": "GOOD",
1080
+ "valid": true,
1081
+ "value": 0.0,
1082
+ "source_timestamp": "2026-01-01T12:00:06+00:00"
1083
+ }
1084
+ ],
1085
+ "metrics": {
1086
+ "equipment_running": {
1087
+ "value": 10,
1088
+ "status": "LAB_REPLAY",
1089
+ "sources": 10
1090
+ },
1091
+ "active_faults": {
1092
+ "value": 0,
1093
+ "status": "LAB_REPLAY",
1094
+ "sources": 10
1095
+ },
1096
+ "photoeyes_blocked": {
1097
+ "value": 0,
1098
+ "status": "LAB_REPLAY",
1099
+ "sources": 3
1100
+ },
1101
+ "total_scans": {
1102
+ "value": null,
1103
+ "status": "NOT_CONFIGURED",
1104
+ "sources": 0
1105
+ },
1106
+ "no_reads": {
1107
+ "value": 4,
1108
+ "status": "LAB_REPLAY",
1109
+ "sources": 2
1110
+ },
1111
+ "delivered": {
1112
+ "value": null,
1113
+ "status": "NOT_CONFIGURED",
1114
+ "sources": 0
1115
+ },
1116
+ "parcels_in_transit": {
1117
+ "value": null,
1118
+ "status": "NOT_CONFIGURED",
1119
+ "sources": 0
1120
+ },
1121
+ "last_scan_result": {
1122
+ "value": "GOOD_READ",
1123
+ "status": "LAB_REPLAY",
1124
+ "sources": 2,
1125
+ "asset_id": "SCN201"
1126
+ },
1127
+ "last_barcode": {
1128
+ "value": null,
1129
+ "status": "NOT_CONFIGURED",
1130
+ "sources": 0
1131
+ },
1132
+ "signal_health": {
1133
+ "value": 33,
1134
+ "total": 33,
1135
+ "status": "LAB_REPLAY"
1136
+ }
1137
+ },
1138
+ "new_events": [
1139
+ {
1140
+ "kind": "CLEARED",
1141
+ "severity": "INFO",
1142
+ "signal_id": "S_INFEED01_FAULT",
1143
+ "asset_id": "INFEED01",
1144
+ "role": "fault",
1145
+ "message": "Condition cleared in replay",
1146
+ "at": "2026-01-01T12:00:06+00:00",
1147
+ "source": "LAB_REPLAY"
1148
+ }
1149
+ ],
1150
+ "active_alarms": [],
1151
+ "quality_issues": []
1152
+ }
1153
+ ],
1154
+ "events": [
1155
+ {
1156
+ "kind": "ASSERTED",
1157
+ "severity": "CRITICAL",
1158
+ "signal_id": "S_INFEED01_FAULT",
1159
+ "asset_id": "INFEED01",
1160
+ "role": "fault",
1161
+ "message": "Equipment fault",
1162
+ "at": "2026-01-01T12:00:03+00:00",
1163
+ "source": "LAB_REPLAY"
1164
+ },
1165
+ {
1166
+ "kind": "CLEARED",
1167
+ "severity": "INFO",
1168
+ "signal_id": "S_INFEED01_FAULT",
1169
+ "asset_id": "INFEED01",
1170
+ "role": "fault",
1171
+ "message": "Condition cleared in replay",
1172
+ "at": "2026-01-01T12:00:06+00:00",
1173
+ "source": "LAB_REPLAY"
1174
+ }
1175
+ ],
1176
+ "evidence": {
1177
+ "mapping_identity": "MATCHED_TO_DECLARED_CONTRACT_ONLY",
1178
+ "opc_source_identity": "NOT_PHYSICALLY_VERIFIED",
1179
+ "studio_trigger_evidence": "NOT_VERIFIED_BY_THIS_REPORT",
1180
+ "ignition_perspective": "NOT_EXECUTED",
1181
+ "plc_physical_mapping": "NOT_VERIFIED",
1182
+ "production": "HOLD",
1183
+ "plc_writes": "DISABLED"
1184
+ },
1185
+ "notification_acknowledgment": "BROWSER_SESSION_VISUAL_ONLY"
1186
+ }