Trace the scroll circularity to apply_leftover rather than the protocol
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
b2484b900e
commit
bdddb610c0
1 file changed
+15
-8
+15
-8
@@ -457,14 +457,21 @@ today fails in three widgets and is fixable locally in each:
|
||||
- `Branch` reads `extent_len(Y)` for "the rest of my box"; that is
|
||||
`Of(40px..FULL)`.
|
||||
|
||||
`Scroll` is the one legitimate own-answer box left. With the gate gone its
|
||||
content box lays the row out afresh, the text takes the room the leftover
|
||||
child gave back, and `content_len` from the viewport measurement is stale by
|
||||
that difference; it is deterministic on both paths, so warm equals cold, but
|
||||
the scroll range is off in the circular case. That case (a wrapping text
|
||||
beside a `leftover` child in a horizontally scrolling row) needs its own
|
||||
decision; Compose gives the text an unbounded width there. None of this was
|
||||
run; it is what the traces and the two experiments point at.
|
||||
`Scroll` looked like the one legitimate own-answer box left, and on a
|
||||
closer read (planning pass, later the same day) its circularity is
|
||||
`Scroll`'s own doing rather than the protocol's. It resolves the content
|
||||
length with `apply_leftover`, which turns any `leftover` in the answer into a
|
||||
*whole extra viewport on top of the pixels*: a row reporting `600 px +
|
||||
leftover` in a 900 px viewport gets a 1500 px content box, so the wrapping
|
||||
text inside is offered 900 px more room than it was measured in and
|
||||
re-wraps, and the layout drifts one iteration per evaluation. Under Bryan's
|
||||
definition a share is the room left in the deciding box, so the content
|
||||
length should be `max(viewport, px + rel·viewport)`: 900 for that row, the
|
||||
rect takes the 300 px left, nothing scrolls, and the row's box in the
|
||||
content box offers every child the room it was measured in. With that the
|
||||
content box never re-offers room, `Scroll` needs no own-answer evaluation,
|
||||
and the "return the answer from the first box" rule (seed 86) has nothing
|
||||
left to guard. Proposed, not run.
|
||||
|
||||
**Question 2, `Pad`.** Answered by the decision above that a share narrows
|
||||
the frame: the overflow in the example comes from the pad sitting in a
|
||||
|
||||
Reference in new issue
Block a user