{"repo":"NousResearch/hermes-agent","public_id":"107401","display_label":"WAL deletion detection fix for OpenZFS dentries","summary":"These items address a bug where the deleted-WAL guard incorrectly identifies OpenZFS '(deleted)' directory entries as unlinked files, causing spurious DeletedWalGenerationError and related database wedging. The fix changes the identity check to compare file descriptors against the watched path rather than st_nlink.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":108082,"merged_at":"2026-09-11T13:23:24+00:00"},"resolution":{"state":"resolved","by":"pr-108082"},"freshness":{"state":"verified","last_verified_at":"2026-09-11T13:23:24+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":30816,"pr_number":108082,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-11T13:23:24+00:00"},{"issue_number":86515,"pr_number":108082,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:23:24+00:00"},{"issue_number":100871,"pr_number":108082,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:23:24+00:00"},{"issue_number":105567,"pr_number":108082,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:23:24+00:00"},{"issue_number":107401,"pr_number":108082,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:23:24+00:00"},{"issue_number":108031,"pr_number":108082,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:23:24+00:00"}],"members":[{"kind":"issue","number":107401,"title":"[Bug]: deleted-WAL guard misreads OpenZFS `(deleted)` dentries as unlinked sidecars — permanent DeletedWalGenerationError, JSONL fallback","url":null,"state":"closed"},{"kind":"pr","number":107411,"title":"fix(state): compare fd identity against the watched path, not st_nlink","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"d956e05e5e","number":0},{"kind":"pr","value":"#108082","number":108082}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":108082,"title":"state.db no longer wedges on a healthy WAL: OpenZFS/close() false DeletedWalGenerationError, unconfirmed-WAL read pool, transient read IOERR, stale lock banner (#107401 #105567 #86515 #100871 #108031, salvage #107411 #105578 #105711 #106958)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/turn_explainers.py","contributors/emails/[redacted:email]","contributors/emails/nikkoxgonzales@users.noreply.github.com","gateway/run_notifications.py","hermes_state.py","hermes_state_dbfile.py","hermes_state_errors.py","hermes_state_readpool.py","hermes_state_wal.py","tests/gateway/test_session_db_warning_recheck.py","tests/hermes_state/test_deleted_wal_generation_guard.py","tests/hermes_state/test_read_path_transient_ioerr.py","tests/hermes_state/test_wal_active_confirmed.py","tests/run_agent/test_turn_completion_explainer.py","tests/test_hermes_state_wal_fallback.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}