Skip to content

fix(neopi): preserve reader position through streamed completion #168

Open

Description

@PsychedelicShayna

Note

GPT-6 Astra on behalf of PsychedelicShayna

Observed behavior

During private native-workspace verification for #167, a reader who scrolled to the first message while an assistant response was visibly streaming was pulled near the end after completion, without further input. Stable finding: CORE-1 — observed once, unreproduced in the corrected diagnostic, cause unproven, not fixed.

The failing clean build used NeoCode 39579c45638afe36858fe2fea2d1ba21443e1848, with bundled NeoPi dcc5fed8eb9a9b4dcac3a15eec106c27b540720c / SHA-256 134a49efefd126ede6e1299daac4305ed5f4d39790743bf151dd59ae50d4e22d. The main window was 1600×1000, with four preceding conversation rows. “395” identifies a source revision, not a 395px viewport.

Terra HIGH captured an incomplete second item while Working (16-partial-stream), then the original DRAFT_SHARED_ALPHA row and scrollbar thumb at the top while Working (17-reader-up). With no subsequent input, 18-reader-pulled shows Ready, items 3–10 and the thumb near the bottom. Main and independent Opus 5.5 HIGH both viewed those captures; the no-input interval is recorded by Terra.

Exact submitted prompt:

Explain ten practical ways cities can improve public spaces. Give each a short paragraph, then end with STREAM_FINISHED. Do not use tools.

Diagnostic evidence and limits

  • Earlier private instrumented trials did not reproduce the pull, but used an 800px-wide window and additional preceding history. They are not equivalent reproductions of the original layout. One earlier trial also wheeled before a new assistant body existed; Working alone was insufficient.
  • The corrected original-branch trial restored the four preceding rows using native Session tree navigation to assistant entry d2e5290f, preserved later branches, used 1600×1000 and the exact prompt, and wheeled only after new incomplete body text appeared. At 13:16 UTC on 2026-10-29, the trace records the wheel and its immediate cancellation write, then live-row growth from 292.875 to 922.25 pixels for 17.6 seconds. The viewport remained at the top through Ready; no later follow, maintain, adjust or padding write explained the historical failure. This is a strong non-reproduction, not a fix or a causal account.
  • Instrumented source was private diagnostic patch SHA-256 7af96e34cac0fe867559a704b597779c59b1fffbed82264814fde94d18bf3f1c over the same clean source/native pin. Product probes were removed before the next shipping build. Instrumentation may perturb scheduling; its effect is unmeasured.
  • Current refactor(neopi): make native sessions the client authority #167 head 8ac8171d095a08735670d087891cdc1ec94cf32a repairs browser-sheet layering and contains no scroll change. Independent review retains CORE-1 as unresolved.

Private reports, screenshots and timestamped write logs are retained by the maintainer. They are not publicly uploaded; these filenames identify evidence, not public links. No user journal was rewritten and no native cause has been established.

Desired behavior and acceptance

  • Deliberate upward navigation during a streamed response remains respected through later row growth, durable replacement and completion.
  • A failing interval identifies the first unexpected scroll-top change and its initiating programmatic write or layout event before choosing a repair.
  • Any repair is verified through the actual native transcript, including continuation after the reader deliberately leaves the end. Passing unrelated commands or later non-reproductions do not establish a fix.

Do not apply speculative follow/MVCP changes and call this resolved. The two commissioned attempts are complete and recorded in the bounded-attempt evidence comment: both were non-reproductions, not fixes. No further scroll experiments are commissioned.

Native core accepted with this issue open

On 2026-10-29, Saturn reported the owner's delegated decision: “use your best judgment, I trust you.” Saturn selected (a): accept the native core with CORE-1 tracked and open. This clears the core gate for the staged R1 design build and SQL cutover, with a Terra walkthrough followed by incremental independent Opus review per stage.

This decision does not change the evidence: CORE-1 was observed once, remains unreproduced at the target failure interval, its cause is unproven, and it is not fixed. The acceptance checkboxes above remain unchecked. Mini-player return behavior still awaits the owner's intent and is not decided here.

Earlier coordination instructions — retained as history

Also file CORE-1 as a tracked issue now with its evidence and both diagnostic runs, so whichever way she decides there's a record.

Saturn: one clarification on (b). It's provisional, the default hold while she's away from work, not a closed decision. The trace doesn't foreclose anything: if she chooses (a) when she reads the morning report, the gate opens with CORE-1 tracked, and R1/SQL proceed. Don't treat (b) as her ruling.

Activity

  1. PsychedelicShayna commented on Oct 29, 2026

    @PsychedelicShayna
    OwnerAuthor

    Note

    GPT-6 Astra on behalf of PsychedelicShayna

    Two bounded attempts completed — CORE-1 remains unresolved

    Both newly commissioned Terra HIGH attempts used the preserved instrumented 39579c diagnostic build, not clean 8ac817. Native pin remained dcc5fed8eb / SHA134a49ef. Main was 1600×1000, four original preceding rows restored through native tree navigation, panels closed, Debug off, Baseline(both), exact original prompt. Both wheels occurred during visible incomplete item 3. Main viewed each partial, Working/top and Ready capture and parsed every trace record in both measured intervals.

    Attempt Wheel start UTC Top first recorded UTC Ready UTC Recorded DOM samples from top through settled Live-tail growth after wheel
    1 15:09:58.414 15:09:58.563890 15:10:15.902508 212, all scrollTop=0 22 live-key size callbacks, 349→899.5px over17.304s
    2 15:11:14.450 15:11:14.577463 15:11:31.191669 221, all scrollTop=0 23 live-key size callbacks,315.875→899.5px over16.463s

    All timestamps are 2026-10-29 UTC; Electron's log clock was UTC−3. Viewport height remained686px. Both completed with scrollHeight1653px, scrollTop0 and distanceFromEnd967px. No post-top programmatic scrollTo, maintain, adjust or padding write was recorded. The native live-to-durable replacement and Ready transition also recorded top0. This trace evidence extends Terra's sampled-frame observation; it is not a claim of continuous video coverage or a fix.

    Small near-end write observed in attempt1

    The first wheel's cancel wrote the current offset369px immediately (desktop.log4961–4963). An already-scheduled LegendList maintain callback then wrote383px at15:09:58.435531 (4970–4972): a14px write toward the end while the wheel gesture was still beginning and the reader was still within its maintain threshold. Subsequent wheel events reached top0 by15:09:58.563890 and remained there. Attempt2 had only the immediate cancellation write at348px (5851–5853).

    That first-gesture write is real, with a recorded caller, but does not reproduce or explain the original delayed relocation after the reader had reached old history. No speculative scroll change was made on that basis.

    Raw measured ranges: desktop.log4958–5238 and5849–6125. Private reports and screenshots: evidence-bounded-two. No further attempts are commissioned. CORE-1 remains observed once, unreproduced at the target failure interval, cause unproven and unfixed. The core gate stays pending; Saturn can present acceptance-with-this-issue-open to the owner. This comment is not a waiver and does not authorize R1 or SQL cutover.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds-triageNot yet triagedpriority: p0Blocks current work or handles an active incident

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions