generated from coulomb/repo-seed
session-memory: denoise error fingerprints (WP-0006 follow-up)
Tighten _is_failed: exclude successful hub JSON responses (top-level no-error payloads) and file-read snapshots (numbered cat -n source lines) that were polluting error_snippets. JSON verdict classifies error vs success payloads directly. Cuts distinct fingerprints 444 -> 269 (~40%) over the real corpus with the top errors unchanged. Assessment caveat updated. 5 new tests; suite 102/102. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -59,6 +59,33 @@ def test_clean_tool_result_not_mined():
|
||||
assert _error_snippets(events, blobs) == []
|
||||
|
||||
|
||||
def test_success_json_not_mined():
|
||||
# a hub MCP success payload mentioning 'error' deep inside is NOT a failure
|
||||
blobs = {"b1": '{"result": "{\\"domain\\": \\"custodian\\", \\"note\\": \\"no errors\\"}"}'}
|
||||
events = [_ev(0, "tool_result", tool="mcp__state-hub__get_domain_summary", payload_ref="b1")]
|
||||
assert _error_snippets(events, blobs) == []
|
||||
|
||||
|
||||
def test_error_json_still_mined():
|
||||
blobs = {"b1": '{"detail": "Invalid request parameters"}'}
|
||||
events = [_ev(0, "tool_result", tool="Bash", payload_ref="b1")]
|
||||
snips = _error_snippets(events, blobs)
|
||||
assert len(snips) == 1
|
||||
|
||||
|
||||
def test_plain_mcp_error_still_mined():
|
||||
blobs = {"b1": "MCP error -32602: Invalid request parameters"}
|
||||
events = [_ev(0, "tool_result", tool="Bash", payload_ref="b1")]
|
||||
assert len(_error_snippets(events, blobs)) == 1
|
||||
|
||||
|
||||
def test_file_read_snapshot_not_mined():
|
||||
# a Read result of source code containing 'raise ...Error' is not a runtime error
|
||||
blobs = {"b1": "227\t def f():\n228\t x = 1\n229\t raise InfospaceError()\n"}
|
||||
events = [_ev(0, "tool_result", tool="Read", payload_ref="b1")]
|
||||
assert _error_snippets(events, blobs) == []
|
||||
|
||||
|
||||
def test_build_digest_includes_error_snippets_and_v2():
|
||||
s = Session(session_uid="claude:s", flavor="claude", native_session_id="s", repo="r")
|
||||
events = [_ev(0, "user_msg"), _ev(1, "error", payload_ref="b1"), _ev(2, "assistant_msg")]
|
||||
|
||||
Reference in New Issue
Block a user