Record the round's last two findings, and the review the old code is owed
`pre-submit-review` arrived after the Rust port and most of Iris were written, so all of that went in unreviewed and no sweep has covered it. The surface-texture defect is the argument for a pass of its own. Nothing in Iris is kept for the app's sake either: the app is to be rewritten against the new API rather than ported call by call.
This commit is contained in:
1 parent
718923c217
commit
734c521f5d
2 files changed
+47
-23
No files matched your search
+28
-14
@@ -10,9 +10,10 @@ the current plan is in `docs/HANDOFF.md`.
|
||||
|
||||
Over the parts the four earlier rounds did not read -- the renderer, the
|
||||
text store, the input default, the harness -- and once more over `redraw`.
|
||||
Four findings, `d8d5122` through `7502176`. The cold dump is byte-identical
|
||||
to `781199a` and all three seed scans pass (400 at depth 5 in 69.45s, 1,000
|
||||
at depth 6 in 214.69s, 2,000 at depth 4 in 419.50s).
|
||||
Six findings, `d8d5122` through `1096c31`, the last two from Bryan's reading
|
||||
of the first four. The cold dump is byte-identical to `781199a` and all three
|
||||
seed scans pass (400 at depth 5 in 69.45s, 1,000 at depth 6 in 214.69s, 2,000
|
||||
at depth 4 in 419.50s).
|
||||
|
||||
**A contract was kept where it no longer held** (`d8d5122`). The sibling of
|
||||
`713e3e7`, in the same function. `redraw` keeps the narrower of the old and
|
||||
@@ -37,6 +38,10 @@ the swapchain. The texture is good for that frame, so it is drawn with and
|
||||
presented and the rebuild happens after `present` consumes it. Not
|
||||
reproducible on demand here; the claim rests on wgpu's own documented panic.
|
||||
|
||||
This one is the reason for the sweep recorded under "The code written before
|
||||
the review gate" below: nothing about the arm was hard, and it was written
|
||||
that way anyway.
|
||||
|
||||
**A counter named the wrong contract** (`9b4cc32`). `AxisHolds` is four
|
||||
contracts and `diag::outside` counted three: a refusal because this window
|
||||
is outside the range the drawing was made for bumped "reuse outside: a rel
|
||||
@@ -44,20 +49,29 @@ base". A window range is pixels and a rel base pin is a window-unit length an
|
||||
unchanged window can still change, so the rig answered "why did that
|
||||
redraw?" with the wrong one for every resize. Same class as `8088a1f`.
|
||||
|
||||
**Three things nothing reads** (`7502176`). `Axis::pair` and
|
||||
`RegionAlign::NEAR` arrived on this branch with no caller and never got one;
|
||||
`Holds::contains` took `&self` where its five siblings on the same `Copy`
|
||||
pair take `self`. The comment beside a span's cross-axis accumulator said a
|
||||
scalable child "makes Children scalable too" -- `Children` names nothing in
|
||||
this repository, and what it makes scalable is the span.
|
||||
**Things nothing reads** (`7502176`, `1096c31`). `Axis::pair`,
|
||||
`RegionAlign::NEAR` and `Painter::text_data` arrived on this branch with no
|
||||
caller and never got one. The comment beside a span's cross-axis accumulator
|
||||
said a scalable child "makes Children scalable too" -- `Children` names
|
||||
nothing in this repository, and what it makes scalable is the span.
|
||||
|
||||
`text_data` was held back a round on the grounds that it is the only way a
|
||||
widget inside `draw` can reach `TextData`, and the app's integration might
|
||||
want it. That reasoning is wrong: nothing in iris is kept for the app's sake,
|
||||
because the app is to be largely rewritten against this API rather than
|
||||
ported call by call (Bryan, 2026-09-20).
|
||||
|
||||
**A question asked through a value** (`445287c`). `7502176` moved
|
||||
`Holds::contains` from `&self` to `self` to match its five siblings, which
|
||||
was the wrong way to reconcile them. A method taking `self` can only be
|
||||
called on a value, so a caller holding a reference has to dereference to ask
|
||||
-- `Copy` or not (Bryan, 2026-09-20). Every method that answers a question
|
||||
about a value now takes `&self`: `Holds`, `AxisHolds` and `LayoutHolds`
|
||||
throughout, `LayoutLen::{is_px, is_only_leftover, declared, fills}` and
|
||||
`Size::within_box`. Builders that return a changed copy still take `self`.
|
||||
|
||||
### Tripped a rule and left as it stands
|
||||
|
||||
- `Painter::text_data` has no caller either, and is the only way a widget in
|
||||
`draw` can reach `TextData` at all (`painter.rsc` is private). It replaces
|
||||
`main`'s `text_resources`, which the app does not call today but which the
|
||||
pending integration may want. Deleting a framework's one escape hatch to
|
||||
the text store while the app is still on the old pin is not a sweep's call.
|
||||
- `TextData`'s spare store clones the whole string into `Placed` on every
|
||||
re-break. Bounded at 128 entries, but the clone is per re-break and
|
||||
proportional to the text; a transcript-sized text would pay it on every
|
||||
|
||||
Reference in new issue
Block a user