diff --git a/README.md b/README.md index eff49a1..a718375 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,25 @@ to the benchmark card. The rest of this file is the runbook that was delivered with the APKs. -**2026-09-09 (latest): pinned growth moves the retained transcript once.** +**2026-09-09 (latest): growing layout settles in the frame that changed it.** +`iris-bench-arm64.apk` rebuilt from ai-app-2 `5ece49b`. This fixes the two +regressions found in the retained-transcript build: a newly streamed markdown +block no longer spends its first frame beside/overlapping the previous block, +and the multiline composer grows to its final viewport before it is masked, so +the first visible line and its padding are not clipped. + +The fix is entirely in iris. A changed child's size was already measured up +through its ancestors; iris now lays that changed branch back down through the +final boxes in the same frame, and `Sized` no longer accepts a provisional box +for its descendants as final. The dedicated LazySpan regression and the real +phone-sized composer regression both fail without their respective fixes. + +The retained move remains intact: the 401-event upload rig reports instance +uploads at **1.1% against a 1.1% floor** (p50 **1,488 bytes**) and an exact +11,569-slot arena for 11,569 live primitives. Streamed-frame CPU is p50 0.12ms, +p99 0.43ms, with no frame over 8.3ms in the layer-1 release profile. + +**2026-09-09: pinned growth moves the retained transcript once.** `iris-bench-arm64.apk` rebuilt from ai-app-2 `fffed42`. This is the framework-level `LazySpan` change: when a streaming message grows and pushes the transcript upward, retained rows keep stable local boxes and one shared diff --git a/iris/build/outputs/apk/release/iris-bench-arm64.apk b/iris/build/outputs/apk/release/iris-bench-arm64.apk index 97c8d02..e0423a6 100644 Binary files a/iris/build/outputs/apk/release/iris-bench-arm64.apk and b/iris/build/outputs/apk/release/iris-bench-arm64.apk differ