andre482_O-tie/examples/cold-storage-ammonia.bowtie
Andre482 8a376a87a8 Release 1.0.8: Pan from anywhere on touch, keyboard selection, and quality audit.
- Single-finger touch panning now works even when starting on a node; a tap still selects.

- Add keyboard node selection (Tab/Enter/Space/Escape) and validated settings input.

- Guard against overwriting malformed .bowtie files; show a notice and keep original data.

- Add Vitest tests (model/layout/panZoom) and a GitHub Actions CI workflow.

- Split bowtieView into history/panZoom/stackRows/externalSync modules; refresh README, examples, and contributor docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 19:26:42 +03:00

550 lines
16 KiB
Text

{
"id": "bowtie-0",
"name": "Cold storage ammonia refrigeration",
"events": [
{
"id": "event-1",
"label": "Loss of primary containment from ammonia refrigeration circuit",
"hazard": "Pressurised anhydrous ammonia (NH3) refrigeration inventory",
"transitionBarriers": []
}
],
"threats": [
{
"id": "threat-2",
"label": "Corrosion or fatigue of piping, vessels, or evaporator coils",
"preventionBarriers": [
{
"id": "barrier-3",
"label": "Mechanical integrity inspection program",
"degradationChains": [
{
"id": "chain-10",
"safeguards": [
{
"id": "safeguard-11",
"label": "QA audit of mechanical integrity backlog"
}
],
"degradationFactor": {
"id": "degradation-12",
"label": "Deferred inspection due to production pressure"
}
}
],
"stack": [
{
"id": "stack-4",
"field": "type",
"label": "Active Hardware",
"color": "#48c9b0"
},
{
"id": "stack-5",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-6",
"field": "criticality",
"label": "Very High",
"color": "#2c3e50"
},
{
"id": "stack-7",
"field": "responsible",
"label": "Tech Department",
"color": "#ffffff"
},
{
"id": "stack-8",
"field": "validation",
"label": "Inspection",
"color": "#ffffff"
},
{
"id": "stack-9",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": false,
"notes": "NDT, thickness monitoring, and replacement intervals per IIAR-6 / company standards."
},
{
"id": "barrier-13",
"label": "Materials of construction and corrosion allowance",
"degradationChains": [],
"stack": [
{
"id": "stack-14",
"field": "type",
"label": "Passive Hardware",
"color": "#7f8c8d"
},
{
"id": "stack-15",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-16",
"field": "criticality",
"label": "High",
"color": "#566573"
},
{
"id": "stack-17",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "Compatible metallurgy, coatings, and design margin for operating conditions."
}
],
"notes": "Credible in aged plant with cyclic thermal loading, condensate, or corrosion under insulation."
},
{
"id": "threat-18",
"label": "Forklift or vehicle impact on exposed ammonia piping",
"preventionBarriers": [
{
"id": "barrier-19",
"label": "Physical protection and traffic segregation",
"degradationChains": [
{
"id": "chain-24",
"safeguards": [
{
"id": "safeguard-25",
"label": "Supervisor housekeeping and barrier inspection rounds"
}
],
"degradationFactor": {
"id": "degradation-26",
"label": "Bollards removed or bypassed for convenience"
}
}
],
"stack": [
{
"id": "stack-20",
"field": "type",
"label": "Passive Hardware",
"color": "#7f8c8d"
},
{
"id": "stack-21",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-22",
"field": "criticality",
"label": "High",
"color": "#566573"
},
{
"id": "stack-23",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "Bollards, rack guards, marked routes, and restricted machine-room access."
}
],
"notes": "Common in warehouse aisles adjacent to machine rooms or overhead pipe runs."
},
{
"id": "threat-27",
"label": "Overpressure in low-side or high-side refrigeration circuit",
"preventionBarriers": [
{
"id": "barrier-28",
"label": "Pressure relief devices and high-pressure interlocks",
"degradationChains": [
{
"id": "chain-33",
"safeguards": [
{
"id": "safeguard-34",
"label": "PSV inspection and register management program"
}
],
"degradationFactor": {
"id": "degradation-35",
"label": "Relief device isolated, blocked, or inspection overdue"
}
}
],
"stack": [
{
"id": "stack-29",
"field": "type",
"label": "Active Hardware",
"color": "#48c9b0"
},
{
"id": "stack-30",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-31",
"field": "criticality",
"label": "Very High",
"color": "#2c3e50"
},
{
"id": "stack-32",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "PSVs discharge to a safe location; alarm and trip on abnormal pressure."
}
]
},
{
"id": "threat-36",
"label": "Maintenance isolation or re-commissioning error",
"preventionBarriers": [
{
"id": "barrier-37",
"label": "Permit-to-work and LOTO procedures",
"degradationChains": [
{
"id": "chain-42",
"safeguards": [
{
"id": "safeguard-43",
"label": "Competency assessment and authorization records"
}
],
"degradationFactor": {
"id": "degradation-44",
"label": "Technician competency not verified for ammonia work"
}
}
],
"stack": [
{
"id": "stack-38",
"field": "type",
"label": "Active Human",
"color": "#5dade2"
},
{
"id": "stack-39",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-40",
"field": "criticality",
"label": "Very High",
"color": "#2c3e50"
},
{
"id": "stack-41",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "Verified isolation, zero-energy confirmation, and ammonia-specific competency."
}
]
},
{
"id": "threat-45",
"label": "Operator error during startup, shutdown, or abnormal operation",
"preventionBarriers": [
{
"id": "barrier-46",
"label": "Operating procedures and abnormal situation guidance",
"degradationChains": [],
"stack": [
{
"id": "stack-47",
"field": "type",
"label": "Active Human",
"color": "#5dade2"
},
{
"id": "stack-48",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-49",
"field": "criticality",
"label": "High",
"color": "#566573"
},
{
"id": "stack-50",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "Written procedures for charge management, alarms, and emergency slowdown."
},
{
"id": "barrier-51",
"label": "Operator training and competency assurance",
"degradationChains": [],
"stack": [
{
"id": "stack-52",
"field": "type",
"label": "Active Human",
"color": "#5dade2"
},
{
"id": "stack-53",
"field": "effectiveness",
"label": "Fair",
"color": "#f1c40f"
},
{
"id": "stack-54",
"field": "criticality",
"label": "Medium",
"color": "#7f8c8d"
},
{
"id": "stack-55",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "Refresher training on ammonia properties, alarms, and first actions."
}
]
}
],
"consequences": [
{
"id": "consequence-56",
"label": "Personnel harm due to toxic ammonia exposure",
"mitigationBarriers": [
{
"id": "barrier-57",
"label": "Fixed ammonia gas detection and alarm",
"degradationChains": [
{
"id": "chain-64",
"safeguards": [
{
"id": "safeguard-65",
"label": "Calibration management and functional test program"
}
],
"degradationFactor": {
"id": "degradation-66",
"label": "Sensor calibration overdue or drift"
}
}
],
"stack": [
{
"id": "stack-58",
"field": "type",
"label": "Active Hardware",
"color": "#48c9b0"
},
{
"id": "stack-59",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-60",
"field": "criticality",
"label": "Very High",
"color": "#2c3e50"
},
{
"id": "stack-61",
"field": "responsible",
"label": "HSE Department",
"color": "#ffffff"
},
{
"id": "stack-62",
"field": "validation",
"label": "Barrier Test",
"color": "#ffffff"
},
{
"id": "stack-63",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": false,
"notes": "Audible/visual alarm, with potential automatic isolation or ventilation actuation."
},
{
"id": "barrier-67",
"label": "Emergency ventilation and isolation valves",
"degradationChains": [],
"stack": [
{
"id": "stack-68",
"field": "type",
"label": "Active Hardware",
"color": "#48c9b0"
},
{
"id": "stack-69",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-70",
"field": "criticality",
"label": "Very High",
"color": "#2c3e50"
},
{
"id": "stack-71",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "Reduce airborne concentration; close isolation valves where safe to do so."
}
]
},
{
"id": "consequence-72",
"label": "Environmental damage due to ammonia release",
"mitigationBarriers": [
{
"id": "barrier-73",
"label": "Containment sump and emergency dilution / knock-down",
"degradationChains": [],
"stack": [
{
"id": "stack-74",
"field": "type",
"label": "Passive Hardware",
"color": "#7f8c8d"
},
{
"id": "stack-75",
"field": "effectiveness",
"label": "Fair",
"color": "#f1c40f"
},
{
"id": "stack-76",
"field": "criticality",
"label": "High",
"color": "#566573"
},
{
"id": "stack-77",
"field": "status",
"label": "Degraded",
"color": "#f39c12"
}
],
"stackCollapsed": true,
"notes": "Limit spread to drains, waterways, or off-site receptors."
}
]
},
{
"id": "consequence-78",
"label": "Operational loss due to cold-chain interruption",
"mitigationBarriers": [
{
"id": "barrier-79",
"label": "Emergency response plan and qualified contractor standby",
"degradationChains": [
{
"id": "chain-85",
"safeguards": [
{
"id": "safeguard-86",
"label": "Pre-qualified contractor agreement and annual drill"
}
],
"degradationFactor": {
"id": "degradation-87",
"label": "Contractor availability or response time not assured"
}
}
],
"stack": [
{
"id": "stack-80",
"field": "type",
"label": "Active Human",
"color": "#5dade2"
},
{
"id": "stack-81",
"field": "effectiveness",
"label": "Good",
"color": "#27ae60"
},
{
"id": "stack-82",
"field": "criticality",
"label": "High",
"color": "#566573"
},
{
"id": "stack-83",
"field": "responsible",
"label": "Management",
"color": "#ffffff"
},
{
"id": "stack-84",
"field": "status",
"label": "Available",
"color": "#1e8449"
}
],
"stackCollapsed": true,
"notes": "Ammonia-qualified emergency repair and product salvage / transfer plan."
}
]
}
],
"view": {
"zoom": 1,
"panX": 0,
"panY": 0
},
"createdAt": "2026-06-12T00:00:00.000Z",
"updatedAt": "2026-06-12T00:00:00.000Z"
}