Record #14 merged, #12 reworked, and the harness slice

This commit is contained in:
iris committed 2026-09-13 20:21:11 -04:00
1 parent d0606f46ec
commit f3ba05d446
1 file changed
+32 -23
+32 -23
View File
@@ -5,19 +5,21 @@ Not a decisions log; delete it when the extraction is done.
## Where things stand ## Where things stand
Canonical `main` is **`00d2230`** (#13, wgpu 30). Eleven slices are in; two Canonical `main` is **`32b1038`** (#14, SetSize). Twelve slices are in. One
pull requests are open and both are waiting on the owner, not on me: pull request is open and one branch is pushed but unopened:
- **#12** `split/12-pointer-routing`, worktree `/home/bob/repos/iris-pr12`, - **#12** `split/12-pointer-routing`, worktree `/home/bob/repos/iris-pr12`,
head `71ba372`. A widget takes only the input it answers to, and only where head `f3fd941`. Reworked after the owner's review rejected the design: a
the cursor is. Self-reviewed under the process below, which found two layer, not a widget, is what consumes input. `CursorSenses::consumes`
defects: consumption decided once a frame rather than per input kind, and a decides only whether a layer stops the input reaching the one below, taking
press firing on a widget the cursor had just left. Six tests across layers; nothing out of the cursor, and senses on one layer never block each other.
three of them fail on `main`. Five tests; two fail on `main`. One question is out to her in the reply:
- **#14** `split/14-setsize`, worktree `/home/bob/repos/iris-pr14`, head whether a widget the cursor has left should still be handed a press.
`f312db6`. The `Sized` widget becomes `SetSize`, so the prelude stops - **`split/15-harness`**, worktree `/home/bob/repos/iris-pr15`, head
shadowing the marker trait and `?Sized` resolves again in any crate that `d5efdd2`, pushed with no pull request opened. `Tasks` takes an
imports it. `tests/prelude_bounds.rs` fails to compile if that comes back. `Arc<dyn WakeTaskQueue>` instead of an `Arc<Window>`, so `DefaultRsc` builds
without one, and `iris::harness` drives a ui with no surface. Six tests in
`tests/harness.rs`. Open it when #12 clears.
Check for a review before starting anything, and read the newest Check for a review before starting anything, and read the newest
`submitted_at` rather than the first result: `submitted_at` rather than the first result:
@@ -71,23 +73,29 @@ Other standing instructions from the owner:
- Pull Iris out even if the Rust application switchover is not accepted. No - Pull Iris out even if the Rust application switchover is not accepted. No
app, session, transcript, setup or server concepts in Iris; the dependency app, session, transcript, setup or server concepts in Iris; the dependency
runs one way from `app/` to Iris. runs one way from `app/` to Iris.
- **Small, coherent PRs.** The original extraction PR was too large to review. - **Small, coherent PRs, one at a time.** The original extraction PR was too
A slice may be redone rather than transplanted, and need not remove every old large to review. A slice may be redone rather than transplanted, and need not
feature. Independent PRs may be open at once so work continues during review. remove every old feature. Do not open several at once to stay busy during a
review: on 2026-09-13 the owner asked for the work to go serially, most
fundamental first, so that code is written once against the version of the
framework that will actually exist.
- Do not recreate an `ai` branch in canonical Iris; the fork is the boundary. - Do not recreate an `ai` branch in canonical Iris; the fork is the boundary.
- **Never rewrite a pushed branch.** Follow review with additive commits, and - **Never rewrite a pushed branch.** Follow review with additive commits, and
merge `upstream/main` in rather than rebasing when a branch falls behind. merge `upstream/main` in rather than rebasing when a branch falls behind.
- Respond to each review finding with a fix or a concise explanation. Do not - Respond to each review finding with a fix or a concise explanation. Do not
add a ceremonial comment when the changed code already answers it. add a ceremonial comment when the changed code already answers it.
- **A test has to guard something that could break again.** The owner deleted
#14's test as pointless: the rename it guarded cannot regress. When a fix is
structural, the structure is the test.
## The next slice ## The next slice
**The headless rig and the test harness.** `scripts/run-headless.sh`, **The headless rig.** `scripts/run-headless.sh`, `headless.conf` and
`headless.conf`, `rig-input` and `iris::harness` live in ai-app's iris `rig-input` are still only in ai-app's iris submodule, so every rendering
submodule and not in canonical Iris. Until they are extracted, Iris can only claim in canonical Iris is verified by hand from another checkout. The harness
be tested by what runs without a window, and every rendering claim is verified half of this is done in `split/15-harness`; the rig is shell and a Wayland
by hand from another checkout. Extracting them is what lets later slices replay binary and transplants nearly as-is, minus the `--phone` and `--dir`
arrive with tests instead of screenshots. Nothing else is claimed. flags' ai-app specifics.
Still in the target, roughly in dependency order: Still in the target, roughly in dependency order:
@@ -95,9 +103,9 @@ Still in the target, roughly in dependency order:
(308 lines to 2313), plus `core/src/event/controller.rs`, `desktop/input.rs`, (308 lines to 2313), plus `core/src/event/controller.rs`, `desktop/input.rs`,
`android/input.rs` and `sense_tests.rs`: pointer capture, drag slop and axis, `android/input.rs` and `sense_tests.rs`: pointer capture, drag slop and axis,
platform cancellation, mask-aware hit testing, event timestamps. It replaces platform cancellation, mask-aware hit testing, event timestamps. It replaces
the file #12 fixes, and **the archived copy carries the same per-frame the file #12 fixes. The archive's own `consumes` is what #12 now implements,
consumption defect #12 removes** — extracting it as-is brings the bug back, so that part transplants; `tests/pointer_routing.rs` is the acceptance
so `tests/pointer_routing.rs` is the acceptance criterion for that slice. criterion for the slice.
- Widget draw size and measurement cleanup (source commit `6671194`). - Widget draw size and measurement cleanup (source commit `6671194`).
- Retained span, scrolling and layout placement. - Retained span, scrolling and layout placement.
- Retained paints, selection, overlays and shared UI runtime state. - Retained paints, selection, overlays and shared UI runtime state.
@@ -262,5 +270,6 @@ argument for doing it next.
| #10 | Text layout and rendering on Parley (`0f6a28b`) | | #10 | Text layout and rendering on Parley (`0f6a28b`) |
| #11 | Atlas as an array texture, and the primitive rendering overhaul (`b234497`) | | #11 | Atlas as an array texture, and the primitive rendering overhaul (`b234497`) |
| #13 | Build on wgpu 30 (`00d2230`) | | #13 | Build on wgpu 30 (`00d2230`) |
| #14 | Rename the `Sized` widget to `SetSize` (`32b1038`) |
URLs are `https://git.arirex.me/iris/iris/pulls/{number}`. URLs are `https://git.arirex.me/iris/iris/pulls/{number}`.