mirror of
https://github.com/stablyai/orca.git
synced 2026-09-27 16:02:35 +00:00
Attempt six shipped with three rules, two open captures and one mutation-dead clause. All three are addressed against a live `agy` — which self-updated to banner 1.2.1 mid-investigation, so the whole rule set is now confirmed across a version bump it did not know about. **The rule clause decided nothing.** Deleting "the line above the caret is a run of dashes" failed no test: every capture ending on a bare `>` also had the composer rule above it. `antigravity-composer-multiline-unsent.txt` is the state that separates them — `abc` typed, then shift+enter, leaving an empty second composer row, so the tail ends on a bare `>` under `> abc`. Without the clause that reads ready, and a delivered prompt is appended to the operator's own text: a mis-send, not a wedge. The `>= 8` floor is still mutation-dead and is now documented as unpinned rather than defended. **The residual window is a capture, not an argument.** Chunk-level timing puts it at ~116 ms between a frame park and the first spinner tick. `antigravity-busy-residual-window.txt` lands in it. Its sibling, `...-no-spinner.txt`, kills the proposed braille clause outright rather than merely subsuming it: a turn's first frame draws the spinner row with no glyph, so that capture carries zero braille codepoints while the turn is live, and even an unbounded braille scan would call it ready. The gap stays pinned and open. **A finished turn was mischaracterised, and the capture wins.** The refusal has nothing to do with the turn ending in an error. `agy` ends a turn on one of two frames, and the spinner-erase touch-up walks back down over the composer box with bare newlines without redrawing it, so the retained tail loses rows the real terminal still holds. Twelve real turns ended that way 3 times and on a full repaint 9 times; neither state is transient. `antigravity-turn-ended-composer-repainted.txt` is committed as the pair, because either capture alone is misleading — the same trap §8 already records, hit again. Also adds the adversarial matrix run against the live binary: seven dialogs, four grid widths, type-ahead, and pane content carrying box-drawing glyphs or the banner string. Line-wrapping does not split the rule, because `agy` draws it at the grid width; below ~17 columns the banner gate fails first, and a scrollback long enough to evict the banner fails the same safe way.