@@ -121,3 +121,47 @@ def test_agentic_rejects_unsupported_holdout_before_model_load():
121121 "--diagnosis-mode" , "agentic" , "--held-out" ])
122122 with pytest .raises (ValueError , match = "EXPLORE" ):
123123 run_args (args )
124+
125+
126+ @pytest .mark .parametrize ('modality,dataset' , [
127+ ('llm' , 'bbh_causal_judgement' ), ('vlm' , 'chartqa' ), ('alm' , 'mmau' ),
128+ ])
129+ def test_default_runner_constructs_agentic_pipeline_for_every_modality (monkeypatch , tmp_path ,
130+ modality , dataset ):
131+ from evalrx .benchmark .models import resolve
132+ from evalrx .benchmark .tasks import get
133+ from evalrx .core .case import CaseBatch , FailureCase , Inputs , Label
134+ from evalrx .eval_agent import AgenticDiagnoseLoop , CaseDiscoveryAgent
135+ from evalrx .specs import get_spec
136+ from tests .conftest import FakeModel
137+
138+ cases = CaseBatch ([
139+ FailureCase (id = str (i ), inputs = Inputs (prompt = f'question { i } ' ), expected = 'A' ,
140+ observed = 'A' if i % 2 else 'B' , label = Label .PASS if i % 2 else Label .FAIL )
141+ for i in range (8 )
142+ ])
143+ args = build_parser ().parse_args (['--modality' , modality , '--model' , 'gemini-3.6-flash' ,
144+ '--dataset' , dataset , '--run-dir' , str (tmp_path )])
145+ resolved = resolve (args .model , modality , 'gemini' )
146+ monkeypatch .setattr (runner , 'ensure_manifest' , lambda * a : tmp_path / 'manifest.json' )
147+ monkeypatch .setattr (runner .T , 'build_cases' , lambda * a : (cases , []))
148+ monkeypatch .setattr (runner , 'build_judge' , lambda * a : (FakeModel (), 'claude' , None , ()))
149+ monkeypatch .setattr (runner , 'load_model' , lambda * a : (
150+ FakeModel (), {'do_sample' : True , 'temperature' : 0.6 , 'top_p' : 0.95 },
151+ get_spec (resolved .spec_key )))
152+ monkeypatch .setattr (CaseDiscoveryAgent , 'discover' , lambda * a , ** k : SimpleNamespace (
153+ cases = cases , n_pass = 4 , n_fail = 4 , n_unknown = 0 , has_m4_groups = True ))
154+
155+ class ReachedController (Exception ):
156+ pass
157+
158+ def run (loop , data ):
159+ assert loop .probe_agent .allow_codegen
160+ assert loop .max_actions == 12
161+ assert loop .fix_agent ._floor_candidates == ()
162+ assert len (data ) == 8
163+ raise ReachedController
164+
165+ monkeypatch .setattr (AgenticDiagnoseLoop , 'run' , run )
166+ with pytest .raises (ReachedController ):
167+ runner .run (args , get (dataset ), resolved )
0 commit comments