Files
2026-07-13 13:12:33 +08:00

676 lines
24 KiB
Python

from __future__ import annotations
import hashlib
import importlib.util
import json
from pathlib import Path
def _load_script():
script_path = Path(__file__).resolve().parents[2] / "scripts" / "experiments" / (
"analyze_tool_compression.py"
)
spec = importlib.util.spec_from_file_location("analyze_tool_compression", script_path)
assert spec is not None
module = importlib.util.module_from_spec(spec)
assert spec.loader is not None
spec.loader.exec_module(module)
return module
def _write_json(path: Path, payload: dict) -> None:
path.write_text(json.dumps(payload), encoding="utf-8")
def _write_jsonl(path: Path, rows: list[dict]) -> None:
path.write_text("\n".join(json.dumps(row) for row in rows) + "\n", encoding="utf-8")
def _write_store_record(
record_dir: Path,
*,
handle: str,
tool_use_id: str,
content: str,
) -> None:
record_dir.mkdir(parents=True)
payload = content.encode("utf-8")
# The raw-store contract is byte-oriented (the analyzer reads content.txt
# with read_bytes and hashes the raw payload). Write bytes so text-mode
# newline translation on Windows cannot skew the sha256/char counts below.
(record_dir / "content.txt").write_bytes(payload)
_write_json(
record_dir / "meta.json",
{
"handle": handle,
"tool_use_id": tool_use_id,
"tool_name": "exec_command",
"size_bytes": len(payload),
"stored_size_bytes": len(payload),
"storage_encoding": "utf-8",
"content_file": "content.txt",
"sha256": hashlib.sha256(payload).hexdigest(),
},
)
def test_summarize_instance_classifies_projection_risks(tmp_path: Path) -> None:
mod = _load_script()
inst = tmp_path / "run-a" / "repo__issue-1"
inst.mkdir(parents=True)
_write_json(
inst / "metadata.json",
{
"instance_id": "repo__issue-1",
"run_id": "run-a",
"model": "qwen3.6-flash",
"state": "patch_collected",
"patch_empty": False,
},
)
_write_json(
inst / "usage.json",
{
"input_tokens": 1000,
"cached_tokens": 900,
"request_count": 3,
"cost_usd": 0.01,
},
)
_write_jsonl(
inst / "runtime_events.jsonl",
[
{
"feature": "tool_result_projection",
"tool_name": "grep_search",
"outcome": "applied",
"reason": "tokenjuice",
"original_chars": 1_200_000,
"projected_chars": 1000,
"saved_chars": 1_199_000,
"tool_result_handle_present": True,
},
{
"feature": "tool_result_projection",
"tool_name": "exec_command",
"outcome": "noop",
"reason": "store_budget_exceeded",
"original_chars": 50_000,
"tool_result_handle_present": False,
},
{
"feature": "tool_result_projection",
"tool_name": "read_file",
"outcome": "noop",
"reason": "semantic_read_file_preserved",
"original_chars": 2000,
"tool_result_handle_present": False,
},
],
)
_write_jsonl(
inst / "transcript.jsonl",
[
{
"message": {
"role": "assistant",
"content": [
{
"type": "toolCall",
"name": "retrieve_tool_result",
"arguments": {"handle": "tr-abc", "mode": "query"},
}
],
}
}
],
)
store_dir = inst / "opensquilla_state" / "media" / "tool-results" / "s" / "session"
record_dir = store_dir / "ab" / "tr-abc"
record_dir.mkdir(parents=True)
_write_json(
record_dir / "meta.json",
{
"handle": "tr-abc",
"size_bytes": 1_200_000,
"stored_size_bytes": 5000,
"storage_encoding": "gzip+utf-8",
},
)
(inst / "git.patch").write_text(
"diff --git a/src/main.py b/src/main.py\n"
"diff --git a/fix.py b/fix.py\n",
encoding="utf-8",
)
summary = mod.summarize_instance(inst)
assert summary["usage"]["kv_cache_hit_rate"] == 0.9
assert summary["projection"]["events"] == 3
assert summary["projection"]["applied"] == 1
assert summary["projection"]["semantic_preserves"] == 1
assert summary["projection"]["categories"]["huge_grep_log"] == 1
assert summary["projection"]["categories"]["store_budget_exceeded"] == 1
assert "retrieval_unused" not in summary["projection"]["categories"]
assert summary["retrieval"]["calls"] == 1
assert summary["raw_store"]["records"] == 1
assert summary["raw_store"]["compressed_records"] == 1
assert summary["patch"]["scratch_paths"] == ["fix.py"]
def test_summarize_instance_flags_root_apply_helper_patch_artifacts(
tmp_path: Path,
) -> None:
mod = _load_script()
inst = tmp_path / "run-helper" / "repo__issue-helper"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": False})
(inst / "git.patch").write_text(
"diff --git a/apply_fix.py b/apply_fix.py\n"
"diff --git a/apply_util_fix.py b/apply_util_fix.py\n"
"diff --git a/include/pkg/util.h b/include/pkg/util.h\n",
encoding="utf-8",
)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["patch"]["scratch_paths"] == [
"apply_fix.py",
"apply_util_fix.py",
]
assert aggregate["scratch_patch_instances"] == 1
def test_summarize_instance_reports_raw_store_integrity_and_duplicates(
tmp_path: Path,
capsys,
) -> None:
mod = _load_script()
inst = tmp_path / "run-integrity" / "repo__issue-raw"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": False})
_write_jsonl(
inst / "runtime_events.jsonl",
[
{
"feature": "tool_result_projection",
"tool_use_id": "call-1",
"tool_name": "exec_command",
"outcome": "noop",
"reason": "no_reduction",
},
{
"feature": "tool_result_projection",
"tool_use_id": "call-2",
"tool_name": "exec_command",
"outcome": "applied",
"reason": "tokenjuice",
"tool_result_handle": "tr-missing",
"tool_result_handle_present": True,
},
],
)
store_root = inst / "opensquilla_state" / "media" / "tool-results" / "s" / "session"
_write_store_record(
store_root / "aa" / "tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
handle="tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
tool_use_id="call-1",
content="first snapshot",
)
_write_store_record(
store_root / "bb" / "tr-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
handle="tr-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
tool_use_id="call-1",
content="duplicate snapshot",
)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["raw_store"]["records"] == 2
assert summary["raw_store"]["unique_tool_use_ids"] == 1
assert summary["raw_store"]["duplicate_tool_use_records"] == 1
assert summary["raw_store"]["content_missing"] == 0
assert summary["raw_store"]["hash_mismatches"] == 0
assert summary["raw_store"]["size_mismatches"] == 0
assert summary["raw_store"]["projection_tool_use_ids"] == 2
assert summary["raw_store"]["projection_tool_use_ids_covered"] == 1
assert summary["raw_store"]["projection_tool_use_ids_missing"] == 1
assert summary["raw_store"]["projection_handles_missing"] == 1
assert aggregate["raw_store_duplicate_tool_use_records"] == 1
assert aggregate["raw_store_integrity_bad"] == 0
assert aggregate["raw_store_projection_tool_use_ids_missing"] == 1
assert aggregate["raw_store_projection_handles_missing"] == 1
assert aggregate["raw_store_projection_links_missing"] == 2
mod._print_table([summary])
table = capsys.readouterr().out.splitlines()
header = table[0].split("\t")
row = table[1].split("\t")
assert "raw_missing" not in header
assert header[header.index("raw_bad")] == "raw_bad"
assert header[header.index("raw_link_missing")] == "raw_link_missing"
assert row[header.index("raw_bad")] == "0"
assert row[header.index("raw_link_missing")] == "2"
assert header[header.index("replay_bad")] == "replay_bad"
def test_summarize_instance_verifies_transcript_projection_replay(
tmp_path: Path,
) -> None:
mod = _load_script()
inst = tmp_path / "run-replay" / "repo__issue-replay"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": False})
content = "raw output\n重要 detail\n"
handle = "tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_write_store_record(
inst / "opensquilla_state" / "media" / "tool-results" / "s" / "session" / "aa" / handle,
handle=handle,
tool_use_id="call-1",
content=content,
)
envelope = (
"[tool_result_projection]\n"
f"tool_result_handle: {handle}\n"
f"sha256: {hashlib.sha256(content.encode('utf-8')).hexdigest()}\n"
f"original_chars: {len(content)}\n"
"retrieve_hint: this result is incomplete.\n"
"[tokenjuice]\nsummary"
)
_write_jsonl(
inst / "transcript.jsonl",
[
{
"message": {
"role": "toolResult",
"toolName": "exec_command",
"content": [{"type": "text", "text": envelope}],
}
}
],
)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["transcript_projection"]["events"] == 1
assert summary["transcript_projection"]["handle_present"] == 1
assert summary["transcript_projection"]["replay_bad"] == 0
assert aggregate["transcript_projection_events"] == 1
assert aggregate["transcript_projection_replay_bad"] == 0
def test_summarize_instance_flags_transcript_projection_replay_failures(
tmp_path: Path,
capsys,
) -> None:
mod = _load_script()
inst = tmp_path / "run-replay-bad" / "repo__issue-replay-bad"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": False})
content = "raw output\n"
handle = "tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_write_store_record(
inst / "opensquilla_state" / "media" / "tool-results" / "s" / "session" / "aa" / handle,
handle=handle,
tool_use_id="call-1",
content=content,
)
bad_sha = "0" * 64
envelopes = [
(
"[tool_result_projection]\n"
f"tool_result_handle: {handle}\n"
f"sha256: {bad_sha}\n"
"original_chars: 999\n"
"[tokenjuice]\nsummary"
),
(
"[tool_result_projection]\n"
"tool_result_handle: tr-missing\n"
f"sha256: {bad_sha}\n"
"original_chars: 1\n"
"[tokenjuice]\nsummary"
),
]
_write_jsonl(
inst / "transcript.jsonl",
[
{
"message": {
"role": "toolResult",
"toolName": "exec_command",
"content": [{"type": "text", "text": envelope}],
}
}
for envelope in envelopes
],
)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["transcript_projection"]["events"] == 2
assert summary["transcript_projection"]["handles_missing"] == 1
assert summary["transcript_projection"]["sha_mismatches"] == 1
assert summary["transcript_projection"]["size_mismatches"] == 1
assert summary["transcript_projection"]["replay_bad"] == 3
assert aggregate["transcript_projection_replay_bad"] == 3
assert aggregate["categories"]["transcript_projection_handle_missing"] == 1
assert aggregate["categories"]["transcript_projection_sha_mismatch"] == 1
assert aggregate["categories"]["transcript_projection_size_mismatch"] == 1
mod._print_table([summary])
table = capsys.readouterr().out.splitlines()
header = table[0].split("\t")
row = table[1].split("\t")
categories = row[header.index("categories")]
assert "transcript_projection_handle_missing:1" in categories
assert "transcript_projection_sha_mismatch:1" in categories
assert "transcript_projection_size_mismatch:1" in categories
def test_summarize_instance_separates_raw_integrity_from_projection_links(
tmp_path: Path,
) -> None:
mod = _load_script()
inst = tmp_path / "run-integrity-bad" / "repo__issue-raw-bad"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": False})
_write_jsonl(
inst / "runtime_events.jsonl",
[
{
"feature": "tool_result_projection",
"tool_use_id": "call-1",
"tool_name": "exec_command",
"outcome": "applied",
"reason": "tokenjuice",
"tool_result_handle": "tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"tool_result_handle_present": True,
}
],
)
store_root = inst / "opensquilla_state" / "media" / "tool-results" / "s" / "session"
record_dir = store_root / "aa" / "tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_write_store_record(
record_dir,
handle="tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
tool_use_id="call-1",
content="raw snapshot",
)
meta_path = record_dir / "meta.json"
meta = json.loads(meta_path.read_text(encoding="utf-8"))
meta["sha256"] = "0" * 64
_write_json(meta_path, meta)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["raw_store"]["hash_mismatches"] == 1
assert summary["raw_store"]["projection_tool_use_ids_missing"] == 0
assert summary["raw_store"]["projection_handles_missing"] == 0
assert aggregate["raw_store_integrity_bad"] == 1
assert aggregate["raw_store_projection_links_missing"] == 0
def test_summarize_instance_reports_dispatch_truncated_raw_snapshot(
tmp_path: Path,
capsys,
) -> None:
mod = _load_script()
inst = tmp_path / "run-trunc" / "repo__issue-trunc"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": False})
_write_jsonl(inst / "runtime_events.jsonl", [])
truncated = {
"result_truncated": True,
"result_original_chars": 1_500_000,
"result_omitted_chars": 1_490_000,
"tool": "exec_command",
"preview": "HEAD",
"tail": "TAIL",
"tool_result_handle": "tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"retrieve_hint": "Use retrieve_tool_result with tool_result_handle.",
}
_write_jsonl(
inst / "transcript.jsonl",
[
{
"message": {
"role": "toolResult",
"toolName": "exec_command",
"content": [{"type": "text", "text": json.dumps(truncated)}],
}
}
],
)
store_root = inst / "opensquilla_state" / "media" / "tool-results" / "s" / "session"
_write_store_record(
store_root / "aa" / "tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
handle="tr-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
tool_use_id="call-large",
content="HEAD" + ("x" * 1024) + "TAIL",
)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["dispatch_truncation"]["events"] == 1
assert summary["dispatch_truncation"]["huge_events"] == 1
assert summary["dispatch_truncation"]["handle_present"] == 1
assert summary["dispatch_truncation"]["handles_missing"] == 0
assert summary["dispatch_truncation"]["tools"] == {"exec_command": 1}
assert aggregate["dispatch_truncation_events"] == 1
assert aggregate["dispatch_truncation_huge_events"] == 1
assert aggregate["dispatch_truncation_handles_missing"] == 0
assert aggregate["categories"]["dispatch_huge_exec_log"] == 1
mod._print_table([summary])
table = capsys.readouterr().out.splitlines()
header = table[0].split("\t")
row = table[1].split("\t")
assert "dispatch_huge_exec_log:1" in row[header.index("categories")]
def test_eval_report_merge_uses_run_id_hint_to_avoid_status_conflicts(
tmp_path: Path,
) -> None:
mod = _load_script()
inst = tmp_path / "run-qwen" / "repo__issue-1"
inst.mkdir(parents=True)
_write_json(
inst / "metadata.json",
{
"instance_id": "repo__issue-1",
"run_id": "run-qwen",
"patch_empty": False,
},
)
qwen_report = tmp_path / "model.run-qwen-eval.json"
glm_report = tmp_path / "model.run-glm-eval.json"
_write_json(qwen_report, {"resolved_ids": ["repo__issue-1"]})
_write_json(glm_report, {"unresolved_ids": ["repo__issue-1"]})
reports = mod._load_eval_reports([qwen_report, glm_report])
instances = mod._annotate_eval_status([mod.summarize_instance(inst)], reports)
aggregate = mod.aggregate(instances)
assert instances[0]["eval"]["status"] == "resolved"
assert aggregate["eval_total"] == 1
assert aggregate["eval_resolved"] == 1
assert aggregate["eval_resolved_rate"] == 1.0
assert aggregate["eval_statuses"] == {"resolved": 1}
def test_aggregate_flags_projection_without_retrieval(tmp_path: Path) -> None:
mod = _load_script()
inst = tmp_path / "run-b" / "repo__issue-2"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": True})
_write_jsonl(
inst / "runtime_events.jsonl",
[
{
"feature": "tool_result_projection",
"tool_name": "exec_command",
"outcome": "applied",
"reason": "tokenjuice",
"original_chars": 9000,
"projected_chars": 500,
"command": "sed -n '1,120p' src/lib.rs",
"tool_arguments": {"command": "sed -n '1,120p' src/lib.rs"},
"tool_result_handle_present": True,
}
],
)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["projection"]["categories"]["projection_without_retrieve"] == 1
assert summary["projection"]["categories"]["retrieval_unused"] == 1
assert summary["projection"]["categories"]["source_lost"] == 1
assert aggregate["empty_patches"] == 1
assert aggregate["projection_applied"] == 1
def test_summarize_instance_reports_retrieval_result_continuations(
tmp_path: Path,
capsys,
) -> None:
mod = _load_script()
inst = tmp_path / "run-retrieve" / "repo__issue-retrieve"
inst.mkdir(parents=True)
_write_json(inst / "metadata.json", {"patch_empty": True})
_write_jsonl(inst / "runtime_events.jsonl", [])
_write_jsonl(
inst / "transcript.jsonl",
[
{
"message": {
"role": "assistant",
"content": [
{
"type": "toolCall",
"name": "retrieve_tool_result",
"arguments": {"handle": "tr-abc", "query": "ERROR"},
}
],
}
},
{
"message": {
"role": "toolResult",
"toolName": "retrieve_tool_result",
"content": [
{
"type": "text",
"text": (
"[tool_result_retrieval]\n"
"handle: tr-abc\n"
"mode: query\n"
"---\n"
"[retrieve_tool_result truncated: "
"returned_chars=500, original_chars=5000]\n"
"continuation.next_call_strategy: "
"same_query_larger_max_chars\n"
'continuation.next_call: {"arguments": '
'{"handle": "tr-abc", "query": "ERROR"}}\n'
),
}
],
}
},
],
)
summary = mod.summarize_instance(inst)
aggregate = mod.aggregate([summary])
assert summary["retrieval"]["calls"] == 1
assert summary["retrieval"]["results"] == 1
assert summary["retrieval"]["modes"] == {"query": 1}
assert summary["retrieval"]["result_modes"] == {"query": 1}
assert summary["retrieval"]["truncated_results"] == 1
assert summary["retrieval"]["continuation_suggestions"] == 1
assert summary["retrieval"]["continuation_strategies"] == {
"same_query_larger_max_chars": 1
}
assert aggregate["retrieve_results"] == 1
assert aggregate["retrieve_truncated_results"] == 1
assert aggregate["retrieve_continuation_suggestions"] == 1
assert aggregate["retrieve_continuation_strategies"] == {
"same_query_larger_max_chars": 1
}
assert "retrieval_result_missing" not in aggregate["categories"]
assert "retrieval_truncated_without_continuation" not in aggregate["categories"]
mod._print_table([summary])
table = capsys.readouterr().out.splitlines()
header = table[0].split("\t")
row = table[1].split("\t")
assert row[header.index("retrieve")] == "1"
assert row[header.index("retrieval_results")] == "1"
assert row[header.index("retrieval_continuations")] == "1"
def test_gate_violations_check_expansion_thresholds() -> None:
mod = _load_script()
aggregate = {
"kv_cache_hit_rate": 0.875,
"raw_store_integrity_bad": 1,
"raw_store_projection_links_missing": 2,
"empty_patches": 3,
"dispatch_truncation_handles_missing": 4,
"transcript_projection_replay_bad": 5,
"eval_resolved_rate": 0.6,
"categories": {"source_lost": 1},
}
assert mod._gate_violations(
aggregate,
min_kv_cache_hit_rate=0.87,
max_raw_bad=1,
max_raw_link_missing=2,
max_empty_patches=3,
max_dispatch_truncation_missing=4,
max_transcript_replay_bad=5,
min_eval_resolved_rate=0.6,
max_categories={"source_lost": 1},
) == []
assert mod._gate_violations(
aggregate,
min_kv_cache_hit_rate=0.88,
max_raw_bad=0,
max_raw_link_missing=1,
max_empty_patches=2,
max_dispatch_truncation_missing=3,
max_transcript_replay_bad=4,
min_eval_resolved_rate=0.7,
max_categories={"source_lost": 0},
) == [
"kv_cache_hit_rate 0.8750 < 0.8800",
"raw_store_integrity_bad 1 > 0",
"raw_store_projection_links_missing 2 > 1",
"empty_patches 3 > 2",
"dispatch_truncation_handles_missing 4 > 3",
"transcript_projection_replay_bad 5 > 4",
"eval_resolved_rate 0.6000 < 0.7000",
"category source_lost 1 > 0",
]
def test_instance_dirs_ignore_empty_patch_recovery_artifacts(tmp_path: Path) -> None:
mod = _load_script()
inst = tmp_path / "run-c" / "repo__issue-3"
recovery = inst / "empty_patch_recovery"
recovery.mkdir(parents=True)
_write_json(inst / "metadata.json", {"instance_id": "repo__issue-3"})
_write_jsonl(inst / "runtime_events.jsonl", [])
_write_jsonl(recovery / "runtime_events.jsonl", [])
assert mod._instance_dirs([tmp_path / "run-c"]) == [inst.resolve()]