def run_config_diagnostics(config_path=CONFIG_PATH):
config = read_config(config_path)<EOL>missing_sections = set()<EOL>malformed_entries = defaultdict(set)<EOL>for section, expected_section_keys in SECTION_KEYS.items():<EOL><INDENT>section_content = config.get(section)<EOL>if not section_content:<EOL><INDENT>missing_sections.add(section)<EOL><DEDENT>else:<EOL><INDENT>for option in expected_section_keys:<EOL><INDENT>option_value = section_content.get(option)<EOL>if not option_value:<EOL><INDENT>malformed_entries[section].add(option)<EOL><DEDENT><DEDENT><DEDENT><DEDENT>return config_path, missing_sections, malformed_entries<EOL>
Run diagnostics on the configuration file.

    Args:
        config_path (str): Path to the configuration file.
    Returns:
        str, Set[str], dict(str, Set[str]): The path to the configuration file, a set of missing
        sections and a dict that maps each section to the entries that have either missing or empty
        options.