Deployment-target performance matrix

Drawing, undo, and interface-action frame timing across every deployment target, in four display modes each.

11/11 targets captured44/44 modes captured67 actions measured
Rows 44/44 modes

Product commit 3928cd88edbf…, captured 2026-09-26. 7 of 11 targets are marked “Earlier capture”: their results are preserved from an earlier campaign, not re-measured here — Commit provenance lists their source commits. The release gate is the 4 physical rows: iPad physical · web, iPad physical · native, Android physical · web, Android physical · native. Only iPad physical · web carries a calibrated drawing instrument — 4/4 modes captured, 3 of 16 brush aggregates over gate (0 open, 3 explained by a recorded disposition); the other 3 are gates-in-waiting until theirs are calibrated. Mac rows are a regression tripwire, and simulator and emulator rows are advisory (ADR-0156).

Open release-gate reds

94

94 unexplained red cells on the release-gate rows, oldest first. Each counts toward the ADR-0175 completion gate until it is recaptured or explained, however old it is. Ages count to this report's date, 2026-09-26.

TargetSectionCellReadingCaptured
iPad physical · native · Portrait · Lightactionsselect Magic brushfirst frame P95 2 · post-action P95 18 / max 80 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Lightactionsswitch dark theme to lightfirst frame P95 8 · post-action P95 26 / max 36 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Lightactionsswitch light theme to darkfirst frame P95 8 · post-action P95 28 / max 37 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Lightactionsenable drawing soundsfirst frame P95 11 · post-action P95 21 / max 21 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Lightactionsselect coloring pagefirst frame P95 8 · post-action P95 25 / max 82 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Lightactionsclear coloring pagefirst frame P95 3 · post-action P95 24 / max 35 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Lightactionsshow AI waiting printfirst frame P95 8 · post-action P95 17 / max 42 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Darkactionsselect Magic brushfirst frame P95 7 · post-action P95 17 / max 84 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Darkactionsswitch dark theme to lightfirst frame P95 8 · post-action P95 30 / max 36 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Darkactionsswitch light theme to darkfirst frame P95 8 · post-action P95 25 / max 36 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Darkactionsselect coloring pagefirst frame P95 4 · post-action P95 17 / max 84 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Darkactionsclear coloring pagefirst frame P95 6 · post-action P95 24 / max 30 ms2026-09-23 · 3 days
iPad physical · native · Portrait · Darkactionsshow AI waiting printfirst frame P95 6 · post-action P95 17 / max 41 ms2026-09-23 · 3 days
iPad physical · web · Portrait · Lightactionsselect custom colorfirst frame P95 10 · post-action P95 23 / max 39 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsselect Magic brushfirst frame P95 3 · post-action P95 17 / max 76 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsopen Settings section: AI Artfirst frame P95 3 · post-action P95 17 / max 43 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsswitch dark theme to lightfirst frame P95 8 · post-action P95 33 / max 37 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsswitch light theme to darkfirst frame P95 8 · post-action P95 34 / max 38 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsdisable drawing soundsfirst frame P95 4 · post-action P95 24 / max 28 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsenable drawing soundsfirst frame P95 10 · post-action P95 38 / max 40 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsenable auto-save on deletefirst frame P95 2 · post-action P95 27 / max 30 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsdisable auto-save on deletefirst frame P95 10 · post-action P95 30 / max 34 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsenable tool drawerfirst frame P95 12 · post-action P95 17 / max 38 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsdisable screenshot action buttonfirst frame P95 4 · post-action P95 26 / max 30 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsenable screenshot action buttonfirst frame P95 8 · post-action P95 33 / max 35 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsclose Settingsfirst frame P95 3 · post-action P95 26 / max 40 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsopen coloring bookfirst frame P95 10 · post-action P95 28 / max 28 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsselect coloring pagefirst frame P95 10 · post-action P95 20 / max 77 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsclear coloring pagefirst frame P95 8 · post-action P95 33 / max 35 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Lightactionsshow AI waiting printfirst frame P95 25 · post-action P95 23 / max 46 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsselect custom colorfirst frame P95 12 · post-action P95 26 / max 45 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsselect Magic brushfirst frame P95 5 · post-action P95 17 / max 91 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsswitch dark theme to lightfirst frame P95 9 · post-action P95 44 / max 53 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsswitch light theme to darkfirst frame P95 8 · post-action P95 35 / max 39 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsdisable drawing soundsfirst frame P95 9 · post-action P95 23 / max 41 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsenable drawing soundsfirst frame P95 9 · post-action P95 22 / max 31 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsdisable auto-save on deletefirst frame P95 10 · post-action P95 33 / max 35 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsdisable tool drawerfirst frame P95 6 · post-action P95 36 / max 37 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsenable tool drawerfirst frame P95 13 · post-action P95 17 / max 39 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsenable screenshot action buttonfirst frame P95 11 · post-action P95 33 / max 36 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsclose Settingsfirst frame P95 4 · post-action P95 26 / max 37 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsreopen coloring booksfirst frame P95 13 · post-action P95 21 / max 24 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsopen coloring bookfirst frame P95 10 · post-action P95 24 / max 24 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsclear coloring pagefirst frame P95 8 · post-action P95 34 / max 53 ms2026-09-25 · 1 day
iPad physical · web · Portrait · Darkactionsshow AI waiting printfirst frame P95 28 · post-action P95 17 / max 72 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsselect custom colorfirst frame P95 11 · post-action P95 20 / max 37 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsselect Magic brushfirst frame P95 5 · post-action P95 17 / max 81 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsopen Settings section: AI Artfirst frame P95 2 · post-action P95 17 / max 48 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsswitch dark theme to lightfirst frame P95 8 · post-action P95 36 / max 37 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsswitch light theme to darkfirst frame P95 7 · post-action P95 36 / max 38 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsdisable drawing soundsfirst frame P95 9 · post-action P95 36 / max 42 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsenable drawing soundsfirst frame P95 8 · post-action P95 37 / max 41 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsenable auto-save on deletefirst frame P95 7 · post-action P95 25 / max 25 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsdisable auto-save on deletefirst frame P95 11 · post-action P95 28 / max 30 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsdisable tool drawerfirst frame P95 6 · post-action P95 34 / max 34 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsenable tool drawerfirst frame P95 12 · post-action P95 17 / max 38 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsdisable screenshot action buttonfirst frame P95 5 · post-action P95 23 / max 27 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsenable screenshot action buttonfirst frame P95 8 · post-action P95 29 / max 31 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsclose Settingsfirst frame P95 4 · post-action P95 25 / max 38 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsopen coloring bookfirst frame P95 10 · post-action P95 22 / max 29 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Lightactionsclear coloring pagefirst frame P95 8 · post-action P95 32 / max 35 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsselect custom colorfirst frame P95 10 · post-action P95 23 / max 40 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsselect Magic brushfirst frame P95 5 · post-action P95 17 / max 84 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsopen Settings section: AI Artfirst frame P95 2 · post-action P95 18 / max 42 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsswitch dark theme to lightfirst frame P95 8 · post-action P95 35 / max 40 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsswitch light theme to darkfirst frame P95 8 · post-action P95 33 / max 37 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsdisable drawing soundsfirst frame P95 7 · post-action P95 36 / max 40 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsenable drawing soundsfirst frame P95 7 · post-action P95 22 / max 26 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsenable auto-save on deletefirst frame P95 6 · post-action P95 25 / max 25 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsdisable auto-save on deletefirst frame P95 8 · post-action P95 29 / max 31 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsdisable tool drawerfirst frame P95 7 · post-action P95 32 / max 35 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsenable tool drawerfirst frame P95 11 · post-action P95 17 / max 38 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsdisable screenshot action buttonfirst frame P95 5 · post-action P95 25 / max 25 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsenable screenshot action buttonfirst frame P95 5 · post-action P95 30 / max 34 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsclose Settingsfirst frame P95 5 · post-action P95 27 / max 40 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsopen coloring bookfirst frame P95 11 · post-action P95 21 / max 26 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsclear coloring pagefirst frame P95 8 · post-action P95 31 / max 36 ms2026-09-25 · 1 day
iPad physical · web · Landscape · Darkactionsshow AI waiting printfirst frame P95 25 · post-action P95 17 / max 45 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Lightactionsselect Magic brushfirst frame P95 5 · post-action P95 17 / max 86 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Lightactionsswitch dark theme to lightfirst frame P95 5 · post-action P95 25 / max 33 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Lightactionsswitch light theme to darkfirst frame P95 4 · post-action P95 26 / max 33 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Lightactionsselect coloring pagefirst frame P95 2 · post-action P95 25 / max 87 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Lightactionsclear coloring pagefirst frame P95 6 · post-action P95 26 / max 27 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Lightactionsshow AI waiting printfirst frame P95 3 · post-action P95 18 / max 35 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Darkactionsselect Magic brushfirst frame P95 6 · post-action P95 17 / max 85 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Darkactionsswitch dark theme to lightfirst frame P95 9 · post-action P95 30 / max 33 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Darkactionsswitch light theme to darkfirst frame P95 4 · post-action P95 25 / max 35 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Darkactionsselect coloring pagefirst frame P95 5 · post-action P95 24 / max 87 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Darkactionsclear coloring pagefirst frame P95 7 · post-action P95 26 / max 28 ms2026-09-25 · 1 day
iPad physical · native · Landscape · Darkactionsshow AI waiting printfirst frame P95 4 · post-action P95 17 / max 38 ms2026-09-25 · 1 day
Android physical · native · Portrait · Lightactionsempty after clear: LANDSCAPE to PORTRAIT rotationfirst frame P95 10.1 · post-action P95 8.4 / max 41.8 ms2026-09-26 · 0 days
Android physical · native · Portrait · Lightactionswith ink: LANDSCAPE to PORTRAIT rotationfirst frame P95 9.8 · post-action P95 8.4 / max 41.7 ms2026-09-26 · 0 days
Android physical · native · Portrait · Darkactionsswitch dark theme to lightfirst frame P95 4 · post-action P95 24.9 / max 33.3 ms2026-09-26 · 0 days
Android physical · native · Landscape · Lightactionsempty after clear: LANDSCAPE to PORTRAIT rotationfirst frame P95 13.4 · post-action P95 16.7 / max 41.7 ms2026-09-26 · 0 days

Results by target

Four modes per target · hover or tap any cell for the numbers behind it
Brush cells show blank-paper paint P95 in ms · gate 20 ms
Brush cells≤ 0.75× gate0.75–1×1–1.5×> 1.5×fails a drawing gatefails, explained by a recorded disposition: links its ADRuncalibrated on a release-gate row: counts as red
Empty cellsN/A by designthe check does not apply to this runtimeUnavailablethis instrument or capture cannot score the cell; the tooltip says whyMissingnot captured yet — a gap to close
Undo✓ pass · ✕ fail against the undo gatesActionspassed/measured — green all pass, amber a few failing, red more than one in ten failing
Paint P95 · ms · gate 20 msverdictpassed
Mode
PenCrayonMagicEraserUndoActions
Release gate · physical iPad and Android4 targets · 16 modesThese rows gate a release: a scoreable red cell needs a recorded product outcome, and a cell an uncalibrated instrument cannot score counts as red here, not as absent.
1. iPad physical · webCalibratediPad13,8 · iPadOS 26.5 · Safari
Portrait · Light
16151616✓37/54
Portrait · Dark
16151615✓39/54
Landscape · Light
16151516✓39/55
Landscape · Dark
15151515✓38/55
2. iPad physical · nativeGate-in-waitingiPad13,8 · iPadOS 26.5 · Capacitor WebView
Portrait · Light
15151516✓47/54
Portrait · Dark
16151515✓48/54
Landscape · Light
15151515✓49/55
Landscape · Dark
15151516✓49/55
5. Android physical · webGate-in-waitingSamsung SM-G990U1 · Android 16 · Chrome 153.0.0.0
Portrait · Light
7.77.87.97.7✓55/55
Portrait · Dark
7.97.87.87.9✓55/55
Landscape · Light
7.97.87.87.9✓41/41
Landscape · Dark
7.97.97.87.9✓41/41
6. Android physical · nativeGate-in-waitingSamsung SM-G990U1 · Android 16 · Capacitor WebView (Chrome 152.0.7977.87)
Portrait · Light
7.77.87.67.8✓53/55
Portrait · Dark
7.87.67.87.6✓54/55
Landscape · Light
7.67.77.77.7✓40/41
Landscape · Dark
7.87.77.77.6✓41/41
Regression tripwire · Mac3 targets · 12 modesA Mac cell that turns red on a change that was green on main is a finding to attribute before shipping; a cell that was already red is not a remainder.
9. Mac · ChromeEarlier captureMac desktop · macOS 26.6.2 (25G83) · arm64 · Playwright Chromium 151.0.7922.34
Portrait · Light
9.399.19.6✓48/48
Portrait · Dark
9.39.19.59.4✓48/48
Landscape · Light
9.49.59.49.2✓49/49
Landscape · Dark
9.29.29.29.5✓49/49
10. Mac · SafariEarlier captureMac desktop · macOS 26.6.2 (25G83) · arm64 · Playwright WebKit 26.5
Portrait · Light
18181817✓48/48
Portrait · Dark
18181818✓48/48
Landscape · Light
18181717✓49/49
Landscape · Dark
18181818✓49/49
11. Mac · FirefoxEarlier captureMac desktop · macOS 26.6.2 (25G83) · arm64 · Playwright Firefox 153.0
Portrait · Light
8.98.78.78.7✓48/48
Portrait · Dark
8.68.68.79✓48/48
Landscape · Light
8.98.78.88.6✓49/49
Landscape · Dark
8.98.78.88.8✓49/49
Advisory · simulators and emulators4 targets · 16 modesThese rows narrow or reject a hypothesis but never fail or approve a release; their red stays visible so a systemic regression still shows.
3. iPad simulator · webEarlier captureiPad mini (A17 Pro) simulator · iOS 26.5 · Safari
Portrait · Light
16141516✓37/47
Portrait · Dark
11121111✓38/47
Landscape · Light
12121115✓40/48
Landscape · Dark
1212716✓38/48
4. iPad simulator · nativeEarlier captureiPad mini (A17 Pro) simulator · iOS 26.5 · Capacitor WebView
Portrait · Light
15161511✓38/48
Portrait · Dark
1111516✓37/48
Landscape · Light
16151616✓37/49
Landscape · Dark
11151112✓37/49
7. Android emulator · webEarlier capturePixel 7 Pro API 33 emulator · Android 13 · Chrome 149.0.0.0
Portrait · Light
16.516.516.516.5✓no control
Portrait · Dark
14.515.515.416.1✓46/48
Landscape · Light
16.416.316.216.4✓27/34
Landscape · Dark
16.116.116.316.3✓no control
8. Android emulator · nativeEarlier capturePixel 7 Pro API 33 emulator · Android 13 · Capacitor WebView (Chrome 149.0.7827.91)
Portrait · Light
16.416.516.416.4✓38/49
Portrait · Dark
16.516.416.416.4✓39/49
Landscape · Light
16.516.516.516.6✓35/35
Landscape · Dark
16.516.616.516.5✓34/35

Most drawing cells aggregate a single capture, so treat a result close to its limit as provisional; each tooltip states the cell’s capture count.

Discrete actions

67 action columns · coverage varies by mode · color is the worst of first-frame P95, post-action P95, and post-action max against its gate
≤ 0.75× gate0.75–1×1–1.5×> 1.5×pass, max over gate in one repeatThe grid scrolls both ways · arrow keys step through cells
Empty cellsN/A by designthe check does not apply to this runtimeUnavailablethis instrument or capture cannot score the cell; the tooltip says whyMissingnot captured yet — a gap to close
Mode passing
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Release gate · physical iPad and Android4 targets · 16 modesThese rows gate a release: a scoreable red cell needs a recorded product outcome, and a cell an uncalibrated instrument cannot score counts as red here, not as absent.
1. iPad physical · web
Portrait · Light37/54
Portrait · Dark39/54
Landscape · Light39/55
Landscape · Dark38/55
2. iPad physical · native
Portrait · Light47/54
Portrait · Dark48/54
Landscape · Light49/55
Landscape · Dark49/55
5. Android physical · web
Portrait · Light55/55
Portrait · Dark55/55
Landscape · Light41/41
Landscape · Dark41/41
6. Android physical · native
Portrait · Light53/55
Portrait · Dark54/55
Landscape · Light40/41
Landscape · Dark41/41
Regression tripwire · Mac3 targets · 12 modesA Mac cell that turns red on a change that was green on main is a finding to attribute before shipping; a cell that was already red is not a remainder.
9. Mac · Chrome earlier capture
Portrait · Light48/48
Portrait · Dark48/48
Landscape · Light49/49
Landscape · Dark49/49
10. Mac · Safari earlier capture
Portrait · Light48/48
Portrait · Dark48/48
Landscape · Light49/49
Landscape · Dark49/49
11. Mac · Firefox earlier capture
Portrait · Light48/48
Portrait · Dark48/48
Landscape · Light49/49
Landscape · Dark49/49
Advisory · simulators and emulators4 targets · 16 modesThese rows narrow or reject a hypothesis but never fail or approve a release; their red stays visible so a systemic regression still shows.
3. iPad simulator · web earlier capture
Portrait · Light37/47
Portrait · Dark38/47
Landscape · Light40/48
Landscape · Dark38/48
4. iPad simulator · native earlier capture
Portrait · Light38/48
Portrait · Dark37/48
Landscape · Light37/49
Landscape · Dark37/49
7. Android emulator · web earlier capture
Portrait · Lightno control
Portrait · Dark46/48
Landscape · Light27/34
Landscape · Darkno control
8. Android emulator · native earlier capture
Portrait · Light38/49
Portrait · Dark39/49
Landscape · Light35/35
Landscape · Dark34/35
Action-number key
  1. 1expand action drawer
  2. 2collapse action drawer
  3. 3change ink color
  4. 4open custom color picker
  5. 5select custom color
  6. 6open brush menu
  7. 7select crayon brush
  8. 8select Magic brush
  9. 9select eraser
  10. 10select pen brush
  11. 11open stroke-width menu
  12. 12change stroke width
  13. 13open Settings
  14. 14open Settings section: Sound
  15. 15open Settings section: Tool Drawer
  16. 16open Settings section: Accessibility
  17. 17open Settings section: Coloring
  18. 18open Settings section: AI Art
  19. 19open Settings section: Saving
  20. 20open Parent Center
  21. 21open Settings section: Install
  22. 22open Settings section: Feedback
  23. 23open Settings section: What's New
  24. 24open Settings section: About
  25. 25switch dark theme to light
  26. 26switch light theme to dark
  27. 27disable drawing sounds
  28. 28enable drawing sounds
  29. 29enable auto-save on delete
  30. 30disable auto-save on delete
  31. 31disable tool drawer
  32. 32enable tool drawer
  33. 33disable screenshot action button
  34. 34enable screenshot action button
  35. 35close Settings
  36. 36first open of coloring books
  37. 37reopen coloring books
  38. 38open coloring book
  39. 39select coloring page
  40. 40clear coloring page
  41. 41save screenshot
  42. 42show AI waiting print
  43. 43finish AI waiting print
  44. 44undo latest stroke
  45. 45tap unavailable undo
  46. 46clear drawing
  47. 47clear drawing on a coloring page
  48. 48empty after clear: PORTRAIT to LANDSCAPE rotation
  49. 49undo clear after blank rotation
  50. 50undo restored stroke after blank rotation
  51. 51clear restored drawing after blank rotation
  52. 52empty after clear: LANDSCAPE to PORTRAIT rotation
  53. 53with ink: PORTRAIT to LANDSCAPE rotation
  54. 54with ink: LANDSCAPE to PORTRAIT rotation
  55. 55open color menu
  56. 56scroll coloring pages
  57. 57disable advanced controls
  58. 58enable advanced controls
  59. 59open coloring books
  60. 60enable Night Mode in the compact shell
  61. 61disable Night Mode in the compact shell
  62. 62disable drawing sounds in the compact shell
  63. 63enable drawing sounds in the compact shell
  64. 64disable tool drawer in the compact shell
  65. 65enable tool drawer in the compact shell
  66. 66disable advanced controls in the compact shell
  67. 67enable advanced controls in the compact shell

Actions failing in the most modes

Counted across the scoreable modes of the 4 release-gate rows — Mac tripwire and simulator/emulator advisory rows, and the row filters above, do not change this list.

  1. 1switch dark theme to light9 of 12 modes failed · worst 2.2× gate
  2. 2select Magic brush8 of 16 modes failed · worst 2.7× gate
  3. 3clear coloring page8 of 16 modes failed · worst 1.7× gate
  4. 4switch light theme to dark8 of 12 modes failed · worst 1.6× gate
  5. 5show AI waiting print7 of 16 modes failed · worst 2.1× gate
  6. 6select coloring page5 of 16 modes failed · worst 2.6× gate
  7. 7enable drawing sounds5 of 12 modes failed · worst 1.9× gate
  8. 8disable drawing sounds4 of 12 modes failed · worst 1.8× gate
  9. 9disable auto-save on delete4 of 12 modes failed · worst 1.6× gate
  10. 10enable screenshot action button4 of 12 modes failed · worst 1.6× gate

Notes and method

What the cells do and do not claim

Capture limitations

19
  • This fold measures product commit 3928cd88edbf441530e473a4e3c0b6767926bfc6, main on 2026-09-23, at which all four physical release-gate rows were recaptured from scratch on 2026-09-23. At that fold, the strict staleness check of the time (ADR-0159, since superseded by ADR-0175) reported every freshly captured section current at that commit.
  • Freshly captured at 3928cd88: every drawing and pen-undo section in all four modes of all four physical rows, except the physical Android web drawing and undo sections: portrait-light and portrait-dark were recaptured at 1e3016ec407413a255e69d6eddaef2274dd3ee3a on 2026-09-25 (issue 2229), and landscape-light and landscape-dark at 8a6ef42bc7a233abe9ca35cb6998daac60e0aa91 on 2026-09-26 (issue 2337); and the portrait-light and portrait-dark action sweeps on physical iPad native. The other fourteen physical action sections were captured after that campaign and folded one section at a time, twelve after harness fixes (issue 2268) and the two Android web portrait sections after a product change (issue 2225): first, all four physical iPad web sweeps at 8e6700d5d801eb481a4bde3d47cea69135dd71b4 over the secure-origin front (issue 2211), and both physical iPad native landscape sweeps at d50d73927f1835bbe231d1c2450f49fbe5803f53, the contentInset fix (issue 2212). Each keeps its own product commit beside its mode’s drawing commit, and its capture date is its fold date, because action artifacts record no capture clock. Six more were recaptured on the phone at 87da0c5a3b4a789d36678a4e10c873f76a6f3c04 on 2026-09-25 and folded the same way (issue 2268): both physical Android web landscape sweeps over direct CDP, and all four physical Android native sweeps through Appium attached to the Capacitor WebView. All eight physical Android action sections were then recaptured at 9993b68445ca19f8ab24d0f11c70c1bd5a8ae54e on 2026-09-26 and folded the same way (issue 2225, the theme change's veil replacing its view transition): the four Android web sweeps over direct CDP and the four Android native sweeps through Appium. No physical action section is preserved.
  • Why twelve of those physical action sweeps were folded after the campaign for harness reasons: physical Android web landscape sweeps failed at 3928cd88 because every color swatch in the landscape compact color flyout measured zero size, and physical Android native sweeps failed at 3928cd88 when the native tap on the Dark theme button was not captured (portrait) and when Appium could not rotate the device to ROTATION_270 (landscape). Both harness failures were fixed afterwards (issues 2213, 2214, and 2215); those first completed sweeps were not kept, so all six sections were recaptured at 87da0c5a, and again with both Android web portrait sections at 9993b684 (issue 2225). Physical iPad web had no scoreable unattended sweep at 3928cd88 because its AI-waiting actions need a secure context; physical iPad native landscape sweeps failed when the second Undo tap after a landscape-to-portrait rotation landed on the canvas. Both are now folded from their later captures.
  • Every physical action section comes from a sweep that covers the current action groups, including ai-waiting and unavailable. The physical Android web and physical Android native landscape modes measure the compact Settings shell; its tool-drawer toggles are new labels, which render as missing, not N/A, on preserved advisory rows whose older plans never offered them.
  • The physical Android native drawing and undo sections come from a probe-host server.url build carrying the ADR-0135 split transport. Those artifacts record pageIdentity unprovable by construction, because the fixed server.url carries no per-cell nonce. Its three drift references were captured before its landscape cells, whose first attempt wrote no artifact and which were recaptured after the end reference, so the references do not bracket the landscape cells.
  • Every physical drawing and undo cell passed its input-fidelity gate. Physical iPad web carries three drawing lost-frame reds against the 1% budget: landscape/dark pen 1.13%, landscape/light eraser 1.03%, and landscape/dark eraser 1.01%. The other seven of the ten e5142fab reds now read 0.71-0.98%. ADR-0174, as amended by the 2026-09-24 rulings, explains all three: the pen reading is inside the driven pen band (above 1%, up to 1.37%), and real-finger eraser captures at 8e6700d5 in both landscape modes (0.04% light, 0% dark) explain both eraser cells. Physical Android web portrait carried six drawing reds (1.03-1.45%) at 3928cd88. That capture had two rig faults. In every portrait cell, an accessibility overlay on the rig phone dropped 20 of 160 strokes (issue 2229), and every stroke landed 48 CSS px below its planned position (issue 2271). The recapture at 1e3016ec corrected both at once, so it does not separate their effects. An earlier A/B cleared only the overlay and kept the offset: portrait-light crayon read a 0.75% median at 3928cd88 against 0.72% at e5142fab. The recapture delivered 160 of 160 strokes in every cell, with the overlay check passing and every stroke landing where it was dispatched. All eight portrait cells now read 0.22-0.52%, and the drift references read 0.38, 0.65, and 0.40%. The physical Android native row carries no red cell.
  • The physical Android web landscape-light and landscape-dark drawing and undo sections captured at 3928cd88 were affected by a dispatch offset. The harness counted the navigation bar beside the page as browser chrome, so every stroke landed 48 CSS px right of its planned position (issue 2271, fixed by PR 2295). On the corrected geometry, every landscape pen capture then failed its undo check, because a 64 px downscale lost the 12 pixels that undo 10 changed (issue 2337). The check now hashes every pixel, and both sections were recaptured at 8a6ef42b. Every cell delivered 160 of 160 strokes, each landing where it was dispatched, and all ten undos restored different pixels.
  • The physical iPad web row is the calibrated Safari approval target. ADR-0156 also requires the physical iPad native and both physical Android rows to be current and scored before campaign completion. Drawing and undo were captured on all four rows at 3928cd88, and physical Android web has since been recaptured on the corrected geometry: portrait at 1e3016ec and landscape at 8a6ef42b. Every physical action section is now current, and no physical section still waits for the issue 2271 recapture.
  • Simulator, emulator, and Mac rows were not recaptured in this physical release-gate campaign. Every section on those rows is explicitly preserved from the prior published report and makes no claim of currency at the final product commit.
  • Action cells are scored under ADR-0156: a post-action max breach counts only when two of the three scored repeats show it; a single breaching repeat is recorded as unconfirmed rather than red. Read each artifact's scoredActionFrameGaps rather than treating the pooled P95/P99/max triple as three repeats.
  • Android physical web and native drawing use the ADR-0135 split input/measurement transport. Fresh artifacts record driving cadence, input fidelity, refresh regime, and page identity. Split-native captures also attest that art.splotch.app was the foreground package.
  • Every Android drawing artifact matched the declared 120 Hz regime (8.3 ms beat), and every iPad drawing artifact matched the 60 Hz regime (17 ms beat). The Android browser moved between campaigns: Chrome 152 to 153 on the web row and WebView Chrome 151 to 152 on the native row.
  • Every folded drawing cell is its first valid capture in the campaign ledgers; no valid red was rerun. The one discarded capture is an off-regime (120 Hz) iPad web start reference, superseded by an in-regime recapture.
  • Physical iPad capture needs a root-owned RemoteXPC tunnel before iOS 26 XCUITest discovery sees the device. See docs/PROFILING-IPAD.md.
  • A landscape phone renders the compact Settings shell, which offers quick toggles and a pointer to portrait instead of the section list. Compare action modes against the same recorded settingsShell; a different label set between portrait and landscape is a shell difference, not a regression.
  • Firefox is Gecko, which no Splotch deployment target ships; read it as the third desktop browser a parent might open splotch.art in, never as evidence about WebKit or Blink.
  • Desktop captures used exact 1366×915 or 915×1366 CSS viewports at DPR 2 — iPad Pro 12.9 geometry, so the canvas area matches the physical-iPad rows. Playwright retains the requested page viewport regardless of the browser window size.
  • Raw perf-profiles are local scratch and are mostly untracked. ADR-0138 keeps representative whole captures under perf-profiles/evidence/; every section not promoted from this campaign is marked preserved before the strict regeneration.
  • 28 cells carry historical results preserved from data.json rather than re-read raw captures: The 2026-09-23 campaign freshly captured every physical drawing and undo section and the portrait action sweeps on physical iPad native. The other fourteen physical action sections were later folded one section at a time from their own captures (issues 2268 and 2225), so no physical section is preserved. The advisory iPad Simulator, Android Emulator, and Mac desktop rows are preserved wholesale, and every preserved section keeps its original product commit and does not claim currency. Fresh physical evidence is promoted under perf-profiles/evidence/2026-09-23-matrix-*-3928/. Preserved cells: iPad simulator · web · portrait-light (drawing, undo, actions); iPad simulator · web · portrait-dark (drawing, undo, actions); iPad simulator · web · landscape-light (drawing, undo, actions); iPad simulator · web · landscape-dark (drawing, undo, actions); iPad simulator · native · portrait-light (drawing, undo, actions); iPad simulator · native · portrait-dark (drawing, undo, actions); iPad simulator · native · landscape-light (drawing, undo, actions); iPad simulator · native · landscape-dark (drawing, undo, actions); Android emulator · web · portrait-light (drawing, undo, actions); Android emulator · web · portrait-dark (drawing, undo, actions); Android emulator · web · landscape-light (drawing, undo, actions); Android emulator · web · landscape-dark (drawing, undo, actions); Android emulator · native · portrait-light (drawing, undo, actions); Android emulator · native · portrait-dark (drawing, undo, actions); Android emulator · native · landscape-light (drawing, undo, actions); Android emulator · native · landscape-dark (drawing, undo, actions); Mac · Chrome · portrait-light (drawing, undo, actions); Mac · Chrome · portrait-dark (drawing, undo, actions); Mac · Chrome · landscape-light (drawing, undo, actions); Mac · Chrome · landscape-dark (drawing, undo, actions); Mac · Safari · portrait-light (drawing, undo, actions); Mac · Safari · portrait-dark (drawing, undo, actions); Mac · Safari · landscape-light (drawing, undo, actions); Mac · Safari · landscape-dark (drawing, undo, actions); Mac · Firefox · portrait-light (drawing, undo, actions); Mac · Firefox · portrait-dark (drawing, undo, actions); Mac · Firefox · landscape-light (drawing, undo, actions); Mac · Firefox · landscape-dark (drawing, undo, actions).

How scoring works

Gates. Drawing passes when blank-paper paint P95 ≤ 20 ms, P99 ≤ 33 ms, max ≤ 50 ms, and lost frame time stays under 1% of in-contact time. Undo passes at engine P95 ≤ 20 ms, next-frame P95 ≤ 33 ms, and next-frame max ≤ 50 ms. An action passes at first-frame P95 ≤ 33.5 ms, post-action frame P95 ≤ 20 ms, and post-action frame max ≤ 33.5 ms. A post-action max over its gate counts only when 2 of the three scored repeats show it (ADR-0156); one breaching repeat renders as a warning, not a failure. Ready P95 appears in tooltips but is not gated: its completion semantics differ per action, so a frame-gate pass says nothing about end-to-end response time.

Lost-frame budget exceptions (ADR-0137). Cells held to a different lost-frame budget, and why:

  • Crayon on ipad-device-web — 1.5%. Crayon deposits wax through pattern-filled strokes that Safari prices per path-length, so the web build cannot merge them across pointermoves (the native WKWebView prices per op and merges per frame instead — ADR-0137 as amended), so it pays a per-move cost every other brush coalesces away, and mirror-by-blit already took it from 2.11%. Across all four orientation/theme modes its median is 1.11-1.17%, but a single capture of landscape-light measured 1.40% and re-measured to 1.17% over three samples. A matrix cell IS a single capture, so this is set above the observed single-sample excursion rather than above the median.
  • Crayon on ipad-device-native — 1.5%. Per-frame crayon op merging (ADR-0137 as amended, issue 1236) brought the native WKWebView from a 2.14% published cell to Safari parity: three same-session samples on 2026-08-25 measured 0.96/1.11/1.44%, median 1.11% — inside the web cell's own 1.11-1.17% median band with the same shape of single-sample excursion. The same residual per-move wax cost now binds both runtimes, so the same 1.5% single-capture budget applies, set by the same above-the-excursion rule.

Recorded dispositions. Drawing reds an ADR explains. The cell still renders FAIL, because the gate still failed; its dashed outline links the ADR that says why the red is not an open product red:

  • Pen on ipad-device-web — lost-frame reds above 1%, up to 1.37%, paint gates passing, ADR-0174. Synthesized-touch transport cost, not product cost: every real-finger pen capture reads 0–0.06%, and on one commit in one session the driven arm read 1.18% and the finger 0%. A driven pen red above 1%, up to 1.37%, with passing paint gates is explained; a reading above 1.37% needs a real-finger capture at that commit.
  • Eraser on ipad-device-web — lost-frame reds 1.19–1.25% at e5142fab8ff2 or 1.01–1.03% at 3928cd88edbf, paint gates passing, ADR-0174. Explained by real-finger eraser captures in both landscape modes (0.04% light, 0% dark), which cover the named readings only: 1.19–1.25% at e5142fab and 1.01–1.03% at 3928cd88. A driven eraser red at any other commit needs a real-finger capture at that commit.

Action allowances on ipad-device-web (ADR-0090, ADR-0160). Actions held to a measured allowance instead of the base post-action gates, and why; every target without a ledger scores them at the base gates:

  • open Settings — post-action P95 ≤ 29 ms. Worst committed P95 28 ms (perf-profiles/evidence/2026-09-05-epic-1567-advanced-controls-certification, landscape/dark at ebc7673b), 27 ms in six further September 2026 captures across three modes at 3c017796, 9af487b3 and e5142fab, 20-26 ms in eleven more. The pane is prewarmed (ADR-0049 amendment) and its open still carries the showModal flip and the heaviest section reveal; Instruments aligns the remaining slow frames with animation completion, compositing-hierarchy changes, layer removal and paint, and the bounded `contain: layout paint` candidate measured negative. Raised from the 26 ms of ADR-0090 under ADR-0160.
  • close Settings — post-action P95 ≤ 22 ms. Worst committed P95 21 ms in three captures (perf-profiles/evidence/2026-09-05-epic-1567-ipad-e514-control landscape/light and landscape/dark; 2026-09-05-epic-1567-ipad-paper-control portrait/light), 17-20 ms in fifteen others. The same dialog retirement over a full-screen paper layer as the coloring picker; it carries no dedicated trace, so ADR-0160 records the attribution as shared and the reopen condition as its own.
  • select coloring page — post-action P95 ≤ 30 ms. Worst committed P95 29 ms (perf-profiles/evidence/2026-09-05-epic-1567-landscape-retirement-controls, landscape/dark at e5142fab), 26-28 ms in eight further captures, portrait/light green at 17. The 29 ms frame sampled in Instruments is GPU-process IOSurface pool eviction, surface creation and Metal submission with no app evaluation in-frame; seven bounded product mechanisms measured negative or insufficient (issue 1569, 2026-09-06 disposition).
  • switch light theme to dark — post-action P95 ≤ 23 ms. Worst committed P95 22 ms (perf-profiles/evidence/2026-09-05-epic-1567-ipad-e514-control, portrait/light), 17 ms in fifteen other captures. A single-capture excursion sized by ADR-0137 worst-single-capture rule: the full-document restyle recomposites every layer in one frame (ADR-0087).
  • with ink: PORTRAIT to LANDSCAPE rotation — post-action P95 ≤ 26 ms. Worst committed P95 25 ms in two captures (perf-profiles/evidence/2026-09-05-epic-1567-ipad-paper-control, portrait/light at 141288da), 22-24 ms in four others; the landscape-origin direction reads 17-18. The slow frame is the first full post-resize interval of the OS rotation; the aligned trace holds GPU surface-pool eviction and command submission beside WebContent layout, and paper-sheet compositor pre-promotion measured negative. Supersedes ADR-0156 decision 5 for this direction only; the 33.5 ms max gate stays.
  • open Settings — post-action max ≤ 56 ms. Capture-environment allowance (issue 1130, ADR-0090 2026-08-26 amendment): every hitch under the 44-55 ms open-Settings frame lands on the automation overlay stack with zero WebContent hitches, but the trace attributes per layer and the real-finger control was confounded by the persistent AutomationModeUI overlay. Covers the observed three-beat frame plus jitter; a clean-device control that still shows the frame retires it.

Action allowances on android-device-web (ADR-0162). Actions held to a measured allowance instead of the base post-action gates, and why; every target without a ledger scores them at the base gates:

  • disable Night Mode in the compact shell — post-action P95 ≤ 33.5 ms. Worst committed P95 33.4 ms (perf-profiles/evidence/2026-09-06-issue-1696-android-night-toggle, landscape/dark full-plan control at f42d0994, two beats in all three scored repeats), 33.3 ms in the e5142fab row capture (perf-profiles/evidence/2026-09-06-epic-1567-android-device-web-e514, landscape/dark) and once in landscape/light (perf-profiles/evidence/2026-09-05-epic-1567-night-mode-control-trace at a9438fc7); 16.7-17.1 ms in ten other captures of the same cell. The paired Chrome trace (issue 1696) puts the click's input task at 26-39 ms on CrRendererMain in every repeat — 9-12 ms of dispatch and a 9.5-14.7 ms whole-document style recalc for the theme token flip that the bounded closed-dialog treatment (PR 1702) did not move — with a DroppedFrame at the first BeginFrame after every click. One 0.1 ms clock quantum above the worst reading and equal to the max gate, so a P95 past it needs three over-gate gaps: spread across repeats the max gate confirms them, concentrated in one repeat this allowance alone fails them.

Release roles (ADR-0156). Release gate · physical iPad and Android: These rows gate a release: a scoreable red cell needs a recorded product outcome, and a cell an uncalibrated instrument cannot score counts as red here, not as absent. Regression tripwire · Mac: A Mac cell that turns red on a change that was green on main is a finding to attribute before shipping; a cell that was already red is not a remainder. Advisory · simulators and emulators: These rows narrow or reject a hypothesis but never fail or approve a release; their red stays visible so a systemic regression still shows. A row’s role follows the hardware it ran on, not its fidelity class; the chip on a release-gate row says whether its drawing instrument is calibrated or the row is a gate-in-waiting.

Empty cells. A cell without a product verdict renders one of three ways. A single struck stroke is N/A by design: the check does not apply to that runtime. A diagonal hatch is unavailable: the capture exists but cannot be scored, because it failed an input-fidelity check, was measured at a refresh rate this target is not scored against, has a failed idle control, or is preserved evidence with no current verdict. A dashed, empty outline is missing: nothing valid was captured, so it is a gap to close. Every tooltip names the reason.

The idle-frame control. Every action sweep includes a control sample that performs no interaction, proving the target can hold frames at rest. When the control fails its own gate the host was dropping frames on its own, so none of that mode’s action scores can be attributed to the app: the mode is marked “no control” and left out of the failure ranking.

One capture per cell. Most drawing cells have one capture behind them; each tooltip states the count. A result close to a limit needs repeat captures before it is trusted either way (ADR-0136).

Focused action captures. Sources are applied in their listed order within each mode. A focused capture replaces only its named actions and requires a full sweep from the same product commit; anything else is refused. Raw drawing tables and action samples are re-scored with the current metric definitions whenever this report is regenerated — stored verdicts are not trusted. A struck action cell is N/A under the action plan that mode’s product surface declared; a dashed one is missing, and both tooltips keep the reason.

Rotation first frames on iPad Safari are N/A rather than gated: under ADR-0142’s resize anchor the value reads 0–2 ms by construction, so rotation there is scored by the post-action frame gates alone.

Candidate actions

14

Additional scenarios and their remaining coverage.

PriorityActionRationaleApplicabilityStatus
P0Sound-source and Clear gesture matrixExercise Drawing/Delete sound toggles, volume drag, and Clear cancel/reverse/success paths with audio enabled and disabled.All web/native targetsPartial: drawing-sound toggle and successful Clear captured; delete sound, volume, and cancelled/reversed Clear remain.
P0Coloring-backed brush matrixMeasure Pen, Crayon, Magic, and Eraser on active coloring art, including reversal, undo, clear, theme swap, and rotation.All targetsPartial: page phases and selection/clear captured; dense ink/theme/rotation combinations remain.
P0Continuous Settings gesturesExercise pane/sidebar scrolling, phone drill/back, quick switches, button-size and volume sliders, and individual tool toggles.All targets; touch variants on mobileNot captured; current suite measures section navigation and selected toggles.
P0Coloring picker cold/warm and race pathsSeparate cold open from warm reopen, page-grid scroll, back, double-tap guard, active-page clear, and progressive pack arrival.All targetsPartial: open/book/scroll/select/clear captured; cold/warm and race variants remain.
P1Deterministic AI interaction flowGate local frames for style choice, generating/minimize/restore, drawing while waiting, completion, refusal, retry, and result decode without gating network latency.Physical targets plus one simulator control per OSNot captured.
P1Parental Gate flowMeasure guarded open, wrong-answer regeneration, backspace, correct solve, close, Parent Center retarget, and policy confirmation.All native targets; representative web targetsPartial: Parent Center entry captured; full gate interaction remains.
P1Screenshot cold versus warmSeparate pointerdown preparation, save readiness, repeated warm save, active-coloring export, and native OS handoff.All targetsPartial: one intercepted save action captured.
P1Theme swaps on realistic contentCompare blank, dense Pen/Crayon, and active coloring/Magic swaps to expose decode, style, and raster costs.All targetsPartial: Settings theme round-trip captured without dense content.
P1Rotation state matrixAdd Settings-open, picker-open, active coloring with ink, AI waiting, and slider-active rotations.Rotatable mobile targetsPartial: blank and generic-ink rotations captured where platform setup allowed.
P2True custom-color dragMeasure drag-across/explore/lift selection, gap snapping, and cancellation instead of a single click.Touch and pointer targetsNot captured.
P2Settings pinch text zoomExercise CSS zoom over the fully mounted Settings surface and reset on section change/close.Physical touch targetsNot captured.
P2Apple Pencil gesturesMeasure Pencil double-tap brush/eraser switching and Pencil/Scribble Clear guards.Physical iPadNot captured by this campaign.
P2Platform-only shell gesturesCover Android web fullscreen/install-banner paths and desktop Ctrl+Z undo.Android web and desktop webNot captured.
P2Lifecycle recoveryBackground/foreground during dense drawing, AI generation, and coloring-pack work to validate recovery and context restoration.Physical and emulated mobile targetsNot captured.

Undo timing per mode

Engine time is the whole undo call: the tile restore plus the undo ink-motion ghost. Where a capture recorded the ghost separately, the engine cell adds its P95 and the restore's; next-frame adds the following rendered frame. Gates: engine P95 ≤ 20 ms, next-frame P95 ≤ 33 ms, next-frame max ≤ 50 ms.

TargetEngine P95Next P95Next maxGate
iPad physical · web · Portrait · Light21111Pass
iPad physical · web · Portrait · Dark21010Pass
iPad physical · web · Landscape · Light21010Pass
iPad physical · web · Landscape · Dark21111Pass
iPad physical · native · Portrait · Light31313Pass
iPad physical · native · Portrait · Dark21212Pass
iPad physical · native · Landscape · Light31212Pass
iPad physical · native · Landscape · Dark21313Pass
Android physical · web · Portrait · Light5.7 (ink motion P95 4.3 ms · restore P95 1.4 ms)14.514.5Pass
Android physical · web · Portrait · Dark6.1 (ink motion P95 4.1 ms · restore P95 2 ms)14.214.2Pass
Android physical · web · Landscape · Light5.9 (ink motion P95 3.8 ms · restore P95 2.1 ms)12.912.9Pass
Android physical · web · Landscape · Dark5.3 (ink motion P95 3.4 ms · restore P95 1.9 ms)1313Pass
Android physical · native · Portrait · Light4.15.75.7Pass
Android physical · native · Portrait · Dark5.466Pass
Android physical · native · Landscape · Light6.56.16.1Pass
Android physical · native · Landscape · Dark5.26.26.2Pass
Mac · Chrome · Portrait · Light0.47.57.5Pass
Mac · Chrome · Portrait · Dark0.46.96.9Pass
Mac · Chrome · Landscape · Light0.36.46.4Pass
Mac · Chrome · Landscape · Dark0.57.37.3Pass
Mac · Safari · Portrait · Light11212Pass
Mac · Safari · Portrait · Dark11010Pass
Mac · Safari · Landscape · Light199Pass
Mac · Safari · Landscape · Dark11111Pass
Mac · Firefox · Portrait · Light57.57.5Pass
Mac · Firefox · Portrait · Dark56.96.9Pass
Mac · Firefox · Landscape · Light47.67.6Pass
Mac · Firefox · Landscape · Dark210.110.1Pass
iPad simulator · web · Portrait · Light11414Pass
iPad simulator · web · Portrait · Dark11616Pass
iPad simulator · web · Landscape · Light11515Pass
iPad simulator · web · Landscape · Dark11212Pass
iPad simulator · native · Portrait · Light01515Pass
iPad simulator · native · Portrait · Dark11414Pass
iPad simulator · native · Landscape · Light11414Pass
iPad simulator · native · Landscape · Dark11414Pass
Android emulator · web · Portrait · Light0.214.814.8Pass
Android emulator · web · Portrait · Dark0.314.414.4Pass
Android emulator · web · Landscape · Light0.814.914.9Pass
Android emulator · web · Landscape · Dark0.215.615.6Pass
Android emulator · native · Portrait · Light0.314.914.9Pass
Android emulator · native · Portrait · Dark0.313.913.9Pass
Android emulator · native · Landscape · Light0.314.214.2Pass
Android emulator · native · Landscape · Dark0.214.714.7Pass

Commit provenance

The product commit each section’s evidence was captured at, with its capture date and its age at this report’s date (ADR-0175).

TargetDrawingUndoActions
iPad physical · web · Portrait · Light3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days8e6700d5d801…2026-09-25 · 1 day
iPad physical · web · Portrait · Dark3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days8e6700d5d801…2026-09-25 · 1 day
iPad physical · web · Landscape · Light3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days8e6700d5d801…2026-09-25 · 1 day
iPad physical · web · Landscape · Dark3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days8e6700d5d801…2026-09-25 · 1 day
iPad physical · native · Portrait · Light3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days
iPad physical · native · Portrait · Dark3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 days
iPad physical · native · Landscape · Light3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 daysd50d73927f18…2026-09-25 · 1 day
iPad physical · native · Landscape · Dark3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 daysd50d73927f18…2026-09-25 · 1 day
Android physical · web · Portrait · Light1e3016ec4074…2026-09-25 · 1 day1e3016ec4074…2026-09-25 · 1 day9993b68445ca…2026-09-26 · 0 days
Android physical · web · Portrait · Dark1e3016ec4074…2026-09-25 · 1 day1e3016ec4074…2026-09-25 · 1 day9993b68445ca…2026-09-26 · 0 days
Android physical · web · Landscape · Light8a6ef42bc7a2…2026-09-26 · 0 days8a6ef42bc7a2…2026-09-26 · 0 days9993b68445ca…2026-09-26 · 0 days
Android physical · web · Landscape · Dark8a6ef42bc7a2…2026-09-26 · 0 days8a6ef42bc7a2…2026-09-26 · 0 days9993b68445ca…2026-09-26 · 0 days
Android physical · native · Portrait · Light3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 daysb453e90c525b…2026-09-26 · 0 days
Android physical · native · Portrait · Dark3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 daysb453e90c525b…2026-09-26 · 0 days
Android physical · native · Landscape · Light3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 daysb453e90c525b…2026-09-26 · 0 days
Android physical · native · Landscape · Dark3928cd88edbf…2026-09-23 · 3 days3928cd88edbf…2026-09-23 · 3 daysb453e90c525b…2026-09-26 · 0 days
Mac · Chrome · Portrait · Lightd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Chrome · Portrait · Darkd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Chrome · Landscape · Lightd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Chrome · Landscape · Darkd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Safari · Portrait · Lightd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Safari · Portrait · Darkd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Safari · Landscape · Lightd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Safari · Landscape · Darkd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Firefox · Portrait · Lightd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Firefox · Portrait · Darkd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Firefox · Landscape · Lightd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
Mac · Firefox · Landscape · Darkd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 daysd17100cb8e9c…2026-09-03 · 23 days
iPad simulator · web · Portrait · Lightc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 days
iPad simulator · web · Portrait · Darkc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 days
iPad simulator · web · Landscape · Lightc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 days
iPad simulator · web · Landscape · Darkc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 daysc80fc3b240a3…2026-09-01 · 25 days
iPad simulator · native · Portrait · Light13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days
iPad simulator · native · Portrait · Dark13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days
iPad simulator · native · Landscape · Light13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days
iPad simulator · native · Landscape · Dark13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · web · Portrait · Light13643a1f2cc5…2026-08-28 · 29 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · web · Portrait · Dark13643a1f2cc5…2026-08-28 · 29 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · web · Landscape · Light13643a1f2cc5…2026-08-28 · 29 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · web · Landscape · Dark13643a1f2cc5…2026-08-28 · 29 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · native · Portrait · Light13643a1f2cc5…2026-08-28 · 29 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · native · Portrait · Dark13643a1f2cc5…2026-08-28 · 29 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · native · Landscape · Lightd17100cb8e9c…2026-09-03 · 23 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days
Android emulator · native · Landscape · Darkd17100cb8e9c…2026-09-03 · 23 days6961e50b685d…2026-08-21 · 36 days13643a1f2cc5…2026-08-28 · 29 days