77 lines
4.1 KiB
Markdown
77 lines
4.1 KiB
Markdown
# Handoff
|
|
|
|
Where the work in flight stands. The durable layout design and the
|
|
measurement method are in `docs/LAYOUT.md`; what the review of #19 found is
|
|
in `docs/LAYOUT_LOG.md`.
|
|
|
|
## The Iris layout repair is submitted
|
|
|
|
**Iris PR #19** (`layout/one-ask`) replaces closed #18. The current tip is
|
|
`84dad21`: `add6774` fixes collapsed-share placement, retained mask ownership,
|
|
and a redraw-on-reparent defect; `84dad21` removes repeated work in the test
|
|
harness. `docs/LAYOUT_LOG.md` records the review and its regression coverage.
|
|
The core design remains sound; naming and round-to-nearest are unchanged.
|
|
|
|
There is one Iris Git repository, stored with this checkout's submodule:
|
|
|
|
- `/home/bob/repos/iris` is the active `layout/one-ask` worktree.
|
|
- `/home/bob/repos/ai-app-2/iris` stays on `main` at the app's `32f6ad8` pin.
|
|
It shares Git storage with the active worktree, rather than being a second
|
|
development repository. Keep it until the app's integration is ready.
|
|
- The standalone `iris-layout-experiment` clone is retired. Superseded fork
|
|
branches are removed; unique experiment tips and the #18 measurement
|
|
baseline are preserved under `archive/2026-09-19/` tags. A complete bundle
|
|
is also under `~/.local/state/iris/archive/`.
|
|
|
|
Verification of the fixes: format and workspace clippy with `-D warnings`,
|
|
workspace tests with and without `layout-diagnostics` (128 suite tests,
|
|
20 core tests, 21 with diagnostics, and 11 generated tests), and the release fast oracle pass.
|
|
The 400-seed depth-5 shrinker, 1,000-seed depth-6 run, and 2,000-seed
|
|
breadth scan all pass. The cold dump covers 34,488 boxes; 650 change because
|
|
of the collapsed-share correction. With only that correction withheld,
|
|
the remaining fixes reproduce the baseline dump exactly.
|
|
The headless `tabs` example and the exact collapsed-share repro were rendered
|
|
and inspected; the latter places the blue tail at x=220..400. The machine's
|
|
Vulkan device is the RX 7900 XT through RADV native context.
|
|
|
|
## What is next, in order
|
|
|
|
1. **Bryan's review of #19.** Fixes are themselves unreviewed code: repeat
|
|
`pre-submit-review` over each round's changes, and re-run the three
|
|
fuzzers and dump diff for edits to `Span`, `Painter`, or `render_state`.
|
|
The ordinary oracle does not replace absolute geometry and
|
|
retained-primitive expectations.
|
|
2. **Integrate the app's Iris capabilities before changing its pin.**
|
|
`32f6ad8` has 45 commits not reachable from the review branch; shared UI
|
|
ownership, richer masks, Android support, and app-side performance work
|
|
must survive the integration. Then migrate `SizeRule` beside widgets,
|
|
alignment properties, `rest` to `leftover`, and removal of `OrthoSize`.
|
|
3. **Round-to-nearest**, CPU and shader together as one verified change.
|
|
Bryan approved it on 2026-09-17 and neither half has landed; the
|
|
derivation, the form to use and what to re-check are in `docs/LAYOUT.md`
|
|
under "Rendering the grid (pending)".
|
|
|
|
## Smaller layout items, none urgent
|
|
|
|
- Nested spans pass `leftover` weight up, so three leftover children in one
|
|
inner span beside one in another get three quarters to one quarter. No
|
|
other layout system does that; confirm it is wanted.
|
|
- A span can overflow itself without bound, so boxes of negative length reach
|
|
children and nothing states what a widget may assume about one.
|
|
- `Fixed::div` by zero answers `MIN`/`MAX` while `ratio` answers `ZERO`; both
|
|
are caller bugs under `debug_assert`, but the fallbacks differ.
|
|
- The comment on the `local == UiRegion::FULL` shortcut in `widget_at` says
|
|
composing through `FULL` "is not quite the identity in f32"; on the grid it
|
|
is exact and the shortcut is performance only.
|
|
- `docs/LAYOUT.md` §4, §5 and the density section name `Painter::place`,
|
|
`SetSize`, `desired_width`, `apply_rest`, `Len::dp`, `Aligned` and
|
|
`MaxSize`, none of which exist. Do not restore `OnResize::Translate` or
|
|
`OrthoSize`.
|
|
- `LazySpan`, then `SizeRule::{Min, Max, Clamp}`. A cap may not contain
|
|
`leftover`; whether `Max` narrows the child's drawing box is a product
|
|
decision.
|
|
- `Scroll` taking a direction rather than one axis.
|
|
|
|
Other product work is in `docs/PLAN.md` and the focused documents it links.
|
|
Do not mix it into the Iris layout branch.
|