feat(soak): function exerciser — every user action churned + invariant-checked (v10.12.0) - #47
Merged
Merged
Conversation
…ifies invariants The soak only churned advances; the interactive surface (mute/volume/ seek/pause/loop/prev/favorite) is where this campaign's state-drift bugs actually lived, and none of it was endurance-tested. Each churn tick now drives a random weighted USER ACTION through the same handlers a real click takes (button .click(), slider grabs — never private state pokes), then verifies invariants: muted==btn checked==audible property, unmuted-implies-volume, looping==btn. A mismatch logs SOAK INVARIANT and counts toward the summary — the soak is now a live regression net for the drift class, not just a stability monitor. Safety by design: - The trash tag is deliberately ABSENT from the action set: soak-writes of ToDelete feed the cleanup-delete pipeline — a stray one could cost a real file. Favorites are immediate double-toggles (net zero, HTTP-status-verified since the audit). - At most ONE cell audible at a time, at volume 25, previous re-muted first, everything muted at soak end — an hour of testing is not an hour of random noise. Same single-instance rule for pause. - HYPERWALL_SOAK_ACTIONS=0 restores advances-only churn. SOAK res/done lines now carry the per-action histogram + invariant_violations. New test drives every action against a real offscreen VideoCell and asserts zero violations + net-zero side effects. Version 10.12.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The soak becomes a full function exerciser: each churn tick drives a random weighted user action — advance, prev, seek (real slider grab), mute/unmute cycle, volume, pause/resume, loop, favorite — through the exact handlers a real click takes, then verifies state invariants (muted ↔ button ↔ audible glow, unmuted-implies-volume, looping ↔ button). A mismatch logs
SOAK INVARIANTand rides the summary — the soak is now a live regression net for the state-drift class the audit hunted, not just a stability monitor.Safety by design
ToDeletefeeds the cleanup-delete pipeline — a stray tag could cost a real file. Favorites are immediate double-toggles (net zero; writes HTTP-status-verified).HYPERWALL_SOAK_ACTIONS=0restores advances-only churn.Reporting
SOAK res @NminandSOAK donenow carry the per-action histogram +invariant_violationsalongside the resource slopes. Combined with v10.11's freeze counters, one soak run now measures: leaks, loop lag, decode quality, advance health, freezes, and every interactive function.Tests
New: every action driven against a real offscreen
VideoCellasserting zero invariant violations and net-zero side effects (re-muted, loop off, favorite restored). Suite green; version 10.12.0; exe rebuilt.🤖 Generated with Claude Code