"""Pipeline task wrapper for the analysis stage (step 7). The analysis logic lives in the top-level :mod:`analysis` package (mirroring :mod:`evaluation`); this module is only the thin pipeline-task adapter. It is named ``analyze`` rather than ``analysis`` so it does not shadow that package. """ import pathlib as pl from typing import Any, Dict import analysis from util.progress import ProgressTracker from util.ui_logger import PipelineLogger # Re-exported so the task registry can describe the artifacts this stage writes. ANALYSIS_SUBDIR = analysis.ANALYSIS_SUBDIR EVAL_SUBDIR = analysis.EVAL_SUBDIR def run_analysis_task( track: ProgressTracker, log: PipelineLogger, config: Dict[str, Any], state: Dict[str, Any], ) -> None: """Run every registered analysis over the working directory's evaluations.""" analysis.run_all( work_dir=pl.Path(config["work_dir"]), log=log, config=config, progress=track, )