Confirmed on current main. This is a layout bug in the composer task list, not an OpenCode timing bug. Any provider that emits turn.plan.updated can hit it; the elapsed time is computed in the client from plan activity timestamps.
The duration in your screenshot (1h 16m 16s) is what formatDuration returns for a step a little over an hour. That string is drawn in a fixed w-12 box (3rem, 48px at the default root font size) at 10px with no whitespace-nowrap:
w-12 was set in #12165 so short labels such as 59m 59s share a right edge. Hour formatting from #9894 was already in place, and a three-part hour label does not fit that box. At Inter 10px with tabular figures, 1h 16m 16s is about 58px, so it breaks on the spaces inside the 48px span. 1h and 1h 16m still fit, which is why this only shows up on long steps. The row is items-start, so the check stays on the first line while the time wraps under it.
The row grid already allows the fix you described. The actions column is auto and the title column is minmax(0,1fr), so the time can grow left into the empty title space:
https://github.com/pingdotgg/t3code/blob/main/apps/web/src/components/chat/ComposerBanner.tsx#L190
Drop the fixed width in favor of min-w-12 shrink-0 whitespace-nowrap on that duration span. Short times stay aligned; longer ones stay on one line. Desktop uses this same web UI. Mobile does not render this column.