Troubleshooting
Unable to find executable for <platform>
Section titled “Unable to find executable for <platform>”The gem’s transport binary for your CI platform isn’t in the lockfile. Add it and commit the lockfile:
bundle lock --add-platform x86_64-linuxSupported platforms are x86_64-linux, aarch64-linux, x86_64-darwin and arm64-darwin.
The gem installs but says the tracer couldn’t be built
Section titled “The gem installs but says the tracer couldn’t be built”The selective_tracer native extension needs make and a C compiler. Everything except recording test maps works without it. To record, add build-essential (Debian and Ubuntu) or the equivalent to the CI image, or run recording from a job that has a compiler.
The runner exits with Too many retries
Section titled “The runner exits with Too many retries”The node couldn’t hold a connection to Selective after repeated attempts with backoff. Check that the job can reach app.selective.ci over the network and that SELECTIVE_API_KEY is present and correct. Rerun with --debug for the connection log.
Nodes each run the whole suite
Section titled “Nodes each run the whole suite”They aren’t joining the same run. On a provider that isn’t detected automatically, make sure SELECTIVE_RUN_ID is identical across nodes and SELECTIVE_RUNNER_ID is different for each. On detected providers this comes from the parallel job index; on GitHub Actions pass the matrix index as runner-id to the setup action.
Tests aren’t being skipped
Section titled “Tests aren’t being skipped”In order: the suite must be in select or live mode, not record or shadow. There must be a map for the run’s environment; the suite’s settings page shows each map’s age and any failed recording. A run that records a new map (the daily job, or the first run after the re-record interval) runs everything. Nothing in the change may match a full-run pattern, or touch a file no test was seen using. shadow mode shows what would be skipped and why, which is the fastest way to see which of these applies.
The runner prints running all tests (no repository snapshot)
Section titled “The runner prints running all tests (no repository snapshot)”Selection compares the commit’s files against the map, and got no list of them. The runner reads it from the git checkout (git ls-tree); without a .git directory (RWX’s default clone, some cache-restored workspaces) Selective fetches it from GitHub, which needs the Selective GitHub App installed on the repository. Keep the checkout’s .git, or install the app from Settings → GitHub in the dashboard. A recording run in this state can’t record either.
A map is never recorded
Section titled “A map is never recorded”Check the suite’s settings page: it shows each map’s age, a recording in progress, and the error from the last failed recording. If the runner prints that the map is due but these runners can't record, the tracer didn’t build (see above). If no run ever records, check the daily job really sets SELECTIVE_TEST_MAP_RECORD=1: its output should include Recording a test map.
The warm-up answers but runs don’t use it
Section titled “The warm-up answers but runs don’t use it”A prepared decision is reused only by a run of the same suite, commit and base. Compare the warm-up’s sha, base_sha and target_branch with what the runner reports on your provider. On GitHub Actions, pull_request runs report github.sha (the merge commit), not the branch head. 401 from the warm-up means the API key is wrong; 400 means sha or git_repo_full_name is missing.
Ordering isn’t putting my tests first
Section titled “Ordering isn’t putting my tests first”Ordering needs SELECTIVE_BASE_SHA or SELECTIVE_TARGET_BRANCH. Detected providers set them for pull requests; for pushes to a branch with no PR there may be no base, in which case ordering falls back to plain distribution.
selective tail exits 3
Section titled “selective tail exits 3”No build exists yet for the commit at HEAD. Either CI hasn’t started, or your local HEAD isn’t the commit that was pushed. Use --commit <sha> or --run-id <id> to point at the right one.
selective tail exits 4
Section titled “selective tail exits 4”Authentication or network. selective auth status says whether your token still works. In CI or an agent, check SELECTIVE_TOKEN is set.
Something else
Section titled “Something else”Rerun with --debug, and email the output to [email protected].