From 43f6bda92d42f47490e55a3a05101e6edd392a67 Mon Sep 17 00:00:00 2001 From: iris <2+iris@noreply.localhost> Date: Sun, 13 Sep 2026 16:53:00 -0400 Subject: [PATCH] Record the fifth #11 review Co-Authored-By: Claude Opus 5 --- docs/IRIS_EXTRACTION_HANDOFF.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/IRIS_EXTRACTION_HANDOFF.md b/docs/IRIS_EXTRACTION_HANDOFF.md index 7ddfc0e..8298a38 100644 --- a/docs/IRIS_EXTRACTION_HANDOFF.md +++ b/docs/IRIS_EXTRACTION_HANDOFF.md @@ -5,8 +5,8 @@ Not a decisions log; delete it when the extraction is done. ## Read this first -**Pull request #11 has been reviewed four times; the fourth is answered in -`29d390d` and the fifth has not arrived.** Check for one before doing anything +**Pull request #11 has been reviewed five times; the fifth is answered in +`01a9b86` and a sixth has not arrived.** Check for one before doing anything else: ```sh @@ -39,7 +39,7 @@ packing images into arrays like atlas pages, and a bindless `binding_array` - Agent fork: `git@git.arirex.me:iris-ai/iris.git`. The bot cannot push canonical; work in the fork and open PRs into `iris/iris:main`. - **#11** `split/11-texture-bindings`, worktree `/home/bob/repos/iris-pr11`, - head `29d390d`, nine commits on top of `0f6a28b`. Reviewed four times, all + head `01a9b86`, ten commits on top of `0f6a28b`. Reviewed five times, all answered. - **#12** `split/12-pointer-routing`, worktree `/home/bob/repos/iris-pr12`, head `028521b`. A scroll falling through a hovered button. Not reviewed as @@ -58,8 +58,8 @@ shape: `Textures` holds standalone images only. - **A primitive registers itself by being drawn.** The type carries its own WGSL and `PrimitiveRegistry` keys ids by `TypeId`, so the kind comes from the - type and there are no `RECT`/`GLYPH`/`TEXTURE` constants. Built-ins are - seeded up front only so first-draw order cannot shuffle them. + type and there are no `RECT`/`GLYPH`/`TEXTURE` constants. Nothing is seeded, + so an id depends on what a ui drew first and a ui pays only for what it uses. - **Nothing dispatches dynamically.** Push, free, renumber, upload and draw are identical for every primitive; only the entry size and the pipeline differ, and those are data. `InstanceList` carries a runtime stride and its data as @@ -72,12 +72,13 @@ shape: recorded at write time; no other pipeline mentions textures at all. - **`shader.wgsl` became `shader/prelude.wgsl` plus one file per primitive**, because one module cannot declare two types at the same binding. The prelude - carries the window, masks, atlas, sampler, vertex shader and `masked()`, and - is the one place binding numbers are written down. -- **Order within a layer means nothing** and nothing claims otherwise -- but - the widgets do rely on it today, since a `Text` over a `Rect` in one layer - only works because glyph registers after rect. Open question, raised on the - PR: text may need a layer of its own. + carries only what every primitive uses -- window, masks, vertex shader, + `masked()` -- and its header records the group 0 binding numbers; the atlas + and sampler are declared by the shaders that read them. +- **Order within a layer means nothing**, and the widgets do not rely on it: + `Stack` gives each child its own layer and `TextEdit` draws its view in a + child layer above the selection rectangles. Verified with a ui that + registers glyph before rect. ## Standing instructions from the owner