Skip to content

symfonic.agent.configuration.injected_orchestrator

injected_orchestrator

Diagnostics for configuration supplied alongside an injected orchestrator.

warn_if_disagreement

warn_if_disagreement(config: FrameworkConfig, orchestrator: Any, logger: Any) -> None

Log an explicit selector conflict with the injected config snapshot.

Source code in src/symfonic/agent/configuration/injected_orchestrator.py
def warn_if_disagreement(
    config: FrameworkConfig, orchestrator: Any, logger: Any,
) -> None:
    """Log an explicit selector conflict with the injected config snapshot."""
    if "enabled_layers" not in config.model_fields_set:
        return
    injected = getattr(getattr(orchestrator, "config", None), "enabled_layers", None)
    if not isinstance(injected, (set, frozenset, tuple, list)):
        return
    framework_names = frozenset(config.enabled_layers)
    injected_names = frozenset(getattr(layer, "value", layer) for layer in injected)
    if framework_names == injected_names:
        return
    logger.warning(
        "FrameworkConfig.enabled_layers=%s disagrees with injected "
        "orchestrator.config.enabled_layers snapshot=%s; "
        "the supplied orchestrator is retained unchanged. Check its "
        "retrieval engine policy for the effective layer selector.",
        sorted(framework_names),
        sorted(injected_names),
    )