# Ordered browser scheduling tests

Completed 2026-10-10 in the existing Brave browser through browser automation. All five tests ran in the requested order for approximately 30 seconds each. Checkout: experiment/manual-scheduling-capture, commit 65f3fd1d0048fc7979a616488d875db288ca4cde. Native-720p backend on port 8002; diagnostic frontend on port 4835. No inference, presenter, queue, protocol or source changes were made.

| Test | Duration (s) | rAF callbacks/s | rAF interval p95 (ms) | Additional result |
|---|---:|---:|---:|---|
| 1. rAF only | 30.009 | 8.43 | 1016.5 | No image work, React or streaming |
| 2. JPEG decode only | 30.006 | 8.86 | 1016.5 | 262 decodes; median 3.1 ms, p95 6.5 ms |
| 3. Predecoded canvas drawing | 30.006 | 1.10 | 1016.8 | 33 draws; median 0 ms, p95 0.1 ms |
| 4. LIVE Explorer | 30.015 | 1.17 | 1016.7 | Received 27.32 FPS; canvas 1.03 FPS |
| 5. rAF only again | 30.008 | 8.40 | 1016.5 | Similar to first rAF-only run |

## LIVE GPU result

LIVE and real 1280 x 720 canvas were verified before starting measurement. This was stationary playback, with no scripted movement input.

- Genuine generated FPS during server metric interval: 27.47 (824 generated frames / 29.997 seconds). Server telemetry samples have slightly different boundaries from the client timer. Cumulative server generated FPS at measurement end: 28.00.
- Received frames during client interval: 820; canvas draws: 31.
- Intentional presentation skips: 789. These are not transport loss.
- Server drops, decode errors and protocol errors: all zero.
- Same session and epoch throughout: c7064758e031410da53fe83a3df9cc1d, epoch 5.
- At final server telemetry sample: 1124 generated frames, 1124 acknowledged frames.
- Explorer blob-source-to-image-load latency: median 1.3 ms, p95 8.4 ms, maximum 33.3 ms. This includes loading/dispatch and is not pure decoder CPU time.
- Canvas drawImage submission time: median 0 ms, p95 0.1 ms. This does not measure GPU composition or display scanout.
- PyTorch reserved memory: 4476 MiB; process-lifetime peak reserved: 8894 MiB. Peak is not specific to this 30-second window.
- Movement control-to-canvas latency was not measured: no movement stimulus was issued in this scheduling test.
- Experimental session stopped cleanly afterward. Backend returned ready with model_load_count 1.

## Interpretation and limits

One-second rAF gaps occur in the standalone page without React or Waypoint. Decode/load and JavaScript draw submission costs are far below those scheduling gaps. The repeated rAF-only result is similar to the first, while image drawing modes are even more heavily constrained. The averages of 8.4-8.9 callbacks/s include short fast intervals and long gaps; they are not evidence of smooth 8 FPS playback.

The retained visibility/focus observations report visible/true, and no long tasks were reported. Those values do not prove unconstrained foreground rendering. Browser power-saving, OS occlusion and actual compositor behavior were not independently measured. This experiment implicates browser scheduling but does not establish whether automation, browser configuration or another rendering condition causes it. It cannot be used to claim normal human-operated Explorer FPS or presenter improvement.

For an independent comparison, open the existing scheduling-test.html page yourself in a regular Brave window and repeat this order without automation, keeping the window visible and downloading each JSON. Follow HUMAN_BROWSER_DIAGNOSIS.md for settings observations. Do not alter the frame queue based on these constrained measurements.

## Evidence

The adjacent 01-raf.json, 02-decode.json, 03-draw.json, 04-explorer.json and 05-raf-repeat.json contain the displayed result summaries, including retained visibility samples and timing percentiles. They are not full raw timing-array exports. Screenshots: 04-explorer.png and 05-completed.png. The page's Download JSON controls provide complete raw timing arrays for human-operated runs.
