Several places in the frontend compare message IDs with > / >= operators to determine ordering (session restore, fork boundaries, timeline queuing). This assumes IDs sort lexicographically in creation order, which breaks when messages arrive with clock skew.
Additionally, shouldExitLoop in prompt.ts doesn't guard against undefined parentID, which can cause the prompt loop to continue indefinitely instead of exiting.
Affected areas:
session.tsx — restore/fork cutoff logic
message-timeline.tsx — queued message filtering
prompt.ts — shouldExitLoop parentID comparison
session-turn.tsx — message boundary display
Several places in the frontend compare message IDs with
>/>=operators to determine ordering (session restore, fork boundaries, timeline queuing). This assumes IDs sort lexicographically in creation order, which breaks when messages arrive with clock skew.Additionally,
shouldExitLoopinprompt.tsdoesn't guard againstundefinedparentID, which can cause the prompt loop to continue indefinitely instead of exiting.Affected areas:
session.tsx— restore/fork cutoff logicmessage-timeline.tsx— queued message filteringprompt.ts—shouldExitLoopparentID comparisonsession-turn.tsx— message boundary display