mirror of
https://github.com/stablyai/orca.git
synced 2026-09-28 00:02:41 +00:00
The detector has been written five times and each version read the ready screen's text: a line starting with the model name, an account row carrying an `@`, the banner as an ordering anchor. The captured transcripts refute all three. Antigravity paints a block-glyph logo down the left margin, so the identity, model and path rows share their physical lines with it and none of them starts a line; `Gemini API key` has no `@` and `AGY_CLI_HIDE_ACCOUNT_INFO=1` deletes the row outright; and the banner is printed once and never reprinted. On real output the shipped rule was inverted — it refused a genuinely ready screen and accepted the live `/model` picker, whose own model rows do start lines. Replaying the captures through the main-process emulator at the grid they were recorded on shows what actually separates the two. The composer is a framed box — a pane-wide rule, then a row holding only the caret — and every dialog is drawn underneath it. On a ready screen nothing follows the caret row; on the picker nine dialog rows do, and on the palette seven. So the rule is positional and reads no product text at all: the last line with content trims to exactly `>`, and the line above it is the composer's rule. A bare `>` alone is not enough, which an earlier reading of the evidence got wrong: `/model` is drawn in place below the composer, so the idle composer's own bare `>` is still on screen while the picker owns it. The rule above the caret is what excludes that. Unknowns fail closed. The four uncaptured dialogs, and accept-edits and plan mode (where the composer carries a mode banner rather than a bare caret), all report not ready — a stalled wait rather than a prompt typed into a live dialog. Also fixes two replay faults that made the fixtures answer the wrong question: the pane now replays at the capture's recorded geometry, since Antigravity positions rows with absolute cursor moves and an 80-column emulator rebuilds a screen nobody saw; and the replay stops at the CLI's own teardown, which every capture contains because the recorder had to stop `agy` to end it. The full bytes still get one case, pinning that a pane whose `agy` has exited is refused. The hand-written five-line ready screen the first five attempts were tuned on is replaced by the real capture's shape, and the fixture asserting a caret above the model row is deleted: no real screen prints one. The emulator route was evaluated first and is documented in the evidence file. It is the right long-term layer but is not on the readiness path today — the only call site wired to it runs solely when the tail is empty — and moving it there changes readiness for every agent.