from __future__ import annotations from pathlib import Path import unittest from agent_harness.specs import ( load_agent_systems, load_edit_interfaces, load_experiments, load_harnesses, load_models, load_repositories, load_task_split, load_tasks, validate_configuration_tree, ) ROOT = Path(__file__).resolve().parents[1] class HarnessCatalogTests(unittest.TestCase): def test_catalog_is_complete_and_hashes_are_unique(self) -> None: harnesses = load_harnesses(ROOT) self.assertEqual(list(harnesses), [f"H{number:03d}" for number in range(21)]) self.assertEqual(len({item.config_hash for item in harnesses.values()}), 21) self.assertEqual(len({item.treatment_hash for item in harnesses.values()}), 21) def test_core_retrieval_block_is_full_factorial(self) -> None: harnesses = load_harnesses(ROOT) observed = { ( harnesses[f"H{number:03d}"].lexical, harnesses[f"H{number:03d}"].syntax == "tree_sitter", harnesses[f"H{number:03d}"].dense, ) for number in range(8) } expected = { (lexical, syntax, dense) for lexical in (False, True) for syntax in (False, True) for dense in (False, True) } self.assertEqual(observed, expected) def test_control_harnesses_have_no_retrieval_capabilities(self) -> None: harnesses = load_harnesses(ROOT) for identifier in ("H016", "H017", "H018", "H019"): harness = harnesses[identifier] self.assertFalse(harness.exact_search) self.assertFalse(harness.lexical) self.assertFalse(harness.dense) self.assertEqual(harness.syntax, "raw") self.assertEqual(harness.graph_hops, 0) def test_configuration_tree_is_valid_and_embedding_is_ready(self) -> None: errors, warnings = validate_configuration_tree(ROOT) self.assertEqual(errors, []) self.assertFalse(any("dense retrieval" in warning for warning in warnings)) self.assertEqual(warnings, []) def test_fixed_model_and_end_to_end_plan(self) -> None: models = load_models(ROOT) experiments = load_experiments(ROOT) self.assertEqual(models["M001"].canonical_name, "Qwen3.6-35B-A3B") self.assertEqual(experiments["E03"].cells_per_task(), 10) self.assertEqual(experiments["E03"].model_ids, ("M001",)) self.assertEqual(models["M002"].context_length, 65536) self.assertEqual(experiments["E07"].cells_per_task(), 7) self.assertEqual(experiments["E07"].model_ids, ("M002",)) def test_task_template_has_a_valid_schema_but_is_not_in_a_split(self) -> None: tasks = load_tasks(ROOT) self.assertEqual(len(tasks), 108) self.assertEqual( {item for item in tasks if item.startswith("TASK_CR_")}, {f"TASK_CR_{number:03d}" for number in range(1, 16)}, ) self.assertEqual(tasks["TASK_EXAMPLE"].base_commit, "0" * 40) for task_id in ("TASK_GR_001", "TASK_GR_002", "TASK_GR_003", "TASK_GR_004", "TASK_GR_005"): self.assertEqual(tasks[task_id].validation_status, "retrieval_ready") self.assertEqual(tasks[task_id].repository_url, "https://gitlab.com/gitlab-org/gitlab-runner.git") end_to_end = {"TASK_CR_001", "TASK_CR_002", "TASK_CR_003", "TASK_CR_005", "TASK_CR_006", "TASK_CR_007", "TASK_CR_008", "TASK_CR_009", "TASK_CR_012", "TASK_CR_013"} for task_id in end_to_end: self.assertEqual(tasks[task_id].validation_status, "end_to_end_ready") self.assertTrue(tasks[task_id].gold_patch) self.assertTrue(tasks[task_id].test_patch) def test_study2_catalog_and_powered_matrix_are_frozen(self) -> None: systems = load_agent_systems(ROOT) repositories = load_repositories(ROOT) experiments = load_experiments(ROOT) split = load_task_split(ROOT / "tasks" / "splits" / "study2_confirmatory.txt") self.assertEqual(set(systems), {"A001", "A002"}) self.assertEqual(set(repositories), {"R001", "R002", "R003"}) self.assertEqual(len(split), 60) self.assertEqual(experiments["E08"].cells_per_task(), 14) self.assertEqual(experiments["E08"].cells_per_task() * len(split), 840) def test_study3_edit_interfaces_are_separate_and_frozen(self) -> None: interfaces = load_edit_interfaces(ROOT) self.assertEqual(set(interfaces), {"P001", "P002", "P003"}) self.assertEqual( {item.edit_tool for item in interfaces.values()}, {"apply_patch", "replace_text", "write_file"}, ) self.assertEqual(len({item.treatment_hash for item in interfaces.values()}), 3) def test_study4_fresh_task_matrix_is_frozen(self) -> None: tasks = load_tasks(ROOT) experiments = load_experiments(ROOT) split = load_task_split(ROOT / "tasks" / "splits" / "study4_fresh.txt") self.assertEqual(len(split), 20) self.assertEqual( {task_id.split("_")[2] for task_id in split}, {"R001", "R002", "R003"} ) self.assertEqual( [sum(task_id.startswith(f"TASK_S4_{repo}_") for task_id in split) for repo in ("R001", "R002", "R003")], [3, 7, 10], ) self.assertTrue(all(tasks[task_id].validation_status == "end_to_end_ready" for task_id in split)) experiment = experiments["E10"] self.assertEqual(experiment.harness_ids, ("H000", "H007", "H018")) self.assertEqual(experiment.model_ids, ("M002", "M003", "M004")) if __name__ == "__main__": unittest.main()