- _hermes_api_post sends X-Hermes-Session-Id so each fork sync uses a
fresh gateway transcript (was: derived session reused 200k-token history
across upstream tips, making later runs pay growing context)
- SYNC_CLAUDE_TIMEOUT 2700→3600: a fresh session needs ~25min/120 calls
to resolve 17 files + verify + commit; 2700s cut the HTTP call while the
agent was still committing
- salvage-on-timeout: when the agent call ends early (timeout/transport)
but the merge is already committed (MERGE_HEAD gone), finish+push it
instead of aborting — verified live: 17 conflicts resolved by agent,
push ok, fork 27 ahead / 0 behind
- _sync_finish_merge blocks committing files that still carry conflict
markers (guard against git add of unresolved files)
- tests: 68/68 (session header, salvage completed merge, abort unfinished,
marker guard; fake-leak hardening in _install_git_fake)