Skip to content

Command outcomes: leftovers of #1487 and #1544 (low items, full-window reads, other agents' process reads) #1879

Closed

Description

@devswha

Carried forward from #1487 and #1544, whose main points are fixed on branch fix/command-outcomes-followups (PR to follow). None of these gives a false "done".

From #1487 (LOW, unchanged)

  • Two identical sends with one echo seen: the first shows unknown, then flips to done (pinned by server/outcome-transcript.test.ts around 43).
  • Codex lost /compact completion; unverified whether Codex writes a record naming the command as its cause.
  • A second identical echo within 10 minutes makes a send ambiguous even after it reserved its own echo (fails safe).
  • readCommandTranscript reads transcripts raw, without transcriptStream's floor and segment handling (traced only).
  • Some tests count JSON.parse calls and mock paneTranscript; the Codex /compact test only checks that a removed path stays removed.

From #1487 MEDIUM 2, what is left

  • A changed poll no longer hashes twice, and the cache keeps a 64 KiB-chunk digest of the window instead of up to four raw 16 MiB windows (four 33 MiB pi transcripts cached: about 190 MiB held before, 65-95 MiB after). It still reads the whole window (up to 16 MiB) on each append, because every byte both reads share is checked against an in-place rewrite (pinned by validates the full overlapping tail within budget when the window slides in server/outcome-transcript-budget.test.ts). Reading only the appended bytes would need a decision to drop that guarantee. The parsed records themselves still hold whole message entries.

From #1544, what is left

  • A Chat poll now reads pane.process_info once and hands it to the Claude, pi, devin and unlabelled lookups. The Codex (codexProcessesOf via paneCodexHome), omp (ompHeldTranscript) and gjc (lookupNativeTranscript) lookups still ask herdr themselves, and an OmO pane's lookup (omoSessionForPane) asks for every pane of the snapshot.

Activity

  1. devswha commented on Oct 24, 2026

    @devswha
    OwnerAuthor

    One more carried forward from the review of the fix for #1487, reproduced by Codex on the fix and on its parent, so not introduced by it:

    • A send bound to a pi branch does not see its result after the session switches away and comes back. Bind a send on root -> a0 -> a1; a poll sees a new branch b0 (parent root); then /tree returns to a1 and the matching model_change is appended under it. The returning entry looks like a fresh fork, so the branch is named afresh and the send, bound to the first name, stays accepted until unknown (fails safe). Recovering it needs the branch name to be a function of the path rather than of the forks seen in the window, or the store to remember earlier branch names per path.
  2. devswha commented on Oct 25, 2026

    @devswha
    OwnerAuthor

    Two more from the merge pass review of #1936 (#1936 (comment)), merged as e41b860:

    • MEDIUM, test gap: no test covers the fork guard in runsOnFrom (server/conversation.ts, the forks.every((fork) => fork === head) term) for the case where the cached last entry has been cut away with the window's start. Removing that term keeps all 11 tests in server/outcome-transcript-budget.test.ts green. A test needs an append that both cuts the old leaf out of the window and adds a second fork after the window's first entry; the send bound to the old branch must not complete from the new one.
    • LOW, docs: docs/agent-commands.md lines 216-222 should say "except the last two".
  3. devswha commented on Oct 28, 2026

    @devswha
    OwnerAuthor

    #2146 fixes the pi branch return case (2026-10-24 comment), adds the runsOnFrom cut-window fork guard test and the "except the last two" wording (2026-10-25 comment).

    Still open here after it:

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions