Skip to content

symfonic.capabilities.tools.stages.allowlist

allowlist

Allowlist stage — operator-mandated tools survive every narrowing.

FrameworkConfig.always_include_tools used to be applied inside the intent narrower, which meant it protected tools from that lever only. As a stage it runs wherever the pipeline places it, and the composition order states plainly which levers it outranks.

AllowlistStage

AllowlistStage(*, always_include: Sequence[str] = (), catalog: ToolCatalog | None = None)

Re-add mandated tools that an earlier stage dropped.

A mandated name that is not in the catalogue is ignored rather than fabricated: the framework constrains the choice set, it never authors tools.

Source code in src/symfonic/capabilities/tools/stages/allowlist.py
def __init__(
    self,
    *,
    always_include: Sequence[str] = (),
    catalog: ToolCatalog | None = None,
) -> None:
    self._always_include = tuple(name for name in always_include if name)
    self._catalog = catalog