Commit Graph
277 Commits
Author SHA1 Message Date
iris-aiandClaude Opus 5 e6b9cb29b7 Record the doubled declared fraction, and what a squeezed span does
The text reference render is not byte-identical after all: a declared
rel or rest length is applied by the span and then again inside SetSize,
so .width(rel(0.5)) draws its child at a quarter. Also replaces the
example that measured one-pixel lines with what the tests now say, since
a span short of room overlaps its fixed lengths rather than collapsing
them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 12:32:12 -04:00
iris-aiandClaude Opus 5 89d20c31dc Re-measure #18 against the code it replaces, and retire the tabs divergence
The tabs difference does not reproduce at f61e893 against upstream/main
built in its own worktree, so nothing is waiting on a decision. Records
the instruction counts, frame times and memory taken today rather than
mid-branch, and what a one-pixel line and a one-pixel gap do under the
chain, which is the question the pixel difference was really about.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 02:56:11 -04:00
iris-aiandClaude Opus 5 155b7650a9 Name the handoff doc in AGENTS.md and generalise it to HANDOFF.md
A fresh session had no way to learn the handoff existed: AGENTS.md named
only docs/PLAN.md, and the filename tied the document to one piece of work.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 02:33:53 -04:00
iris-aiandClaude Fable 5.1 39409b6683 Record the derived-box rule and what the fuzzers found in the handoff
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 02:17:29 -04:00
iris-aiandClaude Opus 5 98dcb31c23 Bring the handoff up to date with what the fuzzer found
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 01:42:13 -04:00
iris-aiandClaude Opus 5 1ffe6ea067 Note the immediate-mode path Iris proposed, and what it would not catch
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 01:02:06 -04:00
iris-aiandClaude Opus 5 9bfda08f85 Split the performance section so a fresh reader can find the settle order
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:30:15 -04:00
iris-aiandClaude Opus 5 f486f00ec9 Bring the state of #18 and what a frame is made of up to date
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:29:55 -04:00
iris-aiandClaude Opus 5 cb2942bf58 Record that dropping the settle order costs more than keeping it
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:27:02 -04:00
iris-aiandClaude Opus 5 2a40aa01db Record what carrying the depth cost and what is left
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:10:39 -04:00
iris-aiandClaude Opus 5 ba97265191 Record why an arbitrary settle order returns a stale size
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:57:26 -04:00
iris-aiandClaude Opus 5 d0c80a2037 Record that picking any dirty widget does not work, and what it costs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:37:51 -04:00
iris-aiandClaude Opus 5 592cc808ca Record both halves of the text fix, and what dirtying many widgets shows
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:22:14 -04:00
iris-aiandClaude Opus 5 60bf2568f8 Say what the two measurement worktrees are for now
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 18:52:23 -04:00
iris-aiandClaude Opus 5 d50e791130 Record what the shaping store cost and what it bought
Both gestures, since two widths in turn flatters a store and a drag does
not, and the memory beside the time: the question that decided the shape
of it was whether it is a fixed cost or one per text widget.

Bring LAYOUT.md's §1 and §2 to what shipped. A widget returns its size
rather than recording it, a slot carries a box rather than a
translation, and the per-axis answer is `OnResize` rather than
`is_size_independent` -- and the constraint the position chain replaced
was an agent's, which the text now says.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 18:51:34 -04:00
iris-aiandClaude Opus 5 2acfcf51aa Compare the retained layout with the old code on one tree
The random generator grew during the work, so the seed that names a
1061-widget tree in the pre-#16 rows names a 144-widget one now. Every
"still N times the old resize" here was measured across that change and
says nothing; a hand-written fixture that compiles on both revisions
says the old code is 2.2x cheaper and puts a paragraph outside the
output, for two reasons it records as deliberate.

Record what a resize frame is actually spent on -- 63% text, 0.9%
draw_inner -- and what removing the single-entry shaping and placement
caches measures at.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 18:10:14 -04:00
iris-ai ecce4448f0 Document per-axis retained layout 2026-09-14 17:49:42 -04:00
iris-ai 974d6c7a52 Document coalesced resize layout 2026-09-14 17:06:41 -04:00
iris-ai 986f98380d Document retained layout diagnostics 2026-09-14 16:42:42 -04:00
iris-ai ccc75d24fe Separate layout cost from draw counts 2026-09-14 16:25:54 -04:00
iris-ai cb1cfff0bf Record retained layout optimization results 2026-09-14 15:58:10 -04:00
iris-aiandClaude Opus 5 38f6f9ac07 Record what the layout actually costs, and what of it is necessary
The random tree at depth 7 measured against the two revisions before it: the
GPU pass is a tenth of a millisecond everywhere, and every difference is the
CPU laying out. A repaint of one leaf costs 1313 draws and 6.5 ms where the
pre-#16 code cost one draw, because `redraw` escalates to the top size reader
before knowing whether the size changed at all. Drawing first and escalating
only on a different size takes that to one draw and takes a resize below the
pre-#16 number, but misplaces four widgets in the resize case, so it is the
owner's to call.

Also records the measure-by-drawing multiplier -- 1.3x the drawn widgets at
depth 4, 5.2x at depth 8 -- and that scrolling is now part of the random
trees.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 14:36:11 -04:00
iris-ai ba275fc966 Rewrite the handoff around what is true now: the chain's invariants, the open pixel decision, and what is left 2026-09-14 14:07:11 -04:00
iris-ai d5486b124a Record the random tree's padding nodes and span add/remove scenarios 2026-09-14 13:48:53 -04:00
iris-ai e442481a30 Record the two reuse defects the random trees found, their fixes, and the one-pixel tabs difference left for Iris to call 2026-09-14 13:31:46 -04:00
iris-ai 19b9ca7413 Record #18's three agreed changes, the measurement, and the wrapping-text divergence the random-tree rig found 2026-09-14 13:06:49 -04:00
iris-aiandClaude Fable 5.1 5959d58e44 Record the agreed plan after #18: opt-in slots, a rewalk stretch, Span saying Scale
And the open question beside it: a slot that carries a box rather than a
translation, which would make a move and a stretch of a Scale subtree
one write each. To be measured with chain_cost before it is chosen.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-14 11:39:45 -04:00
iris-ai c683e62e4f Bring the handoff up to date: #18's state, the open question, and the rigs 2026-09-14 11:08:59 -04:00
iris-ai e90b026969 Record the chain-depth measurement and the question it opens 2026-09-14 03:32:03 -04:00
iris-ai 836c222f0c Record #16 and #17 merged, and #18 opened for the position chain 2026-09-14 03:16:29 -04:00
iris-ai 9f039d6440 Record that Remap is temporary, to be deleted by region chaining 2026-09-14 02:44:58 -04:00
iris-ai d373a1b05c Record the Remap contract and the measured resize cost 2026-09-14 01:27:48 -04:00
iris-ai 270fe66802 Record the resize change, and why the position chain moved up 2026-09-14 01:09:33 -04:00
iris-ai 0aaa1f92db Record both review rounds answered, and what alignment now follows 2026-09-14 00:40:52 -04:00
iris 80527ff843 Reorder: alignment before the chain, and what the chain must fix 2026-09-13 23:51:48 -04:00
iris 8e6d709ff3 Record #17, and queue the render state behind Rc<RefCell> 2026-09-13 23:10:48 -04:00
iris 0f24d3ac23 Record #16, the position chain, and why the hint shortcut is not the fix 2026-09-13 23:05:47 -04:00
iris e04f873453 Record all three merged, and what comes next 2026-09-13 22:07:57 -04:00
iris 9c85ea4864 Correct how the work is sequenced, and record #15 opened 2026-09-13 20:44:46 -04:00
iris f3ba05d446 Record #14 merged, #12 reworked, and the harness slice 2026-09-13 20:21:11 -04:00
irisandClaude Opus 5 d0606f46ec Rewrite the extraction handoff as current state
Incremental edits had spliced the opening section into two half-sentences and
left it saying main was at the commit before last. It is now written as where
things are: two open PRs, the harness as the next slice, the renderer's
invariants rather than the story of how they arrived, and the three render
checks described rather than pointed at a script in /tmp.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:45:08 -04:00
irisandClaude Opus 5 c2b1c07895 Record #14
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:35:08 -04:00
irisandClaude Opus 5 8d9680547a Record the input restructure as a slice, and what guards it
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:23:44 -04:00
irisandClaude Opus 5 69b40d555e Record the #12 self-review
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:10:15 -04:00
irisandClaude Opus 5 ba678e97f3 Record #11 merged and #13 opened
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:59:19 -04:00
irisandClaude Opus 5 c5a10ac845 Record #11 as approved
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:56:16 -04:00
irisandClaude Opus 5 a009261fae Record the wgpu 30 upgrade and why it is not pushed yet
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:42:17 -04:00
irisandClaude Opus 5 64d8042f52 Record the primitive render dispatch and how it was measured
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:30:52 -04:00
irisandClaude Opus 5 912602d52b Order the remaining Iris slices by how fundamental they are
The owner asked for library updates and core framework changes first, so code
is only written once, and for tests to arrive with a slice rather than as
scripts outside the repository. So wgpu 28 -> 30 and the headless rig and
harness come before any of the feature slices.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:45:34 -04:00
irisandClaude Opus 5 2937a48133 Record the seventh #11 review
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:44:21 -04:00