39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
"""Tests for prompt-only trajectory compaction."""
|
|
|
|
from swe_data_processing.evidence import compact_text, compact_trajectory
|
|
|
|
|
|
def test_compact_text_preserves_short_values() -> None:
|
|
"""Short evidence must remain byte-for-byte identical."""
|
|
|
|
assert compact_text("short evidence", 100) == "short evidence"
|
|
|
|
|
|
def test_compact_text_hashes_long_values() -> None:
|
|
"""Long evidence must expose its size and digest for auditability."""
|
|
|
|
result = compact_text("a" * 1_000, 200)
|
|
assert len(result) == 200
|
|
assert "COMPACTED original_chars=1000 sha256=" in result
|
|
|
|
|
|
def test_compact_trajectory_prioritizes_test_observations() -> None:
|
|
"""Important test output receives a larger preview than ordinary output."""
|
|
|
|
long_content = "x" * 3_000
|
|
trajectory = [
|
|
{"turn_id": 1, "role": "user", "content": "issue"},
|
|
{"turn_id": 2, "role": "assistant", "content": "", "tool_calls": []},
|
|
{"turn_id": 3, "role": "tool", "content": long_content},
|
|
{"turn_id": 4, "role": "assistant", "content": "done"},
|
|
]
|
|
signals = {
|
|
"stateful_turns": [],
|
|
"test_events": [{"command_turn": 2, "output_turn": 3}],
|
|
"malformed_tool_turns": [],
|
|
"unknown_tool_turns": [],
|
|
}
|
|
compacted, metadata = compact_trajectory(trajectory, signals)
|
|
assert compacted[2]["content"] == long_content
|
|
assert 3 in metadata["important_turn_ids"]
|