Repository navigation
fix(chat): deliver a mid-turn follow-up into the running turn as a steer - #1827
Conversation
A line typed in a Bot's own chat while its turn runs was sent with mode: 'queue', so the host parked it as the next queued turn and the correction the user typed reached the work only after it finished. The own-chat send now asks turnRunning(sessionId): a running turn takes the line at its next step (mode: 'steer'), and an idle chat still opens one turn through the 1500 ms settle window, so #642's burst path is unchanged. The held lines of a window that a turn interrupts steer too, which keeps arrival order into the same run. Fixes #707. Red-first: the three new cases in core/test/settle.test.js fail on the base blob of core/src/host/channel.js and pass at the tip. Docs: docs/subsystems/core-host.md §A burst of the user's lines (#642).
|
Verdict: PASS at fe0804f Ran at this tip: Red first holds. With The change is what it claims. Scope and consistency: the compare API is ahead 1 / behind 0 from base CI at this tip: all 15 check-runs are terminal; Tier T3 (the path One residual, not a refusal: the check-then-prompt window means a turn that ends between |
Written-by: Claim 57ac
Fixes #707
Owner: Chief
Reviewer: Reviewer
Tip SHA: fe0804f
Base: e809aee
Docs: docs/subsystems/core-host.md §A burst of the user's lines (#642) — records the steer admission.
mode: 'queue', so the host parked it as a separate queued turn: the correction reached the work only after it finished (#707).channel.jsown-chatsendhardcodedmode: 'queue'for every line that was not held by the #642 settle window.mode: turnRunning(sessionId) ? 'steer' : 'queue'(admissionhelper), and the held lines of a window that a turn interrupts steer too, so the running turn reads all of them at its next step in arrival order.SETTLE_MS(1500 ms) and opens exactly one turn; #642's three-line window and its retry path are untouched, and a group room still relays at once.core/test/settle.test.js: the prompt recorder now keepsmode. Three new cases — mid-turn send issteerand opens no second turn, held lines steer ahead of the new line in arrival order, and a line sent as the turn ends is neither lost nor opened twice — plus amode: 'queue'assertion on the #642 burst.core/src/host/channel.jsis on the T3 path list; PASS at tip + greentests-ok.Verification at the tip
Tip SHA:
fe0804fcf289359801741fa1dbb6b09e39d6378cRan:
node --test test/settle.test.js(core,TZ=UTC) — 10/10 pass at the tip.core/src/host/channel.jsreplaced by the base blob — 7 pass, 3 fail (the three Follow-up message typed while a Bot is working is postponed instead of being delivered at its next step #707 cases), then green again with the tip restored.node scripts/ds-bot-patches.mjs check—ok 10 patches apply cleanly in order,ok core/ equals ds-bot/ + patches/ds-bot/.npm run lintincore/— oxlint 0 errors (71 pre-existing warnings).Not run (and why):
npm run verifyend to end: the root and plugin workspaces are not installed in this workspace; CI'stests-okcovers them.arch-docs: it diffs againstorigin/mainand this box has no git; the subsystem doc is updated in this diff.Not run:
bashdrawing a steering bubble) — needs a live Desktop/bench session.Checkpoint
{ "pr": 1827, "claim": "Chief", "issue": 707, "summary": "A line typed in a Bot's own chat while its turn runs now reaches that turn at its next step instead of waiting as a queued turn: the own-chat send asks turnRunning(sessionId) and passes mode steer, queue only when idle. The held lines of a window that a turn interrupts steer too, so arrival order is kept into the same run, and #642's 1500 ms idle burst still opens exactly one turn. Tests record the prompt mode and cover the three cases; the subsystem doc records the admission.", "files": ["core/src/host/channel.js", "core/test/settle.test.js", "docs/subsystems/core-host.md", "patches/ds-bot/0005-social-seams.patch", "patches/ds-bot/files/test/settle.test.js", "changelog.d/707-mid-turn-steer.fixed.md"], "checks": { "ran": "cd core && TZ=UTC node --test test/settle.test.js && node ../scripts/ds-bot-patches.mjs check", "result": "green", "at": "fe0804fcf289359801741fa1dbb6b09e39d6378c" }, "next": "Reviewer: PASS at the tip (T3), then enqueue through the merge queue. Optional human bench walk: follow-up during a long bash draws a steering bubble." }