Skip to content

Let stopped effects return without querying visibility - #1732

Merged
trissim merged 4 commits into
mainfrom
work/comms-phone-performance--P128--toad
Nov 10, 2026
Merged

trissim merged 4 commits into
mainfrom
work/comms-phone-performance--P128--toad

Conversation

@trissim

@trissim trissim commented Nov 10, 2026 •

Copy link
Copy Markdown

Result

14 focused cases pass. After rebasing over P131, the 95-case integration run passed94 and caught my benchmark's placement under tests/: it was neither collected nor support. NRA relocated the whole script byte-for-byte into tests/support; the final9 layer guards pass. These are separate runs, not a claimed95-pass single run. No product-control failure remains.

The old phone-stack source fails both stopped-frame controls: unstarted and completed effects each query visibility once despite returning a final frame that ignores it. Running/covered frames at three positions pass before and after.

A fixed-work native Android comparison on the same real sidebar row measured its actual completed fade and moving name wave. Both paths warmed; A/B/B/A,10,000 calls per sample, no cProfile. Equal counts of those two getters: about177ms before versus121ms after (31% less wall time),171.8ms versus120.0ms CPU. The moving wave alone was about6% slower; the completed fade saving outweighed that in this pair. Outputs matched. This is not a whole-paint, scrolling-latency or display-FPS improvement claim.

Change

AnimationEffects.effect_frame asks its existing effect_phase owner to select the current phase, then passes the existing animation target to that phase. Base/final phases return the final frame immediately. EffectRunning.shown acquires the target's live visibility only for its moving answer.

No visibility cache, flag, new phase, cadence change or duplicate clock is introduced. Position-dependent animation remains owned by Animation.at; covered targets still show the final frame. EffectRunning.now already owns completion and now governs this caller too.

Evidence

  • New controls cover unstarted, elapsed-completed, visible-running and covered-running frames, including three row positions.
  • 14 passed: effect visibility, animation clock returning to the event loop, arrival fades, held-content fade frames and welcome title effects.
  • Old-path control: two expected assertion failures, three running/covered cases pass.
  • Initial test-environment failures are kept separately; they are not evidence.
  • Initial related callers and guards:79 passed, two existing failures accepted by P131. P131 merged independently as Toad1733; P128 is rebased over it.
  • Integrated run:94 passed, my benchmark-placement guard failed. Existing NRA RelocateModuleToNewModuleOperation moved the original script into support, preserved all5178bytes and removed its old path. Final layer-guard run:9 passed. Logs: p128-rebased-tests.log and p128-placement-guards.log in the owned scratch directory.
  • Private Android candidate differs from P95 only by frame_presentation.py. Real native startup and remote Welcome sidebar completed with app exit0 and no exception during the getter controls.
  • Fixed-work receipts: /home/ts/.cache/agent-scratch/comms-phone-performance/comms-phone-performance-p128-row-effects/result.json. The script restores original method signatures before yielding the UI loop; old implementations come from the actual previous source, not hand-written approximations.
  • Minimal phone wheel:373members identical to P95 except toad/frame_presentation.py and RECORD; METADATA/WHEEL/entry points identical. Wheel SHA256:2c68587aa0ee632a0e2c387498da9439486213ed561c6360eec52a433b9aa65c.
  • Normal installed-package sidebar/history delivery follows; physical display FPS and scrolling latency remain unmeasured.

P128. No user sessions, saved tabs or installed packages changed by this source commit.

@github-actions

github-actions Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

debt-src at f3fd3ff blocks on 2 lines:

grew TypeErrors:src/toad/frame_presentation.py +1
found TypeErrors:src/toad/frame_presentation.py at src/toad/frame_presentation.py:477 (Argument 1 to "effect_phase" of "AnimationEffects" has incompatible type "Effect[Shown]"; expected "Effect[FrameT]"  [arg-type])

@trissim
trissim marked this pull request as ready for review November 10, 2026 05:35
Copilot AI balanced review requested due to automatic review settings November 10, 2026 05:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@trissim
trissim force-pushed the work/comms-phone-performance--P128--toad branch from 87c2baf to f3fd3ff Compare November 10, 2026 05:56
@trissim
trissim merged commit cdc6a76 into main Nov 10, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants