You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Command outcomes: leftovers of #1487 and #1544 (low items, full-window reads, other agents' process reads) #1879
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".
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.
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.
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.
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".
#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:
New known limit, as on main: a pi-family send the agent dropped without writing a record takes the record of a later identical send on the same branch, and that later send ends as unknown. Codex reproduced it during fix(outcome): keep a pi send's branch when the session comes back to it (#1879) #2146's review; the same sequence with no branch switch does the same on main (send-order claiming). Fixing it needs send-level ambiguity for pi-family records, which carry no echo to tell two equal sends apart. Documented in docs/agent-commands.md.
Command outcomes: one process read per Chat poll, not four #1544: the Codex (codexProcessesOf via paneCodexHome), omp (ompHeldTranscript) and gjc (lookupNativeTranscript) lookups still ask herdr themselves, and omoSessionForPane asks for every pane of the snapshot.
Activity
devswha commentedon Oct 24, 2026
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:
root -> a0 -> a1; a poll sees a new branchb0 (parent root); then/treereturns toa1and the matchingmodel_changeis 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, staysaccepteduntilunknown(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.fix(outcome): one process read per Chat poll, the stale-session minut…
devswha commentedon Oct 25, 2026
Two more from the merge pass review of #1936 (#1936 (comment)), merged as e41b860:
runsOnFrom(server/conversation.ts, theforks.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 inserver/outcome-transcript-budget.test.tsgreen. 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.docs/agent-commands.mdlines 216-222 should say "except the last two".devswha commentedon Oct 28, 2026
#2146 fixes the pi branch return case (2026-10-24 comment), adds the
runsOnFromcut-window fork guard test and the "except the last two" wording (2026-10-25 comment).Still open here after it:
unknown. Codex reproduced it during fix(outcome): keep a pi send's branch when the session comes back to it (#1879) #2146's review; the same sequence with no branch switch does the same on main (send-order claiming). Fixing it needs send-level ambiguity for pi-family records, which carry no echo to tell two equal sends apart. Documented indocs/agent-commands.md.codexProcessesOfviapaneCodexHome), omp (ompHeldTranscript) and gjc (lookupNativeTranscript) lookups still ask herdr themselves, andomoSessionForPaneasks for every pane of the snapshot.fix(outcome): keep a pi send's branch when the session comes back to …
fix(outcome): reuse the poll's process read in Codex, omp and gjc loo…