327f7efab8
Review follow-ups on the composite salvage (whole-bug-class sweep): - session.branch and _persist_branch_seed copied parent history without display_kind/display_metadata, so a tagged timeline marker (personality pivot, model switch, auto-continue) re-entered the branched session as a bare role=user row after a restart — re-planting the phantom-ordinal class this PR fixes. Both projection dicts now carry the tags; regression asserts added to both branch tests (mutation-checked: fail without the fix). - ui-tui renderer learns display_kind=personality_switch (was falling through to an opaque user bubble; desktop got the case in commit 1). - programmatic-integration docs: document the two new 4004 refusals (boolean ordinal, bare confirm_truncate). - hermes_state comment: archived rows are searchable only with include_inactive=True, not by default search — align comment with the actual FTS filter. - strip stray trailing blank line in test_tui_gateway_server.py