{"repo":"NousResearch/hermes-agent","public_id":"53404","display_label":"Skills content_hash cross-platform parity fixes","summary":"These issues and PRs address false-positive 'update_available' signals in skills checking caused by Windows-specific hash mismatches, including CRLF/LF line endings, path separator differences, and unstable sort ordering of paths during hash computation.","subsystem":"skills","counts":{"members":14,"open_issues":2,"open_issues_distinct":2,"open_prs":6,"closed_issues":2,"merged_prs":1,"attempt_prs":9},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":84419},"resolution":{"state":"partially_resolved","by":"pr-84419"},"freshness":{"state":"verified","last_verified_at":"2026-08-12T08:45:19+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.12175824175824176},"fix_edges":[{"issue_number":42016,"pr_number":84419,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":51755,"pr_number":84419,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":62310,"pr_number":84419,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":78293,"pr_number":84419,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":83884,"pr_number":84419,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":83934,"pr_number":84419,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":53404,"title":"Bug: content_hash is order-unstable — sorts on Path objects, not the posix string mixed into the digest","url":null,"state":"open"},{"kind":"issue","number":58825,"title":"[Bug]: Windows: hermes skills check always shows update_available due to CRLF/LF hash mismatch","url":null,"state":"open"},{"kind":"issue","number":62310,"title":"Bug: hermes skills check reports permanent false-positive update_available on Windows (path-separator hash divergence)","url":null,"state":"closed"},{"kind":"issue","number":71237,"title":"Windows: hub-installed skills with subdirectories stuck in a perpetual update_available loop (bundle vs disk hash mismatch)","url":null,"state":"closed"},{"kind":"pr","number":53448,"title":"fix(skills): sort content_hash by relative posix string, not Path objects (#53404)","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":53877,"title":"fix(skills): stabilize content_hash ordering for shared-prefix paths","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#53448","number":53448},{"kind":"pr","value":"#53404","number":53404},{"kind":"pr","value":"#53448","number":53448},{"kind":"pr","value":"#53881","number":53881}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":58827,"title":"fix(skills): normalize CRLF to LF in content_hash for Windows parity","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"51382ac24","number":0}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":59124,"title":"fix: normalize CRLF to LF before computing file hashes (#58825)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#58827","number":58827},{"kind":"pr","value":"#58825","number":58825},{"kind":"pr","value":"#58827","number":58827},{"kind":"pr","value":"#58827","number":58827},{"kind":"pr","value":"#59124","number":59124}],"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":62313,"title":"fix(skills): normalize path separators in content hash for Windows compatibility","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":62519,"title":"fix: normalize path separators in skills content hash for Windows parity (#62310)","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#62313","number":62313},{"kind":"pr","value":"#62310","number":62310},{"kind":"pr","value":"#58825","number":58825},{"kind":"pr","value":"#58827","number":58827},{"kind":"pr","value":"#59124","number":59124}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":64659,"title":"fix(skills_guard): sort paths as strings to match bundle_content_hash ordering","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#53448","number":53448},{"kind":"pr","value":"#53448","number":53448},{"kind":"pr","value":"#53404","number":53404},{"kind":"pr","value":"#53404","number":53404},{"kind":"pr","value":"#59354","number":59354},{"kind":"pr","value":"#53877","number":53877}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":71246,"title":"fix(skills): use posix paths in bundle hash for Windows parity (#71237)","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#62313","number":62313},{"kind":"pr","value":"#71252","number":71252}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":71252,"title":"fix(skills): normalize path separators and sort order for cross-platform hash parity","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":84419,"title":"fix: Windows agent-loop papercuts — path splitting, skill hashing, autocomplete, screenshots, OS detection","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/prompt_builder.py","agent/shell_hooks.py","hermes_cli/_subprocess_compat.py","hermes_cli/commands.py","hermes_cli/console_engine.py","tests/tools/test_windows_agent_loop_papercuts.py","tools/browser_use_cli.py","tools/skills_guard.py","tools/skills_hub.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}