mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-08-10 17:20:31 +00:00
Adversarial review of the salvaged recovery found a reachable fail-open: compression continuations inherit the rotated agent's model_config verbatim (publish_compression_child callers pass agent._session_init_model_config), so a delegate subagent's continuation carries _delegate_from=<the delegate's own parent>. The marker-PRESENCE filters in reopen_orphaned_compression_session and find_live_compression_child misclassified such a REAL continuation as a delegate child: - reopen: parent 'orphaned' -> reopened while a live continuation exists -> two live heads in one lineage (verified with a live repro) - find_live: adoption misses the continuation (fail-closed, masked the fork pre-PR; the PR made it active) Fix: markers only disqualify a child when they point at the queried parent (shared _NON_CONTINUATION_CHILD_FILTER_SQL fragment, also resolving the duplicated-SQL drift risk flagged by the reuse reviewer). Both directions regression-tested: reopen fails closed on an inherited-marker continuation; find_live adopts it. Also from review: reopen-failure log raised debug->warning (the failure hard-fails the turn moments later), commit-semantics hardening comment on the lease DELETE path, blank-line nit. The three read-only projection walks (get_compression_tip, list_sessions_rich chain, resume walk) share the marker-presence shape but fail closed (skip a continuation -> resume shows the parent), and the fixed adoption path self-heals that case at turn start; left as-is.