4865194772
- Clear the accidental end stamp on resurrection (at the lineage tip): a surviving ws_orphan_reap/agent_close reason made a LATER deliberate archive auto-resurrect on the next lookup — the user could never retire the canonical chat. Test pins the resurrect -> deliberate-archive -> stays-archived cycle. - Judge recoverability at the compression TIP: the registry row of a compressed lineage carries end_reason='compression', so tip-stamped accidents were unrecoverable through the registry row. Lineage test. - Heal the third lookup: the api_server exact-title listing (hermes peer dm resolution) filtered archived rows out via list_sessions_rich and still failed for reap-archived canonical chats. - Single source of truth for the recoverable set: tuple moved to hermes_state_common (mirroring _RESET_END_REASONS_SQL) and interpolated into all three recovery SQL sites — literals cannot drift. - methods_session gate uses BOT_CHAT_TITLE (not a literal) and re-fetches by id after resurrection (title has no DB-level UNIQUE). - Idempotence pinned: two consecutive profiles.list calls both resolve.