Saxonberg Server API
    Preparing search index...

    Variable LIGHT_BANDSConst

    LIGHT_BANDS: readonly [
        "pitch-black",
        "very-dim",
        "dim",
        "lit",
        "bright",
        "blinding",
    ] = ...

    Bands for the bandFor lookup. Crossing-the-band boundaries is the granularity controllers and prose check against — most code never touches the raw illuminance number.

    Single source of truth for the lux band vocabulary in TypeScript: the as const tuple drives the LightBand type union, the runtime membership check in bandFor (below), and pairs with the lux tag-table thresholds authored in mud/config/quantity-tags.yaml. bandFor enforces drift between the YAML and this tuple at runtime.

    bandFor, applyBandShift, and compareBand live next to the LightBand vocabulary — they're vision-modality domain. The propagation walk that produces a Light value lives in lib/perception/modalities/VisionModality.ts as the modality's signalAt; outside consumers dispatch via PerceptionApi.signalAt(loc, VisionModality).