Modern QA2026Harness Observability — tiles
Log inJoin
69 / 108 · 03 Agentic Testing Architectures · Production Test Harness Implementation← prev⊞ allnext →☰ Read as one page

9.4Harness Observability

A production harness must be observable. Every action, decision, and guardrail check should be logged.

import logging
import json

class ObservableHarness(ConstrainedTestHarness):
    def __init__(self, agent, config, logger=None):
        super().__init__(agent, config)
        self.logger = logger or logging.getLogger("test_harness")
        self.telemetry = []

    def execute(self, test_objective: str) -> TestResult:
        self.logger.info(f"Starting test: {test_objective}")
        self.logger.info(f"Config: max_steps={self.config.max_steps}, "
                        f"timeout={self.config.timeout_seconds}s, "
                        f"token_budget={self.config.max_tokens}")

        result = super().execute(test_objective)

        self.logger.info(f"Test completed: status={result.status}, "
                        f"steps={self.step_count}, "
                        f"tokens={self.token_count}, "
                        f"time={time.time() - self.start_time:.1f}s")

        # Save telemetry for post-run analysis
        self.telemetry.append({
            "objective": test_objective,
            "status": result.status,
            "steps": self.step_count,
            "tokens": self.token_count,
            "duration": time.time() - self.start_time,
            "violations": self.violations,
        })

        return result

    def save_telemetry(self, path: str):
        with open(path, "w") as f:
            json.dump(self.telemetry, f, indent=2)