"""engine_v2 — strongly-typed program synthesis over the OncoDSL. Where engine (v1) fills a fixed template (1-2 Select+Reduce sets fed into Fit), engine_v2 composes arbitrary trees of typed nodes: Vector := Reduce(Matrix, Agg) | Combine(Vector, Vector, Op) Matrix := M (terminal) | Select(Matrix, FeatureSet) FeatureSet := 1..genes_per_set opaque IDs sampled from the pool The output type of every program is ``Vector``. The engine is strictly airgap-clean: every leaf (`FeatureSet`) carries opaque IDs only; ``program_repr`` and the full-population log stay opaque. Reveal happens via the existing isolated airgap module — engine_v2 does not import it. Public entry point: - ``run_v2_pipeline(M, y, *, objective, ...) -> (evolution_log, result)`` - ``run_v2_pipeline_streaming(M, y, *, objective, on_generation, ...) -> result`` Defer Split / Effect to v2.1. """ from engine_v2.pipeline import ( run_v2_pipeline, run_v2_pipeline_streaming, ) __all__ = ["run_v2_pipeline", "run_v2_pipeline_streaming"]