Spaxiom Logo
Spaxiom Use Case - Appendix A.1

Cleanroom & Biotech Contamination Control

Using Spaxiom for Real-Time Contamination Risk Monitoring

Joe Scanlin

November 2025

About Spaxiom & INTENT

Spaxiom is a sensor abstraction layer and runtime that translates billions of heterogeneous sensor streams into structured, semantic events. It provides a spatial-temporal DSL for defining zones, entities, and conditions, making it easy to build context-aware applications across industries.

INTENT (Intelligent Network for Temporal & Embodied Neuro-symbolic Tasks) is Spaxiom's high-level event vocabulary. Instead of overwhelming AI agents with raw sensor data, Spaxiom emits compact, meaningful events that agents can immediately understand and act upon.

TL;DR

Cleanrooms in semiconductor fabs and biotech facilities need to maintain ultra-clean environments. Today, contamination control relies on individual sensor alarms and manual procedures, making it hard to spot patterns or predict problems before they cause expensive batch failures. The challenge is that particle counters, pressure sensors, door locks, and occupancy trackers all output data in different formats that don't speak to each other, and none of it is structured for AI agents to interpret and act on.

Spaxiom connects all the cleanroom sensors (particle counters, pressure monitors, door locks, occupancy trackers) into one intelligent system that understands the spatial relationships between rooms and can detect complex contamination patterns. Instead of overwhelming operators with hundreds of sensor readings, it translates everything into simple, actionable alerts like "airlock violation in progress" or "contamination risk rising in Room 3." This helps facilities prevent contamination events before they happen and quickly identify root causes when issues do occur.

A.1 Cleanroom & Biotech Contamination Control

High-grade semiconductor fabs, biopharma facilities, and advanced manufacturing lines rely on strict control of particulate contamination, pressure cascades, and controlled access. Today, contamination control is typically enforced by:

What is often missing is a spatially and temporally coherent language for:

Spaxiom can act as a cleanroom contamination cortex: fusing particle counts, pressure differentials, door states, and occupancy into structured INTENT events that agents and engineers can reason about.

Sensors and deployment

Typical cleanroom-relevant sensors include:

Spaxiom represents each zone as a Zone with associated sensor objects and topological relationships (e.g., which rooms feed which in the pressure cascade).

INTENT events and contamination indices

From raw signals, we define higher-level INTENT events, such as:

Mathematically, for a given zone z and monitoring window [t0, t1] we can define:

Pressure breach indicator. Let ΔPz,u(t) be the measured pressure differential between z and upstream zone u (e.g., corridor or anteroom). For a minimum acceptable differential ΔPmin > 0, define

Ibreachz,u(t) = { 1 if ΔPz,u(t) < ΔPmin, 0 otherwise }

The total number of breach-seconds in the window is:

Bz,u = ∫t0t1 Ibreachz,u(t) dt

Particle excursion integral. Let pz(t) be the particle count for zone z, with a threshold pmaxz that defines acceptable class performance. Define the (non-negative) excursion:

Ez = ∫t0t1 max(0, pz(t) - pmaxz) dt

Airlock violation count. Let Va be the count of airlock a violations in the window, derived from door state sequences and configured policies (e.g., both doors open simultaneously, insufficient purge dwell).

Composite contamination risk index. We can define a simple contamination risk index (CRI) for zone z over [t0, t1] as:

CRIz = α·ΣuBz,u + β·Ez + γ·Σa∈𝒜(z)Va

where α, β, γ are tunable weights reflecting domain expertise, and 𝒜(z) is the set of airlocks affecting z. This can be normalized by window length or baseline values to obtain a dimensionless score in [0, 1].

Spaxiom-style implementation sketch

A sketch of how a Spaxiom-based contamination monitor might look in Python-embedded DSL form:

from spaxiom import Zone, Condition, Quantity
from spaxiom.temporal import within
from spaxiom.logic import on

class CleanroomZone:
    def __init__(self, name, particle_sensor, dp_sensors, airlocks):
        self.zone = Zone.named(name)
        self.particle_sensor = particle_sensor  # e.g. counts / m^3
        self.dp_sensors = dp_sensors            # dict: upstream_zone -> sensor
        self.airlocks = airlocks                # list of Airlock objects

        # Configurable thresholds
        self.max_particles = 3500        # domain-specific
        self.min_dp = Quantity(5.0, "Pa")

    def pressure_breach_seconds(self, window_s: float) -> float:
        total = 0.0
        for upstream, sensor in self.dp_sensors.items():
            # integrate indicator over the window
            series = sensor.history(window_s=window_s)
            for dt, value in series:  # dt in seconds, value in Pa
                if value < self.min_dp:
                    total += dt
        return total

    def particle_excursion(self, window_s: float) -> float:
        # approximate integral of (p - p_max)+ over the window
        total = 0.0
        series = self.particle_sensor.history(window_s=window_s)
        for dt, value in series:
            excess = max(0.0, value - self.max_particles)
            total += excess * dt
        return total

    def airlock_violations(self, window_s: float) -> int:
        return sum(a.violation_count(window_s=window_s)
                   for a in self.airlocks)

    def contamination_risk_index(self, window_s: float) -> float:
        B = self.pressure_breach_seconds(window_s)
        E = self.particle_excursion(window_s)
        V = self.airlock_violations(window_s)

        alpha, beta, gamma = 1e-3, 1e-6, 1.0  # example scaling
        score = alpha * B + beta * E + gamma * V
        # Optionally squash to [0,1] via logistic
        return 1.0 - (1.0 / (1.0 + score))

# Example zone wiring
zone_a = CleanroomZone(
    name="ISO7_bio_room_3",
    particle_sensor=particles_z3,
    dp_sensors={"antechamber": dp_z3_ante, "corridor": dp_z3_corr},
    airlocks=[airlock_3A, airlock_3B],
)

# Condition that fires when CRI exceeds a threshold in the last hour
high_risk = Condition(
    lambda: zone_a.contamination_risk_index(window_s=3600) > 0.7
)

@on(within(3600, high_risk))
def contamination_agent():
    snapshot = {
        "zone": zone_a.zone.name,
        "CRI": zone_a.contamination_risk_index(window_s=3600),
        "breach_seconds": zone_a.pressure_breach_seconds(3600),
        "particle_excursion": zone_a.particle_excursion(3600),
        "airlock_violations": zone_a.airlock_violations(3600),
    }
    # Hand off to LLM agent or workflow system:
    # e.g., propose root-cause checks, quarantine, or extra cleaning.
    recommend_actions(snapshot)

Here the Spaxiom layer:

Cleanroom Contamination Risk Timeline (One Shift)
Particle Count (×1000/m³)
Pressure Differential (Pa)
Contamination Risk Index (CRI)
1.0 0.75 0.5 0.25 0 0h 1h 2h 3h 4h 5h 6h Alert ⚠ Airlock Violation High risk period →

Figure A.1: Cleanroom contamination risk timeline over one shift. Three normalized metrics are overlaid: particle counts (red) vs threshold, pressure differential (blue) vs minimum spec, and computed contamination risk index CRIz (purple). The shaded region indicates when CRI exceeds the alert threshold. An airlock violation event at ~2h coincides with particle excursion and elevated risk.