mirror of
https://github.com/stablyai/orca.git
synced 2026-10-23 08:03:39 +00:00
Three seams behind "the compaction and notification rows moved above the message I'd already sent". - The reducer pinned `sequence` across revisions but let `observedAt` advance, and clients sort the timeline by that timestamp. Codex echoing a send revises the submission row, so the user's own bubble jumped below every row that landed while the turn was in flight. Pin `observedAt` with `sequence`: a revision refreshes content, never position. - `item:contextCompaction` reached the timeline as a raw `codex · item:<type>` row because the frame catalog is keyed by notification METHOD and never matches item-form kinds. Codex item types now get their own dispositions; compaction is chrome, matching the `thread/compacted` notification it duplicates. Undispositioned item types still fall through visibly. - The generic fallback row named the opcode and nothing else, so a real warning read as `codex · notification:warning`. It now leads with the provider's own sentence when the payload carries one, with the raw frame still behind the row's disclosure.