37 / 108 · 03 Agentic Testing Architectures · The Swarm Pattern← prev⊞ allnext →☰ Read as one page
5.4The Reconciler: The Critical Component
The Reconciler is what makes the swarm work. Without it, you get duplicate tests, naming conflicts, and inconsistent patterns.
class Reconciler:
def __init__(self, llm):
self.llm = llm
def merge(self, suites: list[RawTestSuite]) -> MergedSuite:
"""Combine all test suites into a single collection."""
all_tests = []
for suite in suites:
for test in suite.tests:
test.source_agent = suite.agent_id
test.source_module = suite.module
all_tests.append(test)
return MergedSuite(tests=all_tests)
def remove_duplicates(self, merged: MergedSuite) -> MergedSuite:
"""Remove semantically duplicate tests."""
unique_tests = []
seen_signatures = set()
for test in merged.tests:
# Generate a semantic signature for the test
signature = self.generate_signature(test)
if signature not in seen_signatures:
seen_signatures.add(signature)
unique_tests.append(test)
else:
# Log the duplicate for transparency
self.log_duplicate(test, signature)
return MergedSuite(tests=unique_tests)
def generate_signature(self, test) -> str:
"""Generate a semantic signature for deduplication.
Two tests are duplicates if they test the same function
with the same input category, even if they have different names.
"""
sig = self.llm.generate(f"""
Summarize this test in one sentence focusing on:
- The function being tested
- The input category (valid, invalid, boundary, null)
- The expected outcome
Test code:
{test.code}
Example: "Tests create_user with duplicate email, expects ValueError"
""")
return sig.strip().lower()
def resolve_conflicts(self, merged: MergedSuite) -> TestSuite:
"""Resolve conflicting test patterns (naming, fixtures, style)."""
# Normalize test names to follow convention
for test in merged.tests:
test.name = self.normalize_name(test.name)
# Normalize fixture usage
fixture_map = self.build_fixture_map(merged.tests)
for test in merged.tests:
test.code = self.apply_fixture_map(test.code, fixture_map)
return TestSuite(tests=merged.tests, metadata={"reconciled": True})