Skip to content

[Bug]: worker-start --agent omp fails at agent_readiness: OMP 18.4 idle title "π > dir" is not recognised as idle #24068

Description

@threelittlerunes

Summary

orca orchestration worker-start --agent omp intermittently or consistently fails with failedStage: agent_readiness (liveness missing_status), although OMP is up and idle at its prompt. Orca never pastes the task.

Versions

  • Orca 1.4.216 (Windows 11)
  • OMP (@oh-my-pi/pi-coding-agent) 18.4.4

Cause (as far as we can tell)

  • Orca's tui-idle title check accepts an OMP pane as idle only when the title starts with π - (constant next to ✳ / ◇ in the title classifier).
  • OMP 18.4 writes a run-state separator into its title (buildTerminalTitleWithState): idle is π > <label>, working is π ⠋ <label>, attention π ! <label>.
  • Orca's managed orca-titlebar-spinner.ts paints π - ... only on agent_start / agent_end / agent_settled, not on session_start. A freshly launched OMP therefore shows π > <dir> until its first turn, and readiness waits out the full timeout.

Evidence

  • Two consecutive managed starts in the same worktree (--timeout-ms 180000, then --retry-of) failed at agent_readiness; the screen showed OMP idle, tokens in 0.
  • terminal-history checkpoint.json lastTitle: failing pane π > qa-tri-14-omp-qa-routing; a pane that passed π - QA docs on OMP routing - tri-14-omp-qa-routing.
  • With both panes idle, orca terminal wait --for tui-idle --timeout-ms 20000 returned satisfied: true in 0 s on the π - pane and timeout on the π > pane.
  • Workaround confirmed: a user OMP extension that calls ctx.ui.setTitle('π - ' + <cwd basename>) on session_start (only when ORCA_PANE_KEY is set) made the next worker-start reach input_accepted in 5 s.

Expected

A fresh idle OMP pane is recognised as ready. Either:

  1. accept OMP's state-separator idle title (π > ) in the title classifier, or
  2. have the managed titlebar extension paint the idle title on session_start, or
  3. accept the managed status extension's hook post as readiness evidence for OMP.

Related: #22655 (same class of bug for Claude when the title is the only readiness signal), #13890, #16470.

Activity

  1. added a commit that references this issue on Oct 2, 2026
    c772f96
  2. ElvezPelvez commented on Oct 2, 2026

    @ElvezPelvez

    Additional measurements on macOS (Orca 1.4.218, OMP 18.4.12), in case they help #24111 / #24113 / #24196.

    1. Startup readiness has no hook signal, only the title. In the managed extension that Orca 1.4.218 ships (orca-agent-status.ts), the status session_start handler is empty (onStatus('session_start', () => {})). The second session_start handler only applies ORCA_OMP_PREFILL. So a freshly started OMP posts nothing until its first agent_start, and terminal wait --for tui-idle depends on the title alone. With OMP 18.4's π > <dir> / OMP > <dir> idle title it never settles:

    orca terminal create --worktree active --command "omp" --json      # idle at its prompt within seconds
    orca terminal wait --terminal <h> --for tui-idle --timeout-ms 60000 --json
    # -> timeout after 61 s, same with `omp --profile <p>`
    

    2. After a prompt, hook status mostly arrives, but not in every worktree. Loop: create an OMP terminal in a worktree, send Reply with exactly: ok, wait 20 s, then look for an agents[] entry whose paneKey starts with the terminal's tabId in orca worktree ps --json.

    worktree result
    main checkout (two repos), plain omp and omp --profile <p> entry present (omp, done)
    fresh linked worktrees: --no-parent, --parent-worktree, and --issue N --parent-worktree entry present
    linked worktree with an orchestration-dispatched OMP worker already running entry present
    another linked worktree with a dispatched OMP worker that had finished its work no entry, 2/2 runs

    In the failing worktree the probe's OMP status line showed (sub), and it did process the prompt. Separately, the dispatched OMP workers' own panes (started via terminal create --command "omp --profile <p> …", so --extension …/orca-agent-status.ts is injected, as ps confirms) never appear in agents[] while working, although the worktree's status reads working. If OMP treats those sessions as child sessions, the "exclude child extensions from root status reporting" part of #24196 may be the relevant change. That is an inference; we did not instrument the extension.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions