Application Overview
What the Isolation & Permit to Work app models, and the ideas behind it
Core Operating Chain
WorkRequest
→ IsolationRequest (class: PERSONAL / GROUP / OPERATIONAL / COMPLEX / TEST_EMERGENCY)
→ EnergySource (per asset: electrical, mechanical, gravitational, hydraulic…)
→ IsolationPoint (method + verification method + sequence)
→ IsolationStep (apply → lock/tag → dissipate → verify)
→ LockApplication (personal / group master / equipment locks + tags)
→ IsolationVerification (zero-energy proof, independent where required)
→ GroupIsolationBoard → BoardParticipant (one personal lock per worker)
→ Permit → PermitControl / PermitWorker / WorkExecution / PermitHandover
→ TestRelease (temporary, named points, then reapply + reverify)
→ RestorationChecklist (blocked until permits closed and locks removed)
IsolationEvent / AuditFinding → CorrectiveAction
Key Concepts
The isolation record is the controlling safety record. Twenty-three
relationships hang off IsolationRequest. A work order or a permit cannot
independently release plant — the permit references the isolation, not the
other way around, and restoration is gated on the isolation's own checklist.
Energy is enumerated before it is isolated. An asset's EnergySource rows
are the hazard inventory: type, normal magnitude, whether stored energy is
possible, and critically whether it can re-accumulate. Each source resolves
to one or more IsolationPoint records carrying the isolation method
(rack out, blank/blind, double block and bleed, lower to ground…) and the
verification method (test for dead, try start, gauge zero, earth applied…).
Missing an energy source is the failure mode the model is built to prevent.
Isolation is a sequence, not a state. IsolationStep records the whole
life of one point in order: applied → dissipated → verified → (test released) →
restored, each with its own person and timestamp, plus a separate
restoration_sequence so plant is restored in a deliberate order rather than
the reverse of however it was applied.
Verification is evidence, and it can fail. IsolationVerification records
the method, the instrument and its calibration due date, the observed value,
and an outcome of PASS / FAIL / NOT_POSSIBLE / NOT_REQUIRED. A FAIL is a
first-class record — it holds the isolation and marks the step EXCEPTION
rather than being quietly overwritten.
Personal locks belong to people. A Lock of type PERSONAL has an owner,
and a BoardParticipant row ties one worker to one personal lock on one group
board, with an explicit acknowledgement of the boundary and scope. Removing
someone else's lock requires forced_removal = true plus a linked
Approval — the demo data carries the dual-approval case.
Testing is a declared state, not a bypass. TestRelease names the exact
isolation steps being released, requires a test authority and an approver,
requires persons-clear confirmation and temporary controls, and is not complete
until reverification_completed is set after the points are reapplied.
Restoration is blocked, not assumed. RestorationChecklist is a set of
explicit confirmations — work complete, permits closed, all persons signed off,
all personal locks removed, guards restored, tools removed, persons
notified, area inspected — before an area owner authorises return to service.
Approved safety evidence is immutable. Attachment carries an immutable
flag and a sha256; corrections are made by superseding records rather than
destructive edits, which is why approvals, verifications and lock applications
are all separate append-only tables rather than fields on the isolation.