diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b392dc3..ce473743 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Documentation + +- Document the #1925 runtime-adapter gate update: Slice 1 run-journal replay has now passed a 100-trial synthetic replay/restart validation pass on current `origin/master`, #2313's selected-session chat SSE cap is shipped, and Slice 2 is ready for a reversible adapter-seam planning PR without moving execution ownership yet. + ## [v0.51.78] — 2026-05-16 — Release BB (stage-371 — stuck-PR sweep salvage — RTL chat + ambient quota chip with composer-clutter gate) ### Added diff --git a/docs/rfcs/hermes-run-adapter-contract.md b/docs/rfcs/hermes-run-adapter-contract.md index 1463d4fa..80916243 100644 --- a/docs/rfcs/hermes-run-adapter-contract.md +++ b/docs/rfcs/hermes-run-adapter-contract.md @@ -4,7 +4,7 @@ - **Author:** @Michaelyklam - **Updated by:** @franksong2702 - **Created:** 2026-05-11 -- **Revised:** 2026-05-14 +- **Revised:** 2026-05-16 - **Tracking issue:** [#1925](https://github.com/nesquena/hermes-webui/issues/1925) ## Credit and Scope @@ -49,6 +49,29 @@ The immediate goal is not to build a sidecar. The immediate goal is to define th browser contract, classify current runtime state, and gate the first reversible journal slice. +## Current Gate State — 2026-05-16 + +Slice 1 is now past the first active validation gate: + +- #2283 shipped the run-journal replay layer in v0.51.71. +- A 100-trial synthetic replay/restart validation pass against current + `origin/master` passed on 2026-05-16. The matrix covered completed-run replay, + interrupted stale-pending recovery, fresh-pending grace handling, StreamChannel + reconnect ordering, duplicate-prevention merge behavior, many-session recovery, + large-journal derivation, and stream-to-turn-id lifecycle linking. +- The focused regression set + `tests/test_turn_journal.py tests/test_turn_journal_lifecycle.py tests/test_stale_stream_pending_recovery.py` + also passed on the same worktree. +- #2393, shipped through v0.51.76, capped live chat token SSE transports to the + selected conversation pane. Background sessions now rely on existing + status/replay/reattach behavior instead of keeping one live `/api/chat/stream` + EventSource per active session. + +This evidence does not prove the future runner/sidecar path. It does mean the +project should stop treating Slice 1 as purely passive observation and can move to +Slice 2 planning: introduce the adapter seam over the still-legacy journaled path +without moving execution ownership yet. + ## Goals - Preserve the current rich WebUI workbench experience. @@ -269,6 +292,10 @@ Success criterion: ### Slice 2: Adapter interface over the journaled legacy path +Status as of 2026-05-16: ready for a planning/adapter-seam PR after the active +Slice 1 validation pass and the #2313 selected-session stream cap. Slice 2 should +still be a reversible boundary change, not a sidecar or execution-ownership move. + Scope: - introduce the `RuntimeAdapter` interface only after Slice 1 proves replay,