Skip to content

Release BI (stage-378): v0.51.85 — 3-PR review-bypass batch — workspace-prefix display leakage fix + release-tag update banner + Slice 3a cancel-control gate RFC#2478

Merged
nesquena-hermes merged 9 commits into
masterfrom
stage-378
May 17, 2026
Merged

Conversation

@nesquena-hermes
Copy link
Copy Markdown
Collaborator

stage-378 — Release BI / v0.51.85 — 3-PR review-bypass batch

Constituents (all nesquena APPROVED prior to staging)

PR Author Type LOC Approved at
#2145 @swftwolfzyq Fix +163/-11 2026-05-17T17:27
#2146 @swftwolfzyq Fix +193/-19 2026-05-17T17:23
#2469 @Michaelyklam Documentation +65/-3 2026-05-17T17:28

Total stage diff: 8 files changed, 421 insertions(+), 33 deletions(-)

Theme of the batch

Three tightly scoped contributor fixes — workspace-prefix display leakage in the streaming dedupe path (#2145, sensitive seam), release-tag-based update banner with bounded dirty-probe (#2146), and a docs-only Slice 3a cancel-control gate update to the runtime-adapter RFC (#2469).

Verification

Pre-Opus gate (all clean)

  • node -c static/ui.js: PASS
  • ast.parse on api/streaming.py + api/updates.py: PASS
  • Merge-marker grep (^<<<<<<<|^>>>>>>>|^=======): clean
  • CHANGELOG placeholder grep: clean
  • Agent self-verify on api/streaming.py change (sensitive path):
    • _looks_like_current_user_turn is exact-match-after-strip (no substring fuzz)
    • _assistant_reply_added_after_current_turn slices from current-turn position; falls back to full result_messages when _find_current_user_turn returns None
    • All existing identity-based merge logic preserved as OR-clauses

pytest (full suite)

5866 passed, 6 skipped, 3 xpassed, 8 subtests passed in 123.47s

Opus advisor sanity check

Decision: SHIP

The only sensitive-path change (#2145) is conservative — exact-match gating with an empty-needle guard, additive OR-clauses preserving prior identity logic, and a new detector strictly better than the length-delta it replaces. updates.py is well-bounded and falls back cleanly. RFC is docs-only with explicit non-goals. All 104 affected tests pass.

Opus specifically verified:

  • _looks_like_current_user_turn empty-needle guard at line 1006 prevents the empty-msg_text false positive
  • _assistant_reply_added_after_current_turn not m.get('_error') invariant matches synthetic error payloads filtered elsewhere
  • No cross-interaction with Recover journal output after core transcript sync #2439's _run_journal_has_visible_output — separate code paths, different fields
  • Dirty-probe bound (timeout=1) on diff-index --quiet: timeout → "", clean → "", dirty → "-dirty"; verified by test_dirty_check_timeout_does_not_hide_base_version
  • Release-fallback path (_release_gap returns 0 when current==latest) verified by test_release_check_ignores_post_release_branch_commits

Non-blocking follow-up Opus flagged: the self-heal retry path at api/streaming.py:4095 still uses the old _has_new_assistant_reply length-delta; not a regression because of the or _token_sent clause, but worth unifying with the primary path in a follow-up.

Browser sanity checks (port 8789 stage server)

All 11 API checks PASS — /health, /, /static/*, /api/settings, POST /api/session/new, GET /api/session, POST /api/chat/start, GET /api/chat/stream/status, POST /api/session/delete.

Not in this batch (intentionally)

Closes: PR #2145 fixes silent failures in the workspace-prefix display path; PR #2146 cleans up release-tag detection; PR #2469 advances the runtime-adapter RFC.

@nesquena-hermes nesquena-hermes merged commit f1d399b into master May 17, 2026
3 checks passed
@nesquena-hermes nesquena-hermes deleted the stage-378 branch May 17, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants