test tooling

Run the tests a change can reach.

tap selects tests precisely from the graph — kind(test, rdeps(//…, changed)) — then content-hashes the owned target graph so an unchanged test is skipped at the execution layer via the RBE cache. Flake tracking and culprit-finding come with it.

preview
Precise selection: kind(test, rdeps(//…, changed))Target-graph content-hashing for execution-level skippingFlake tracking + culprit-finding (bisect)Public rules_tap ships a prebuilt CLI — engine stays private
vs folder-based CI

Test what a change reaches. Nothing less, nothing more.

Directory-based selection over-runs trivial changes and misses the far target a graph edge connects.

tomato-bazel tap
package-heuristic CI
Test selection
rdeps + content-hash impact
Guess by folder, or run everything
Graph-breaking change
Selected, with the reason
Silently under-tests
Unchanged test
Skipped at the RBE cache layer
Re-run every time
Flakes
Tracked + culprit-found
Retried and forgotten

One graph, from source to build.

tap is one of 6 services in the tbzl.dev source & build layer — open at the edges, yours at the core.