{"repo":"NousResearch/hermes-agent","public_id":"14497","display_label":"Fuzzy match strategy bugs and patch tool fixes","summary":"These issues and PRs address two related areas: dead/unreachable code in fuzzy_match.py due to incorrect strategy ordering, and patch tool bugs including wrong-region edits and duplicate-content loops from repeated application.","subsystem":"agent","counts":{"members":12,"open_issues":4,"open_issues_distinct":4,"open_prs":4,"closed_issues":0,"merged_prs":1,"attempt_prs":7},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":137288},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-10-12T17:41:30+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.15272727272727274},"fix_edges":[{"issue_number":54572,"pr_number":137288,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":88264,"pr_number":137288,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":93698,"pr_number":137288,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":14497,"title":"[Bug]: Redundancy in fuzzy match: indentation_flexible (strategy 4) is a strict subset of line_trimmed (strategy 2)","url":null,"state":"open"},{"kind":"issue","number":14781,"title":"[Bug]: fuzzy_match.py strategy ordering makes indentation_flexible dead code","url":null,"state":"open"},{"kind":"issue","number":18426,"title":"patch tool can create duplicate content loops when used repeatedly","url":null,"state":"open"},{"kind":"issue","number":54572,"title":"patch tool (replace mode) can edit the wrong region when old_string is not an exact match","url":null,"state":"open"},{"kind":"pr","number":14522,"title":"fix: reorder fuzzy match strategies so indentation_flexible is not dead code","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#14497","number":14497}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":14777,"title":"fix(tools): reorder fuzzy match strategies so indentation_flexible is no longer dead code","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#14522","number":14522},{"kind":"pr","value":"#14497","number":14497}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":15011,"title":"fix(tools): reorder fuzzy_match strategies so indentation_flexible is reachable","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#14522","number":14522}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":54575,"title":"fix(patch): reject wrong-region matches in the fuzzy edit fallback","url":null,"state":"open","close_reason":{"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":56570,"title":"fix(tools): patch idempotency guard prevents duplicate-content loops on re-edit (#18426)","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":84278,"title":"fix(tools): guard replayed JSON value patches","url":null,"state":"closed","close_reason":{"category":"stale_abandoned","implication":"active"},"merged":false},{"kind":"pr","number":128138,"title":"fix(tools): patch writefile verification warning","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#137288","number":137288}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":137288,"title":"fix(tools): patch matching fixes from NVIDIA batch (#128006, #128020, #128138)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/tools/test_escape_drift_autocorrect.py","tests/tools/test_file_tools_live.py","tests/tools/test_fuzzy_match.py","tools/escape_drift_autocorrect.py","tools/file_operations.py","tools/fuzzy_match.py","tools/patch_parser.py","tools/skill_manager_tool.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}