agent-harness / tests /test_telemetry.py
cuber12's picture
Publish agent harness research code and paper artifacts
d61821a verified
Raw
History Blame Contribute Delete
3.36 kB
from __future__ import annotations
import json
from pathlib import Path
import tempfile
import unittest
from agent_harness.telemetry import (
EventWriter,
RunIdentity,
load_completed_or_archive_incomplete,
run_directory,
)
def sample_identity() -> RunIdentity:
return RunIdentity(
experiment_id="E03",
task_id="TASK001",
harness_id="H000",
harness_hash="a" * 64,
model_id="M001",
model_key="qwen3.6-35b-a3b",
model_config_hash="b" * 64,
context_budget=65536,
seed=0,
repetition=0,
repository_sha="c" * 40,
code_revision="d" * 40,
)
class TelemetryTests(unittest.TestCase):
def test_run_identity_is_deterministic(self) -> None:
self.assertEqual(sample_identity().run_id, sample_identity().run_id)
self.assertEqual(len(sample_identity().run_id), 20)
def test_writer_creates_manifest_and_ordered_events(self) -> None:
identity = sample_identity()
with tempfile.TemporaryDirectory() as temporary:
root = Path(temporary)
with EventWriter(root, identity, {"harness_id": "H000"}, {"id": "qwen"}) as writer:
writer.emit("run_started", {"order": 1})
writer.emit("run_finished", {"resolved_at_1": False})
writer.write_artifact("patch.diff", "")
directory = run_directory(root, identity)
manifest = json.loads((directory / "run_manifest.json").read_text())
events = [json.loads(line) for line in (directory / "trajectory.jsonl").read_text().splitlines()]
self.assertEqual(manifest["run_id"], identity.run_id)
self.assertEqual([event["sequence"] for event in events], [0, 1])
self.assertTrue((directory / "patch.diff").exists())
with self.assertRaises(FileExistsError):
EventWriter(root, identity, {}, {})
def test_artifact_paths_cannot_escape_run_directory(self) -> None:
with tempfile.TemporaryDirectory() as temporary:
with EventWriter(Path(temporary), sample_identity(), {}, {}) as writer:
with self.assertRaises(ValueError):
writer.write_artifact("../outside.txt", "unsafe")
def test_incomplete_attempt_is_archived_before_identical_retry(self) -> None:
with tempfile.TemporaryDirectory() as temporary:
root = Path(temporary)
identity = sample_identity()
incomplete = run_directory(root, identity)
incomplete.mkdir(parents=True)
(incomplete / "trajectory.jsonl").write_text(
"partial\n", encoding="utf-8"
)
self.assertIsNone(load_completed_or_archive_incomplete(root, identity))
self.assertFalse(incomplete.exists())
archive_root = (
root
/ "infrastructure_attempts"
/ identity.experiment_id
/ identity.harness_id
/ identity.task_id
)
archives = list(archive_root.iterdir())
self.assertEqual(len(archives), 1)
self.assertTrue((archives[0] / "trajectory.jsonl").exists())
self.assertTrue((archives[0] / "archive_record.json").exists())
if __name__ == "__main__":
unittest.main()