Record Iris review fixes, validation, and consolidated checkout

This commit is contained in:
iris-ai committed 2026-09-19 13:53:12 -04:00
1 parent 67584cedda
commit f3c9ab8106
3 files changed
+102 -52

No files matched your search

+35 -40
View File
@@ -6,52 +6,47 @@ in `docs/LAYOUT_LOG.md`.
## The Iris layout repair is submitted
**Iris PR #19** (`layout/one-ask` at `cadfba0`, 123 commits over upstream
`main` at `ca2b4b2`) is open and waiting on Bryan. It **replaces #18**, which
is closed and whose branch `split/18-position-chain` stays as the reviewed
baseline the newer work was measured against. Bryan decided on 2026-09-19
that the experiment replaces it, because it is more performant where it
matters.
**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.
The checkout is `/home/bob/repos/iris-layout-experiment`, on branch
`wip/hint-first`, which is the same commit as `layout/one-ask`. Both are
pushed to `origin` (`iris-ai/iris`). What the branch does and what it leaves
undone is in the PR description; the settled protocol is in `docs/LAYOUT.md`
under "Frames, decided boxes and padding".
There is one Iris Git repository, stored with this checkout's submodule:
Verification at `cadfba0`, all run in this checkout:
- `/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/`.
| check | result |
| --- | --- |
| `cargo fmt --all --check`, clippy `-D warnings`, with and without `layout-diagnostics` | clean |
| `cargo test --workspace` | 123 suite, 20 core, 11 generated, green |
| `cargo test --release --test generated` | 11/11 |
| shrinker, 400 seeds, depth 5, sixteen cases | agree, 60 s |
| 1000 seeds at depth 6 | agree, 177 s |
| 2000-seed depth-4 scan, sixteen cases | agree, 295 s (82,203 widgets) |
| cold dump of 400 trees at depth 5, diffed against `f6242aa` | identical, 34,488 widget boxes |
| counters, seeds 1 and 13 at depth 8 | unchanged from `f6242aa` (the table is in `docs/LAYOUT.md`) |
| five renders, the `tabs` replay, a live resize against a cold render | all byte-identical to `a888717` |
The renderer was Vulkan on the host's RX 7900 XT: `src/default/render.rs`
asks for `Backends::PRIMARY` and `.expect()`s the adapter, so a PNG at all
means it was not the software fallback.
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. **The two defects the review of #19 found**, written up with their
repros and fixes in `docs/LAYOUT_LOG.md`: a span misplaces the slot after
a collapsed `leftover` child, and a reused child keeps the mask its
parent replaced. Both are live at `cadfba0` and neither has a test.
2. **Bryan's review of #19.** Fixes to it are unreviewed code: repeat the
`pre-submit-review` passes over whatever each round changes, and re-run
the three fuzzers and the dump diff for anything that touches `Span`,
`Painter` or `render_state`.
3. **The app's Iris pin**, once #19 lands. It is still on the old submodule
commit, and the branch changes API the app uses: `SizeRule` beside a
widget rather than a wrapper, alignment as a widget property, `rest`
renamed to `leftover`, `OrthoSize` gone.
4. **Round-to-nearest**, CPU and shader together as one verified change.
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)".