def METHOD_NAME(specs: Dict[str, Any], OS: Any):
    """Check input specification against an optical system object
    Args:
        specs (str or dict):
            Either full path to JSON script or an :ref:`sec:inputspec` dict
        OS (:ref:`OpticalSystem`):
            OpticalSystem object
    Returns:
        str:
            Description of what's wrong with the input (blank if its all good).
    """
    out = ""
    if "scienceInstruments" in specs:
        for inst in specs["scienceInstruments"]:
            extra_keys = list(set(inst.keys()) - set(OS.allowed_scienceInstrument_kws))
            if len(extra_keys) > 0:
                out += (
                    f"Unknown key(s): {', '.join(extra_keys)} for "
                    f"science instrument {inst['name']}\n"
                )
    if "starlightSuppressionSystems" in specs:
        for syst in specs["starlightSuppressionSystems"]:
            extra_keys = list(
                set(syst.keys()) - set(OS.allowed_starlightSuppressionSystem_kws)
            )
            if len(extra_keys) > 0:
                out += (
                    f"Unknown key(s): {', '.join(extra_keys)} for "
                    f"system {syst['name']}\n"
                )
            if ("core_mean_intensity" in syst) and ("core_platescale" not in syst):
                out += (
                    f"core_mean_intensity requires core_platescale to be set in "
                    f"system {syst['name']}\n"
                )
    if "observingModes" in specs:
        for nmode, mode in enumerate(specs["observingModes"]):
            extra_keys = list(set(mode.keys()) - set(OS.allowed_observingMode_kws))
            if "description" in extra_keys:
                extra_keys.remove("description")
            if len(extra_keys) > 0:
                out += (
                    f"Unknown key(s): {', '.join(extra_keys)} for "
                    f"observing mode #{nmode}\n"
                )
    return out