Record the seed 946 deferral and the fuzzer results at 3091fb8
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
ef324aa88b
commit
82c0ac4960
2 files changed
+71
-36
No files matched your search
+35
-17
@@ -14,18 +14,23 @@ detached comparison checkout is `/home/bob/repos/iris-layout-baseline`. It is
|
||||
the reviewed baseline this work must preserve or improve.
|
||||
|
||||
The continuation is `/home/bob/repos/iris-layout-experiment`, now on branch
|
||||
**`wip/one-ask`** at **`3091fb8`**, one commit over `4328eac` (the head of
|
||||
**`wip/one-ask`** at **`0ef87eb`**, two commits over `4328eac` (the head of
|
||||
`wip/transparent-frames`, which is unchanged). It replaces the step 3 plan
|
||||
below with a smaller protocol change, and it passes every fast check:
|
||||
below with a smaller protocol change, and it passes every check that has
|
||||
finished:
|
||||
|
||||
| check at `3091fb8` | result |
|
||||
| check at `0ef87eb` | result |
|
||||
| --- | --- |
|
||||
| `cargo fmt --all --check`, clippy `-D warnings`, with and without `layout-diagnostics` | clean |
|
||||
| `cargo test --workspace` (debug) | 114 suite, 20 core, 11 generated, all green |
|
||||
| the two decided-box pins from step 1 | **pass** (red at `4328eac`) |
|
||||
| `cargo test --workspace` (debug) | 115 suite, 20 core, 11 generated, all green |
|
||||
| the two decided-box pins from step 1, and the new seed 946 pin | **pass** (the first two were red at `4328eac`) |
|
||||
| `cargo test --release --test generated` | 11/11 |
|
||||
| shrinker, 400 seeds, depth 5, all fifteen cases | agree, 56 s |
|
||||
| 1000 seeds at depth 6, and the 2000-seed depth-4 scan | see `docs/LAYOUT_LOG.md`; they were running when this was written |
|
||||
| 2000-seed depth-4 scan, all fifteen cases | agreed at `3091fb8` (269 s); rerun at `0ef87eb` was running when this was written |
|
||||
| 1000 seeds at depth 6 | found seed 946 at `3091fb8`, fixed and pinned in `0ef87eb`; rerun was running when this was written |
|
||||
|
||||
Read `/tmp/oracle-1000-6b.log` and `/tmp/shrink-2000-4b.log` for the reruns
|
||||
if they still exist; otherwise run them (step 1).
|
||||
|
||||
The worker's uncommitted step 3/4 experiment is preserved as branch
|
||||
`wip/step3-experiment` (one commit over `4328eac`) and as
|
||||
@@ -156,6 +161,15 @@ back at the retained place of the box the parent's answer *chose*. Both halves
|
||||
are needed: seed 2 at depth 4 (a stack sized by its text) fails without the
|
||||
second.
|
||||
|
||||
A widget its parent asked more than once in one draw -- a share child, asked
|
||||
in the room and then in its slot -- has two questions and one record, so it
|
||||
cannot settle locally: `redraw` defers it to the parent the way it defers a
|
||||
widget whose declared length changed (`ActiveData::re_asked`, set by
|
||||
`widget_at` when the child is already in `children`). Seed 946 at depth 6
|
||||
found the case: a fixed-height column that is a share while its rect fits
|
||||
and a fixed width once it does not, so emptying it changes the room answer
|
||||
and not the slot answer.
|
||||
|
||||
A symbolic length a child pinned now composes through `Part::Of` where the
|
||||
part is the whole box less pixels, and pins the parent's own length otherwise
|
||||
(`in_parent`). Dropping it let a zero `Pad` reuse a drawing across a narrowed
|
||||
@@ -267,18 +281,18 @@ the probe's diff readable; do this as one mechanical commit. Suite, oracle.
|
||||
Work counters at `3091fb8`, seed 1 and 13, depth 8, widget draws / distinct
|
||||
widgets, beside `e44dea3` (#18) and `49cec82` (the branch head before this):
|
||||
|
||||
| seed 1 | e44dea3 | 49cec82 | 3091fb8 |
|
||||
| seed 1 | e44dea3 | 49cec82 | 0ef87eb |
|
||||
| --- | --- | --- | --- |
|
||||
| cold | 369/261 | 516/288 | 331/288 |
|
||||
| many | 157/95 | 187/119 | 78/78 |
|
||||
| many | 157/95 | 187/119 | 110/92 |
|
||||
| size | 16/12 | 3/3 | 3/3 |
|
||||
| scroll | 2 | 1 | 1 |
|
||||
| resize | 13/13 | 24/76 | 40/15 |
|
||||
|
||||
| seed 13 | e44dea3 | 49cec82 | 3091fb8 |
|
||||
| seed 13 | e44dea3 | 49cec82 | 0ef87eb |
|
||||
| --- | --- | --- | --- |
|
||||
| cold | 1330/707 | 2940/982 | 1179/982 |
|
||||
| many | 524/159 | 1091/423 | 335/333 |
|
||||
| many | 524/159 | 1091/423 | 424/364 |
|
||||
| resize | nothing | 2215/510 | nothing |
|
||||
|
||||
`many` and `size` are better than #18 at seed 1 and `many` draws fewer times
|
||||
@@ -287,13 +301,17 @@ at seed 1 draws 40 times where #18 drew 13. Two mechanisms, both understood:
|
||||
|
||||
- **A share child is asked twice per span draw** -- in the measuring room
|
||||
with the frame forwarded, then in its slot with the frame narrowed. Each
|
||||
ask that reads pixels or pins a length draws. Give `Span` a measure-only
|
||||
ask for the first pass: reuse the retained *answer* when its holds contain
|
||||
the room, without validating or relocating the drawing, and let the
|
||||
placing ask settle the drawing. The answer contract must then carry no
|
||||
symbolic pin (a span's total does not depend on `far`; only its slots do),
|
||||
which is the separation the worker's experiment made with
|
||||
`answer_extent_len`. Measure `many` at seed 13 before and after.
|
||||
ask that reads pixels or pins a length draws, and since `0ef87eb` every
|
||||
local change inside a share child redraws its span as well. Give `Span` a
|
||||
measure-only ask for the first pass: reuse the retained *answer* when its
|
||||
holds contain the room, without validating or relocating the drawing, and
|
||||
let the placing ask settle the drawing. The answer contract must then
|
||||
carry no symbolic pin (a span's total does not depend on `far`; only its
|
||||
slots do), which is the separation the worker's experiment made with
|
||||
`answer_extent_len`. With that, a twice-asked child could keep both
|
||||
answers and settle locally by re-asking both questions instead of
|
||||
deferring. Measure `many` at seed 13 before and after; the seed 946 pin
|
||||
must stay green throughout.
|
||||
- **A positive-direction span with no shares pins `far`** it does not need,
|
||||
so a resize redraws it. Read `extent_len` only where a slot depends on it
|
||||
(shares, or `Sign::Neg`), and express the measuring room's far end without
|
||||
|
||||
Reference in new issue
Block a user