diff --git a/docs/IRIS_EXTRACTION_HANDOFF.md b/docs/IRIS_EXTRACTION_HANDOFF.md index ab15fed..86b43dd 100644 --- a/docs/IRIS_EXTRACTION_HANDOFF.md +++ b/docs/IRIS_EXTRACTION_HANDOFF.md @@ -6,7 +6,12 @@ Not a decisions log; delete it when the extraction is done. ## Where things stand Canonical `main` is **`43ce8c7`** (#12, pointer routing). Fourteen slices are -in and nothing is open. +in. + +- **#16** `split/16-draw-size`, worktree `/home/bob/repos/iris-pr16`, head + `f192f75`. A widget sizes itself while drawing; `SizeCtx`, the `desired_*` + methods and the size cache are gone, and `size_dependence(axis)` drives the + retained path. `tabs`, `view` and `minimal` render byte-identical to `main`. Check for a review before starting anything, and read the newest `submitted_at` rather than the first result: @@ -102,6 +107,21 @@ today's `Len` and let the dp slice follow, rather than pulling both in at once. Still in the target, roughly in dependency order: +- **The position chain** (LAYOUT.md ยง2): `UiData::move_offsets`, per-primitive + slot ids and a bounded chain walk in WGSL, so moving a subtree writes one + slot instead of every descendant's primitives. Agreed to come directly after + #16. +- **Built-in alignment, and possibly size**, directly after the position + chain. A child of a span is handed the full extent on the ortho axis, so + `.width(rel(0.5))` inside a `Dir::DOWN` span changes what the child reports + and not the box it gets. **Do not "fix" this by reading the child's ortho + `size_hint`**: a `Pad` between the `SetSize` and the span has no hint of its + own, so the declared width silently goes back to filling. It works only when + nothing is in the way, which is the shape of bug the review pass is for. + Alignment has to belong to the widget rather than be discovered through + whatever happens to sit on top of it. Size is the harder half: a declared + size beside `set_size` is two sources of truth for one thing, so settle what + each means before building it. - **`Len`, `LayoutLen` and dp.** The archive splits the type so that `rest` is unrepresentable where it is meaningless (a padding), and folds a density in at resolve time. 21 files mention `Len`, so it is wide but shallow. After the