Skip to content

feat(tools): soak-check.sh + HARDWARE.md soak runbook — the identical stress test for any box - #442

Merged
genwave-radio merged 2 commits into
mainfrom
feat/soak-runbook
Aug 9, 2026
Merged

feat(tools): soak-check.sh + HARDWARE.md soak runbook — the identical stress test for any box#442
genwave-radio merged 2 commits into
mainfrom
feat/soak-runbook

Conversation

@genwave-radio

Copy link
Copy Markdown
Collaborator

Dean's ask before Pi 4 testing: the soak procedure as a runnable, documented artifact. 🧪

What ships

  • tools/soak-check.sh — one read-only command = one checkpoint: every step-8 criterion as a ✅/❌ line plus the memory snapshot to record. Runs on the box or via ssh <box> 'bash -s' < tools/soak-check.sh.
  • HARDWARE.md "Soak runbook" — prep (the config.txt overclock trap FIRST, disk sanity per gh-launch.sh --pinned: prune superseded release images after a healthy up — 46GB of dead tags filled the demo box mid-deploy #441), launch, checkpoint cadence, pass criteria, and the gotchas that have burned us (status-json hides mounts by design; :8000 not host-published; UTC/BST log skew → docker logs -t only; docker-exec-inside-cgroup measurement hazard; known-benign error lines).

Validation

Run live against the Pi 5 at day 7 of its soak. It works — and it immediately caught what my manual checkpoint had missed: three ~2s safe-branch engagements (Aug 7 19:58 / 22:04, Aug 8 04:44 UTC, all in one overnight band, none in the 36h since, no correlated api warnings). Strict criterion says those are reds; whether ~6 seconds of safe-branch across 168 hours passes the 7-day bar is Dean's call — the tool's job is that nobody has to notice by ear.

Second run after the engagement-counting refinement confirms: only switches AWAY from the main queue count; paired recovery switches are informational.

… stress test for any box

One read-only script per checkpoint: firmware/throttle (incl. the config.txt
overclock trap), restarts/OOM, memory snapshot, disk/NFS, /health, stream
truth (icecast log + /proc/net/tcp — status-json hides mounts by design),
safe-branch engagements from docker-side UTC timestamps, render pressure,
error counts. Validated live against the Pi 5 at day 7 — where it caught
three ~2s safe-branch blips the manual checkpoint missed.
@genwave-radio
genwave-radio merged commit 9028a7b into main Aug 9, 2026
11 checks passed
@genwave-radio
genwave-radio deleted the feat/soak-runbook branch August 9, 2026 19:27
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant