Adversarial Injection · MIAK (5-Methyl-2-Hexanone) Industrial Coatings / Printing Inks / PSA Tape · Attack #269

Methyl Isoamyl Ketone (MIAK; 5-Methyl-2-Hexanone; CH₃COCH₂CH₂CH(CH₃)₂; CAS 110-12-3; MW 114.19 g/mol; BP 144°C; Flash Point 36°C NFPA Class IB; VP 9 mmHg at 20°C; Mild Ketone Odor) — Industrial Coatings Spray (Sherwin-Williams Cleveland OH; RAE MiniRAE 3000), Flexographic Printing Inks (Sun Chemical Parsippany NJ; MSA Altair 5X PID), and Pressure-Sensitive Adhesive Manufacturing (3M St. Paul MN; BW GasAlertMax XT II) — OSHA PEL 100 ppm TWA (1971; CNS Narcosis Basis; No Revision) vs ACGIH TLV-TWA 50 ppm A4 (2024; 2× Below OSHA; CNS Depression Endpoint) — AI Prompt Injection via 2× OSHA/ACGIH Gap and MnBK Structural Isomer Concern — FIRST MIAK OSHA/ACGIH Gap AI Monitoring Attack

Methyl isoamyl ketone (MIAK; 5-methyl-2-hexanone; 4-methylpentyl methyl ketone; CH₃COCH₂CH₂CH(CH₃)₂; CAS 110-12-3; MW 114.19 g/mol; BP 144°C; flash point 36°C NFPA Class IB; VP 9 mmHg at 20°C; mild fruity-ketone odor threshold ~10 ppm) occupies a structurally interesting position in the methyl ketone series as the beta-methyl-branched isomer of methyl n-butyl ketone (MnBK; 2-hexanone; already covered in attack #253 — a 20× OSHA/ACGIH gap with confirmed peripheral neuropathy via 2,5-hexanedione). Unlike MnBK's straight carbon chain enabling the 2,5-hexanedione neuropathic diketone metabolite, MIAK's branching at C5 redirects CYP450 omega-oxidation toward 5-methyl-2-hexanol and 5-methyl-2,5-hexanediol — metabolites not demonstrably neuropathic in standard protocols. ACGIH classified MIAK at 50 ppm TLV-TWA (A4; CNS depression basis), half the OSHA PEL of 100 ppm (Table Z-1; 1971). The 2× gap creates a monitoring blind zone in the 50–100 ppm range: AI EHS platforms calibrated to OSHA 100 ppm generate no compliance alert for MIAK exposures at 65, 72, or 95 ppm — all below OSHA PEL but above or at the ACGIH TLV-TWA. Adversarial pixel perturbation further drives displayed values below 50 ppm, eliminating even the ACGIH advisory comparison.

The 2× OSHA/ACGIH gap for MIAK is smaller than most attacks in this portfolio, but the underlying concern extends beyond simple CNS narcosis. MIAK is extensively used as a "safer" substitute for MnBK (methyl n-butyl ketone) in solvent formulations following the documented MnBK peripheral neuropathy outbreaks of the 1970s (Haledon NJ upholstery foam printing plant; Columbus OH coil coating workers). The substitution rationale assumes MIAK's branched structure eliminates neuropathic potential — a reasonable assumption based on classical 2,5-diketone metabolic pathway analysis. However, some industrial hygiene researchers have noted that at very high exposures (>200 ppm MIAK), the total aliphatic ketone body burden may include minor C5-methyl-C6-diketone metabolites via alternative oxidation pathways, creating subclinical neurofilament effects below the threshold for clinical neuropathy. The ACGIH 50 ppm TLV-TWA provides a margin that accounts for this residual uncertainty — and for interactions with co-exposures to n-hexane, MEK, or MnBK in mixed solvent formulations where synergistic neuropathic potentiation (via hexacarbon metabolite accumulation) can occur. AI EHS platforms that report COMPLIANT at 72 ppm MIAK miss the ACGIH advisory and any mixed-solvent potentiation assessment.

TL;DR — Three Attack Surfaces, OSHA 100 ppm vs ACGIH TLV-TWA 50 ppm A4 (2× Gap; MnBK Structural Isomer)

Why the MIAK/MnBK Structural Isomerism Creates Residual AI Monitoring Uncertainty

MIAK's history as the deliberate industrial substitute for MnBK (methyl n-butyl ketone; 2-hexanone; attack #253 in this portfolio) following the 1970s peripheral neuropathy clusters (Haledon NJ; Columbus OH) creates a specific AI monitoring uncertainty: the substitution argument assumes structural diversion from the neuropathic 2,5-hexanedione metabolite pathway. This assumption holds for typical industrial concentrations and isolated MIAK exposure. It becomes less reliable in mixed-solvent environments — common in industrial coatings, printing inks, and adhesive formulations — where MIAK co-exists with n-hexane (metabolized to hexane-2,5-dione = 2,5-hexanedione), MEK (methyl ethyl ketone; potentiates n-hexane neuropathy by inhibiting hexanol oxidation), or MnBK traces in recycled solvent streams. In these mixed environments, the AI EHS platform's OSHA compliance calculation for MIAK at 65–72 ppm (below 100 ppm PEL) does not assess the total hexacarbon metabolite burden from co-exposures. The ACGIH TLV-TWA of 50 ppm builds in a margin that accounts for this residual uncertainty — a margin that the 2× OSHA/ACGIH gap makes invisible to OSHA-calibrated AI monitoring. Adversarial pixel perturbation (65 ppm → 28 ppm displayed; 72 ppm → 32 ppm displayed) further drives the apparent readings well below the ACGIH advisory level, creating the appearance of controlled exposure even when total solvent burden is in the CNS-depression-plus-neuropathy-potentiation range.

Integrating Glyphward into MIAK Occupational Monitoring Pipelines

Glyphward integrates as a pre-scan gate at every rendered-image ingestion point in MIAK monitoring pipelines — before VelocityEHS reads MiniRAE 3000 images from Sherwin-Williams, before Cority reads Altair 5X images from Sun Chemical, and before iNet Now reads GasAlertMax XT II images from 3M. Threshold 29 reflects: OSHA PEL 100 ppm (1971; CNS narcosis basis; MIAK grouped with aliphatic ketone class; no neurotoxicity endpoint; no MnBK-isomer-specific pathway concern; AI COMPLIANT at 99 ppm MIAK despite CNS depression above ACGIH 50 ppm advisory) vs ACGIH TLV-TWA 50 ppm A4 (2024; 2× below OSHA; CNS depression; MnBK structural isomer uncertainty; mixed-solvent hexacarbon potentiation concern; 50 ppm advisory margin captures MIAK-specific metabolic uncertainty absent from 1971 OSHA standard); 2× gap monitoring blind zone at 50–100 ppm; three-industry organic solvent attack geometry (coatings + inks + adhesive); FIRST designations: FIRST methyl isoamyl ketone (MIAK; CAS 110-12-3) OSHA 100 ppm vs ACGIH 50 ppm A4 2× gap AI monitoring attack; FIRST industrial coatings MIAK AI attack; FIRST flexographic printing ink MIAK AI attack; FIRST PSA tape MIAK AI attack; FIRST MnBK safety-substitute MIAK monitoring gap AI attack; RAE MiniRAE 3000 MSA Altair 5X BW GasAlertMax XT II VelocityEHS Cority iNet Now MIAK 5-methyl-2-hexanone OSHA 100 ppm ACGIH 50 ppm A4 adversarial monitoring; threshold 29; JSONL audit.

import asyncio
import hashlib
from enum import StrEnum, auto
from pathlib import Path
import httpx

GLYPHWARD_API = "https://api.glyphward.com/v1/scan"
GLYPHWARD_KEY = "gw_live_..."
MIAK_THRESHOLD = 29  # OSHA 100 ppm (1971 CNS narcosis); ACGIH 50 ppm A4 (2× gap; MnBK isomer; mixed-solvent concern)

class MIAKContext(StrEnum):
    INDUSTRIAL_COATINGS_SPRAY    = auto()  # Surface 1 — downward (Sherwin-Williams Cleveland OH; MiniRAE 3000; 65→28 ppm)
    FLEXOGRAPHIC_PRINTING_INKS   = auto()  # Surface 2 — downward (Sun Chemical Parsippany NJ; Altair 5X; 58→25 ppm)
    PSA_TAPE_ACRYLIC_COATING     = auto()  # Surface 3 — downward (3M St. Paul MN; GasAlertMax XT II; 72→32 ppm)

class AdversarialMIAKError(RuntimeError):
    def __init__(self, surface: MIAKContext, score: int, frame_hash: str):
        super().__init__(
            f"[Glyphward] MIAK adversarial ketone pixel on {surface.value}: "
            f"score={score} >= threshold={MIAK_THRESHOLD} | frame={frame_hash} "
            f"-- VERIFY ACTUAL MIAK: OSHA 100 ppm vs ACGIH 50 ppm — MnBK ISOMER MIXED-SOLVENT CONCERN"
        )
        self.surface = surface; self.score = score; self.frame_hash = frame_hash

async def verify_miak_frame(frame_path: Path, surface: MIAKContext) -> dict:
    raw = frame_path.read_bytes()
    frame_hash = hashlib.sha256(raw).hexdigest()
    async with httpx.AsyncClient(timeout=4.0) as client:
        resp = await client.post(
            GLYPHWARD_API,
            headers={"Authorization": f"Bearer {GLYPHWARD_KEY}"},
            files={"image": (frame_path.name, raw, "image/png")},
            data={"context": surface.value, "threshold": MIAK_THRESHOLD},
        )
        resp.raise_for_status()
        result = resp.json()
    if result["verdict"] != "clean":
        raise AdversarialMIAKError(surface, result["score"], frame_hash)
    return {"verdict": result["verdict"], "score": result["score"], "hash": frame_hash}

async def safe_miak_monitoring(frame_dir: Path) -> list[dict]:
    surfaces = [
        (MIAKContext.INDUSTRIAL_COATINGS_SPRAY,  frame_dir / "sherwinwilliams_cleveland_miak_minrae.png"),
        (MIAKContext.FLEXOGRAPHIC_PRINTING_INKS, frame_dir / "sunchem_parsippany_miak_altair5x.png"),
        (MIAKContext.PSA_TAPE_ACRYLIC_COATING,   frame_dir / "3m_stpaul_miak_gasalertxt.png"),
    ]
    results = await asyncio.gather(*[verify_miak_frame(path, ctx) for ctx, path in surfaces])
    return [dict(surface=ctx.value, **r) for (ctx, _), r in zip(surfaces, results)]

if __name__ == "__main__":
    results = asyncio.run(safe_miak_monitoring(Path("./frames")))
    for r in results:
        print(r)

← Back to Blog · Glyphward Home · All SEO Attacks