Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

CI: Add a scheduled job that runs the clip launcher fuzz tests with new seeds

Open
#460 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
56/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
cpp, github-actions
Domain
ci-cd, testing

Research direction

Read tracktion_ClipLauncherFuzz.test.cpp and the existing GitHub Actions workflows; first check how the fuzz test reads its existing seed environment variables and how TestRunner is built with Signalsmith enabled. Add the scheduled and manually triggered workflow, seed-range support, a bounded run, and actionable failure summaries. Done means the workflow runs the requested fuzz test with varying seeds and a timeout, and reports enough failure details to reproduce a seed locally.

Written by the indexing model from the issue text.

Description

enhancement

Summary

tracktion_ClipLauncherFuzz.test.cpp (Tracktion/tracktion_engine#458) runs seeds 1 to 10 on every CI run, so CI only ever replays the same 10 scenarios. Running more seeds locally found real bugs that the default 10 didn't:

  • stuck notes across graph rebuilds
  • a click just before launched clips stop
  • one-shots playing past their end
  • MIDI events on block boundaries
  • looped MIDI clips going silent after a resync

A scheduled job would keep exploring new scenarios without slowing down PR CI.

Task

  • Add a scheduled workflow, e.g. nightly, plus workflow_dispatch so it can be run by hand. It only needs to build TestRunner (Release, Linux is enough) and run -tc="Clip launcher fuzz*".
  • Run a different seed range each time, e.g. starting from the run number or the date. This needs a small change to the test: a start-seed environment variable alongside the existing TE_CLIP_LAUNCHER_FUZZ_SEEDS (count) and TE_CLIP_LAUNCHER_FUZZ_SEED (single seed).
  • Size the run for a time budget. The four variants take about 4 s per seed in Release on a Mac, so 200 seeds is roughly 15 minutes.
  • Build with Signalsmith time-stretching, as the audio checks only run with it (other stretchers change a clip's start).
  • Set timeout-minutes.
  • Make failures easy to act on. Each failure prints its seed, the clips and a timed schedule, so put those in the job summary, and consider notifying or opening an issue.

Notes

  • A failure here may be a long-standing bug that a new seed happens to hit, not a regression in the latest commit. Reproduce it locally with TE_CLIP_LAUNCHER_FUZZ_SEED=N.
  • Two known minor issues are tolerated by the tests:
    • launched audio is resynced at an arrangement loop wrap, so the tests skip 64 frames after each wrap
    • sinc resampling dips the level about 1.5% just before a loop point

Refs Tracktion/waveform_beta#1286

Dominant language
C++
Stars
1.5k
Forks
222
Avg merge
15h 44m
Merged PRs (30d)
33

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Tracktion/tracktion_engine

All issues in Tracktion/tracktion_engine

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.