Skip to content

feat(soak): function exerciser — every user action churned + invariant-checked (v10.12.0) - #47

Merged
tcconnally merged 1 commit into
mainfrom
feat/soak-function-exerciser
Jul 15, 2026
Merged

feat(soak): function exerciser — every user action churned + invariant-checked (v10.12.0)#47
tcconnally merged 1 commit into
mainfrom
feat/soak-function-exerciser

Conversation

@tcconnally

Copy link
Copy Markdown
Owner

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 INVARIANT and 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

  • Trash tag deliberately excluded: soak-writing ToDelete feeds the cleanup-delete pipeline — a stray tag could cost a real file. Favorites are immediate double-toggles (net zero; writes HTTP-status-verified).
  • At most one cell audible at a time, at volume 25, previous re-muted first, all muted at soak end — an hour of testing isn't an hour of random noise. Same single-instance discipline for pause (and a paused cell deliberately doesn't auto-advance, so the exerciser resumes it before pausing another).
  • HYPERWALL_SOAK_ACTIONS=0 restores advances-only churn.

Reporting

SOAK res @Nmin and SOAK done now carry the per-action histogram + invariant_violations alongside 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 VideoCell asserting 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

…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>
@tcconnally
tcconnally merged commit bb2e593 into main Jul 15, 2026
2 checks passed
@tcconnally
tcconnally deleted the feat/soak-function-exerciser branch July 15, 2026 02:04
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.

1 participant