Repository navigation
feat(service,host): a task's pages and calls follow over the live layer - #3757
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
luke-agent
Bot
force-pushed
the
luke/neon-realtime-planning-hold
branch
from
October 19, 2026 18:52
fbe4b51 to
fc96193
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-task-record
branch
from
October 19, 2026 18:52
e0432ec to
09c7e53
Compare
This was referenced Oct 19, 2026
luke-agent
Bot
force-pushed
the
luke/neon-realtime-planning-hold
branch
from
October 20, 2026 01:36
fc96193 to
373ae87
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-task-record
branch
from
October 20, 2026 01:36
09c7e53 to
22139b5
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-planning-hold
branch
from
October 20, 2026 02:06
373ae87 to
90a213c
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-task-record
branch
from
October 20, 2026 02:06
22139b5 to
2836185
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-planning-hold
branch
from
October 20, 2026 02:43
90a213c to
ce92920
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-task-record
branch
from
October 20, 2026 02:45
2836185 to
11af552
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-task-record
branch
from
October 20, 2026 23:31
cc26ed9 to
cb54b5d
Compare
luke-agent
Bot
changed the base branch from
luke/neon-realtime-planning-hold
to
luke/live-same-user
October 20, 2026 23:31
luke-agent
Bot
force-pushed
the
luke/neon-realtime-task-record
branch
from
October 20, 2026 23:32
cb54b5d to
bfde059
Compare
The service seals where an open task's pages and calls stand at GET /api/live/task-record?id=&userId= (live.taskRecord on the oRPC live contract): one statement a part, each a mark and none of the words it marks, the pages at their newest version and each call with words by its end, its metering, its last fragment and the rows the voice wrote for it, joined through the account's membership of the task's workspace and held to its GitHub access, as the board's live read is. It is held to `sameUser`, and polled or sealed as every live read is. The host follows it as it follows the board, the two sharing one follow's seal, poll, and backoff: the pages are read again once their mark moves, and the transcript and the work once an ended call's does. The call's activity no longer reads the pages, and its end no longer reads the transcript and the work, though it still wakes the conversation. The record reaches every window, a web tab's included, through the tasks view. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
… settle The calls mark moves with the call's own rows, not with the turns and journals the Work tab reads, so a turn or worker that writes after the call closed would leave the work stale. The call's end reads the work as main does, now and again after `TRANSCRIPT_SETTLE`; the record follow reads only the transcript. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
luke-agent
Bot
force-pushed
the
luke/neon-realtime-task-record
branch
from
October 20, 2026 23:57
f2aca7e to
08a7be1
Compare
This was referenced Oct 21, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was asked
Move an open task's pages and calls onto the central live layer (
liveRowsand the sealed live procedures), the same way #4116 moved the board. The panel then reads them again when their rows move, instead of when a call's activity or end suggests they might have. The board half and the txid confirmation from earlier versions of this PR are dropped.Service
packages/service/src/tasks/task-record-live.tshas two deterministic statements, one per part:closedAt,closeReason,usage,model, last segmentseq, and the count of spoken rows the voice wrote for it.memberthrough the task's workspace and is held totaskSeenBy, asboardLiveStatementis.live.taskRecord(GET /api/live/task-record?id=&userId=) sits besidelive.taskBoardincontract/live.tsandlive-procedures.ts:sameUserguards it.after) as every live read is.client.recordLive(taskId, userId, poll, after).Host
task-record-follow.tsdecodes the deliveries and answers the parts each one moved. A move of the pages reads the pages; a move of an ended call's row reads the transcript. A standing call's words read nothing. The first delivery moves every part.compose-tasks.ts,followBoard's seal, poll, backoff and signed-out handling become onefollowLive.followBoardand the newfollowRecordboth use it, andopenRecordandrecordFollowmirror the board's.showActivityno longer reads the pages.callEndedno longer reads the transcript, but it still reads the work and wakes the conversation, once now and once afterTRANSCRIPT_SETTLE. The calls mark doesn't move with the turns and journals the Work tab reads, and main's conversation read still parks.TasksViewfields, which reach every window, web tabs included, through the app-state push.Tests
task-record-live.test.ts: each part moves exactly when its held read (listPages,readTranscript) would answer something new, and a stranger reads no rows.live-procedures.test.ts: the record is sealed a part each for the owner, not found for a stranger, and signed out for another account.live-statements.test.ts: both statements call only immutable functions and seal through Neon's Drizzle adapter.compose-tasks.test.ts: the pages are read on their mark and the transcript on an ended call's mark; nothing is read on the call's activity; the call's end reads the work twice; and the subscriptions go when the task is closed.Checks run locally
pnpm check:affectedis optional now, so I ran its pieces:repository-checks.shboard-follow,live-followandtask-client