docs/RUST.md: 2026-09-06 orchestrator plan for the P0 defects and the P1 prerequisites
This commit is contained in:
1 parent
543f6d92f0
commit
9717d1c4b0
1 file changed
+53
@@ -34,6 +34,59 @@ the emulator, not by Mesa" and "the present mode was not the cause" are
|
||||
worth as much as the successes, because they are what stops the next
|
||||
session spending an afternoon on them again.
|
||||
|
||||
## Where things stand (2026-09-06, orchestrator plan)
|
||||
|
||||
Written by the design agent on picking the branch up after a `/clear`, so
|
||||
the next session can resume from here. P0 is delivered and Iris's phone
|
||||
report v2 is in (`docs/bench/iris-phone-v2-2026-09-06.md`); **P1 stays
|
||||
gated on her verdict**, so this pass works the P0 defects and the pure
|
||||
prerequisites in this order. Each item is ticked here by the agent that
|
||||
closes it.
|
||||
|
||||
- [ ] **Merge the `DragGesture` work** left complete but unmerged in the
|
||||
worktree branch `worktree-agent-a754368325fa06839` (commit
|
||||
`e12c708`, 2026-09-06 02:10, two minutes after the last merge to
|
||||
`rustify`; already contains `rustify` at `543f6d9`). It targets two
|
||||
of the four bench-v2 defects: finger flings dropped by per-widget
|
||||
hit testing (pointer capture + `CursorSense::Drop`), and IME insets
|
||||
never redelivered (`MainActivity.java` edge-to-edge). Before
|
||||
merging: build, clippy, tests; then on the emulator confirm the
|
||||
three things `20b1225` (tap-vs-swipe focus) and the phone asked for
|
||||
still hold together — a swipe over the composer does not summon
|
||||
the keyboard, a tap does, a finger fling on the list keeps moving
|
||||
after the finger lifts, and `on_insets_changed` now fires on an
|
||||
IME toggle. Then remove the worktree.
|
||||
- [ ] **Fix `docs/REVIEW-2026-09-06.md`** (after the merge, since the
|
||||
review's finding 1 is in `selection.rs`, which the merge rewrites).
|
||||
Finding 1 is a real crash — `TranscriptScreen::apply`'s `Rebuild`
|
||||
arm leaves `Selection` holding `WeakWidget`s to freed rows, and the
|
||||
next tap anywhere panics. Findings 2–5 are `debug_assert!`s on
|
||||
invariants, 8 and 10 are the missing tests. Commit the review file
|
||||
with the fixes.
|
||||
- [ ] **Stale primitives and invisible composer text** — the header drawn
|
||||
twice after a keyboard resize, the `Compacted:` row drawn twice on
|
||||
Iris's phone, and typed text never appearing (P0 box item 2). All
|
||||
three sit on the `redraw_updates` targeted-redraw path and may be
|
||||
one bug; the P0 box says the next step is instrumentation inside
|
||||
`Span::draw`/`draw_inner` showing where each placement's
|
||||
primitives actually land on the frame it goes wrong.
|
||||
`list.rs`'s new `replacing_the_last_row_many_times_does_not_leak_
|
||||
primitives` test already pins the widget arena as *not* the leak.
|
||||
- [ ] **Composer touch-drag scroll** for overflowed text — now that
|
||||
dragging is a default-input `DragGesture`, `Scroll` should get its
|
||||
touch pan from the same mechanism `List` uses, not a copy.
|
||||
- [ ] **Streaming re-layout** (IRIS_TODO.md's last section) — after the
|
||||
above, since they make the stream phase unrepresentative today.
|
||||
- [ ] **client-core prerequisites for P1, in parallel** (pure Rust,
|
||||
disjoint from `iris/`): `TranscriptSource`'s cache-vs-server
|
||||
stitching and `joinPages`/`healSplitMessage`/`adoptRun` page-boundary
|
||||
healing, per `CLIENT_CORE.md`. Ported with the Kotlin tests as the
|
||||
spec. Cheap to have ready if P0 passes, and no rendering risk if
|
||||
it does not.
|
||||
- **Then**: redeliver `~/host/bench/iris-bench-arm64.apk` for Iris with
|
||||
its README saying what changed, and record any choice she should see in
|
||||
`DECISIONS.md`.
|
||||
|
||||
## Where things stand (2026-09-05)
|
||||
|
||||
- **Streaming no longer costs a full rebuild** (P0's box, "Streaming no
|
||||
|
||||
Reference in new issue
Block a user