SSMDE – Chemistry / Process Safety (3.4)

Turn lab SOPs into portable “attempt/controlled/forbid” decisions with proof

Problem → Fit

Problem. Labs and plants juggle readings, SOP text, and tribal memory. When incidents occur, people argue what “safe” meant at the time.
Fit. SSMDE attaches bounded stability, plain-language permission bands, a declared manifest, and a verifiable stamp to each state—so “allowed / controlled / forbidden” is explicit and replayable.


Build a bounded safety dial (align) once—use it everywhere

Declare a_raw for the chemistry context (pick one, document in the manifest), then run the invariant pipeline:

a_c   := clamp(a_raw, -1+eps_a, +1-eps_a)
u     := atanh(a_c)
U     += w * u
W     += w
align := tanh( U / max(W, eps_w) )

Collapse parity: phi((m,a)) = m (the raw value stays untouched).

Common a_raw choices (declare exactly one per manifest):

a_raw := -exceed_ratio( pressure_bar / P_safe_max )
a_raw := -exceed_ratio( temperature_K / T_safe_max )
a_raw := margin_to_pivot( (temperature_K - T_pivot) / DeltaT_pivot )
a_raw := feasibility_signal( kinetics_ok, vent_ok, inhibitor_margin )
a_raw := incompatibility_inverse( hazard_pairing_score )   # higher score → lower a_raw

Semantics (must be stated):
positive = within safe envelope, negative = instability or forbidden proximity.


Map align to human-action bands (operational, not decorative)

Declare cutpoints and actions in the manifest:

bands := [
  { name:"GREEN",   range:"[+0.30, +1.00)", action:"allowed under SOP" },
  { name:"AMBER",   range:"[-0.20, +0.30)", action:"controlled: containment protocol only; supervisor review <= 30m" },
  { name:"RED",     range:"(-1.00, -0.20)", action:"forbidden: do not attempt; escalate safety <= 10m" }
]

  • GREEN = proceed normally.
  • AMBER = containment/controlled procedure only.
  • RED = do not attempt (no execution without explicit override protocol).

What a chemistry SSMDE record looks like

Minimal (policy-carrying)

{
  value: { temperature_K: 296.42, pressure_bar: 4.8, solvent: "X17" },
  band:  "AMBER",
  manifest_id: "CHEM_LAB3_PILOT_v9"
}

Full (audit-grade)

{
  value: { temperature_K: 296.42, pressure_bar: 4.8, solvent: "X17" },
  align: -0.24,
  band:  "AMBER",
  manifest_id: "CHEM_LAB3_PILOT_v9",
  stamp: "SSMCLOCK1|2025-11-05T12:26:03Z|sha256=41d7...|prev=2b6f..."
}

How to read it: the numbers are exact, align is bounded stability, band is immediate permission, manifest_id anchors SOP cutpoints, and stamp proves when/sequence.


Producer workflow (instrument → gateway)

[ ] Emit raw value(s) exactly (no “safety rounding”)
[ ] Compute a_raw as declared for this recipe/batch
[ ] Run clamp → atanh → fuse → tanh → align
[ ] Map band via manifest cutpoints and actions
[ ] Attach manifest_id and stamp

Consumer workflow (DCS/LIMS/ELN/safety console)

IF band == "GREEN" → allow SOP step
IF band == "AMBER" → switch to containment protocol; require supervisor sign-off
IF band == "RED"   → hard block; page safety within declared window


Declaring pivots and forbidden zones (make it explicit)

Many hazards are pivot-centric (freeze/boil, runaway, incompatibility). Declare them so others can replay:

pivot := { tag:"runaway_onset",
           variable:"temperature_K",
           T_pivot: 342.0,
           DeltaT_pivot: 3.0,
           c: 1.2 }
a_raw := ( temperature_K - T_pivot ) / DeltaT_pivot   # then go through the invariant pipeline

Optionally combine multiple pivots into one feasibility signal (document the composition rule in the manifest).


Copy-ready examples

Allowed (GREEN)

{
  value: { reactor:"R-12", temperature_K: 304.1, pressure_bar: 2.6 },
  align: +0.44,
  band:  "GREEN",
  manifest_id: "CHEM_RECIPE_A_STAGE2_v4",
  stamp: "SSMCLOCK1|2025-11-05T12:33:44Z|sha256=9ac1...|prev=41d7..."
}

Controlled (AMBER)

{
  value: { reactor:"R-12", temperature_K: 340.9, pressure_bar: 3.9 },
  align: -0.12,
  band:  "AMBER",
  manifest_id: "CHEM_RECIPE_A_STAGE3_v4",
  stamp: "SSMCLOCK1|2025-11-05T12:38:05Z|sha256=3a77...|prev=9ac1..."
}

Forbidden (RED)

{
  value: { reactor:"R-12", temperature_K: 346.2, pressure_bar: 5.1 },
  align: -0.53,
  band:  "RED",
  manifest_id: "CHEM_RECIPE_A_STAGE3_v4",
  stamp: "SSMCLOCK1|2025-11-05T12:39:17Z|sha256=b012...|prev=3a77..."
}


Verification checklist (receiver)

[ ] -1 < align < +1
[ ] band == band_from_align(align, manifest_id)
[ ] stamp.sha256 matches canonical bytes; chain(prev) verifies
[ ] phi((m,a)) = m    # value untouched
[ ] a_raw choice and semantics match manifest


One-line takeaway

SSMDE converts chemistry states into clear permission language with timelines—attempt, controlled, or forbid—backed by bounded math, declared policy, and stamped proof.


Navigation

Previous: SSMDE – Industrial / Hardware Health (3.3)
Next: SSMDE – How align Is Computed (4.0–4.7)


Directory of Pages
SSMDE – Table of Contents