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
|
worth as much as the successes, because they are what stops the next
|
||||||
session spending an afternoon on them again.
|
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)
|
## Where things stand (2026-09-05)
|
||||||
|
|
||||||
- **Streaming no longer costs a full rebuild** (P0's box, "Streaming no
|
- **Streaming no longer costs a full rebuild** (P0's box, "Streaming no
|
||||||
|
|||||||
Reference in new issue
Block a user