ce658e82ff
Follow-up on the salvaged #85764 commits, addressing review findings: - _session_left_live_context now allowlists end_reason == 'compression' or a fresh reset (_FRESH_RESET_END_REASONS) instead of accepting any non-None end_reason. The wide predicate let 'branched' parents — whose transcript /branch verbatim-copies into the child — surface as same-lineage recall hits, returning content already in the caller's live context (verified empirically vs main). - _FRESH_RESET_END_REASONS is now derived from the canonical hermes_state_common._RESET_END_REASONS (plus CLI 'new_session') instead of a third hand-maintained copy, per that tuple's anti-drift comment. Import verified cycle-free. - Browse drops the Python re-check of parent_session_id rows: list_sessions_rich (include_children=False) already applies the canonical _LISTABLE_CHILD_SQL classifier, and the Python re-check re-hid legacy pre-marker reset children the SQL same-key heuristic deliberately admits. _has_reset_from_marker (now orphaned) removed. - Tests: branched-parent exclusion regression guard (mutation-checked: fails on the overbroad predicate) + legacy pre-marker reset child browse guard. 48/48 pass.