Issue 19992 — AFTER real-app runtime evidence, 2026-10-24 UTC Issue: https://git.cafe/pingdotgg/t3code/issues/19992 Head: 0f25149cef3af3bac891efc80426b357caf580e4; base: a46f80ee28. Worktree: /home/ubuntu/wt/issue-19992. Git status remained clean. Classification: SERVER ONLY; 0/0 changed render rows. No render captures required. No PR, push, merge, implementation/test edits, public forge comments, new server, or browser were made by this evidence agent. Runtime setup and steps 1. Read worktree AGENTS.md, ghdrop skill, supplied matrix and before transcript. 2. Confirmed /proc/2412879/cwd = /home/ubuntu/wt/issue-19992/apps/server; ss showed that PID owned port 14120. Lead-owned web port was 6080. 3. Enabled Node inspector with SIGUSR1 to that explicit confirmed PID; attached websocket CDP to localhost:9229. Runtime script was the worktree's apps/server/src/orchestration-v2/assistantStreaming.ts, not a fixture. 4. Installed false-returning conditional breakpoints/logpoints at source lines 91 (prior scan), 95 (newline search count), 100 (completed-line parse count), 142 (result scan), 200 (filter event/mode/prior delivery), 193 (final pass-through). Second/third windows also observed line 206 (ready delivery branch). Counts, not breakpoint durations, are evidence. No CPU profile was taken. 5. There were TWO active real runs with the same long-fence prompt. An additional line-201 logpoint identified streams in window 1. Only the run requested at 2026-10-24T12:55:19.477Z is included in published per-update measurements. Earlier unkeyed observations and the other run are excluded from totals. Provider/model independently confirmed from read-only isolated dev DB: Codex / gpt-6-astra. Medium reasoning is lead-reported composer selection, not independently established by this inspector capture. 6. Observed actual turn_item.updated events, paragraph mode, streaming=true. Prompt: output one fenced TypeScript block, 1500 ordered export const rowNNNN lines, label "streaming performance sample", no tools or files. 7. Three bounded capture windows; breakpoints removed and websocket closed at each window boundary. Windows have gaps and are NOT a full-run total. Initial scan occurred before attachment and was NOT measured. Requested-run measurements (within each window updates are consecutive) Window 1: 994 identified updates; length 37,418 -> 71,475; growth 34,057 chars; 454 new newline characters / completed-line parses; 1,448 searches. Window 2: 331 updates; length 82,969 -> 92,740; growth 9,771 chars; 128 new newline characters / completed-line parses; 459 searches. Window 3: 463 updates; length 100,227 -> 112,910; growth 12,683 chars; 167 new newline characters / completed-line parses; 630 searches. Combined observed windows only: 1,788 updates, 56,511 chars growth, 749 completed-line parses, 2,537 newline searches = 749 + 1,788. Three consecutive window-1 snapshots, inside the same open ``` fence: Incoming length 37,469; prior length 37,418; old lineStart/newlineSearchFrom 37,406/37,418 -> new 37,406/37,469; searches 1; completed-line parses 0. Incoming length 37,503; prior length 37,469; old lineStart/newlineSearchFrom 37,406/37,469 -> new 37,481/37,503; searches 2; completed-line parses 1. Incoming length 37,520; prior length 37,503; old lineStart/newlineSearchFrom 37,481/37,503 -> new 37,481/37,520; searches 1; completed-line parses 0. All three: openFence={marker:"```",indent:0}; boundary=-1; previousDeliveredLength=null; turn_item.updated; paragraph; streaming=true. For EVERY published update, summary driver verified against final expected text: - append extends prior text; - old newlineSearchFrom equals prior text length; - next newlineSearchFrom equals new text length; - each next old length/lineStart equals previous new state within its window; - completed-line parse count equals newline count in newly appended characters; - searches = completed-line parses + one unsuccessful search per update; - boundary stays -1 and prior delivery stays null while this fence is open. This supports retained incremental line parsing without re-parsing old complete lines over observed appends. It does not establish total CPU complexity. Final delivery and fence closure Requested run completed. Both message.updated and turn_item.updated final events were observed at the non-streaming pass-through return, with streaming=false. Each carries EXACTLY 112,910 characters: one opening ```typescript fence, 1500 ordered lines row0001 through row1500 with exact IDs/labels, closing ```. 1502 logical lines. No trailing newline. The read-only persisted assistant-message projection of the requested 12:55:19 run matches the exact expected text, and its run status is completed. SHA-256 UTF-8: 6ab3be7d328a08a880d883f8c7386636b2a9d21f8d82a66bd2ab34a644264167 The other run also completed with the same exact final text, but is not counted. The actual provider did NOT terminate its closing fence with a newline, so no streaming ready boundary through a closing-fence newline was observed. Supplemental INSPECTOR-ONLY PROBE, explicitly NOT provider ingress: At requested-run final event, before keyed state deletion, called actual module advanceScan(retainedScan, realFinalText + '\n'). No app source or persisted state was changed; advanceScan clones retained state. Old: text length 112,910, lineStart 112,907, newlineSearchFrom 112,910, fence open, boundary=-1. New: length 112,911, lineStart=112,911, newlineSearchFrom=112,911, openFence=null, boundary=112,911. This confirms the newline closure branch in live runtime with retained real-stream state, but does not substitute for an actual provider streaming event carrying that newline. The actual no-newline final path successfully delivered the complete, correctly closed fenced text. Limits / unverified claims - Initial scan and gaps between windows not measured. - Streaming newline-terminated fence closure not observed in provider ingress; only the explicitly labelled live-runtime probe exercises that branch. - Medium reasoning selection is supplied by lead, not independently captured. - No CPU improvement, constant per-update work, or strict linear-total claim. text.startsWith(previous.text) remains O(previous text length) per update; slicing/comparison and replacement rescans remain. - No new tests were run in this capture task; no UI/client/connection-mode matrix was exercised. Shared server path is the only runtime evidence here. Shutdown / operational failure All capture logpoints were removed, capture sessions closed, and temporary runtime evidence globals deleted. Attempted inspector shutdown with scheduled node:inspector.close(). That call hung awaiting client disconnect. Interrupted my own inspector-client retained exec terminal session with Ctrl-C (exit 130). Afterward /proc/2412879 and listeners 14120/9229 were absent; web 6080 remained. The server exited during inspector cleanup; causation is not established by this capture. This failed the requested leave-server-running invariant. No server restart was attempted because the lead owns it and explicitly forbade starting servers. Lead must restore the server if needed. No deliberate server kill was issued. The originally written close driver was corrected to close its websocket before inspector.close executes; that correction was not rerun on a server. Sanitization and artifacts Published numeric updates use alias requested-run instead of native/thread IDs. No raw CPU profile, auth/session token, environment dump, settings, private conversation text, or DB snapshot is uploaded. Final content was validated against the public deterministic 1500-row prompt; only its counts and digest are published. Drivers contain static code and local paths only. Scratch removed after uploads. FRICTION category|what|avoidance Evidence isolation|Two simultaneous identical provider runs interleaved updates|Key streams and match final native item to read-only run timestamp; publish requested run only. Instrumentation|Initial next-window driver had an unescaped backtick template syntax error and never attached|Replaced prefix check with charCodeAt(0); syntax-check drivers before attaching. Boundary coverage|Provider final closing fence lacked trailing newline|Keep real final delivery proof; label appended-newline inspector probe separately; request another provider run with trailing content if actual newline-ingress proof is mandatory. Shutdown|inspector.close hung and server was absent after client terminal interruption|Disconnect debugger websocket before scheduling inspector close; coordinate listener shutdown with lead, avoid synchronous close while attached. Tool access|Web fetch tool could not read supplied artifact URLs|Read supplied files with curl; no browser started.