4.1 KiB
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/irisis the activelayout/one-askworktree./home/bob/repos/ai-app-2/irisstays onmainat the app's32f6ad8pin. 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-experimentclone is retired. Superseded fork branches are removed; unique experiment tips and the #18 measurement baseline are preserved underarchive/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
- Bryan's review of #19. Fixes are themselves unreviewed code: repeat
pre-submit-reviewover each round's changes, and re-run the three fuzzers and dump diff for edits toSpan,Painter, orrender_state. The ordinary oracle does not replace absolute geometry and retained-primitive expectations. - Integrate the app's Iris capabilities before changing its pin.
32f6ad8has 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 migrateSizeRulebeside widgets, alignment properties,resttoleftover, and removal ofOrthoSize. - 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.mdunder "Rendering the grid (pending)".
Smaller layout items, none urgent
- Nested spans pass
leftoverweight 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::divby zero answersMIN/MAXwhileratioanswersZERO; both are caller bugs underdebug_assert, but the fallbacks differ.- The comment on the
local == UiRegion::FULLshortcut inwidget_atsays composing throughFULL"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 namePainter::place,SetSize,desired_width,apply_rest,Len::dp,AlignedandMaxSize, none of which exist. Do not restoreOnResize::TranslateorOrthoSize.LazySpan, thenSizeRule::{Min, Max, Clamp}. A cap may not containleftover; whetherMaxnarrows the child's drawing box is a product decision.Scrolltaking 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.