Keep trace summaries from breaking Logs and fix their counts

A failed trace-summary lookup now leaves the Logs page intact without
chips. Tool-call counts include only calls that ran, not their paused,
denied or skipped records. A local guardrail that fires unchanged on every
streamed segment is recorded once, so it cannot use up the span cap.
This commit is contained in:
arc53-machine committed 2026-09-23 22:09:58 +01:00
1 parent 24796ae61f
commit 9f7f0b2f1e
7 files changed
+134 -19

No files matched your search

+23
View File
@@ -372,3 +372,26 @@ class TestRecordQuery:
tracing.mark_content_blocked()
trace.finish()
assert "query" not in trace.to_record()["summary"]
class TestToolCount:
def test_only_tool_calls_that_ran_are_counted(self):
trace = tracing.start_trace(source="stream")
with tracing.activate(trace):
tracing.start_span(tracing.KIND_TOOL, "paused").end(tracing.STATUS_PENDING)
tracing.start_span(tracing.KIND_TOOL, "denied").end(tracing.STATUS_DENIED)
tracing.start_span(tracing.KIND_TOOL, "skipped").end(tracing.STATUS_SKIPPED)
tracing.start_span(tracing.KIND_TOOL, "ran").end()
tracing.start_span(tracing.KIND_TOOL, "failed").end(tracing.STATUS_ERROR)
trace.finish()
assert trace.summary()["tool_calls"] == 2
class TestFirstOccurrence:
def test_key_is_new_once_per_trace(self):
trace = tracing.start_trace(source="stream")
with tracing.activate(trace):
assert tracing.first_occurrence(("a", 1)) is True
assert tracing.first_occurrence(("a", 1)) is False
assert tracing.first_occurrence(("a", 2)) is True
assert tracing.first_occurrence(("a", 3)) is False # no active trace