v0.51.25 — Release C: 6-PR streaming/runtime contributor batch
Theme: Profile-isolated quota probes + request wedge diagnostics + max_turns config honor + per-turn usage overwrite + interim_assistant SSE wiring + workspace-prefix transcript dedup.
Constituent PRs
- #1873 by @franksong2702 — Subprocess-based profile isolation for quota fetches (closes #1831)
- #1860 by @franksong2702 — Request wedge diagnostics for /api/chat/start + /api/sessions (refs #1855)
- #1877 by @Michaelyklam — Honor
agent.max_turnsin WebUI streaming agents (closes #1876) - #1861 by @franksong2702 — Per-turn usage overwrite (vs cumulative accumulation) (closes #1857) + Opus-absorbed defensive guard against restart-zeros-totals
- #1865 by @franksong2702 — Wire
interim_assistant_callbackruntime contract through SSE stream - #1889 by @ai-ag2026 — Dedup workspace-prefixed user turns during compaction (refs #1217)
Pre-release verification
- Full pytest under
HERMES_HOMEisolation: 4861 passed, 8 skipped, 1 xfailed, 2 xpassed, 8 subtests passed in 145.96s on Python 3.11. - Browser API harness (port 8789): all 11 checks PASS.
node -constatic/messages.js: clean.- Stage diff: 13 files, +1216/-196.
- Opus advisor pass on stage-320: SHIP with three Medium-severity concerns (one absorbed in-release: #1861 restart-zeros-totals guard; two filed as follow-ups: #1873 worker-pool ops, #1889 regex sentinel).
- Pre-stamp re-fetch of all 6 PR heads: no contributor force-pushes during the Opus window.
Opus-absorbed fixes
#1861 defensive guard — api/streaming.py:2925-2934: added > 0 / is not None guards before overwriting s.input_tokens / s.output_tokens / s.estimated_cost so a rebuilt-from-cache-miss agent (post-restart or post-LRU-eviction) doesn't zero out persisted disk totals on its next turn. Test still passes.
Test count
4858 → 4872 collected, 4861 passing (+14 net new tests).