This audit uses project-owned documentation or source and established research literature. It is a boundary analysis, not a novelty claim. Several existing systems already provide sophisticated affected selection, conservative fallbacks, explanations, and shadow prediction. Affected Verification should reuse them as evidence providers where they are authoritative.
| System | Input evidence | Selection unit | Static/runtime | Uncertainty behavior | Non-test verification | Skip explanation | Shadow validation | Sufficiency claim | Intended reuse |
|---|---|---|---|---|---|---|---|---|---|
| Nx affected | Git base/head or supplied files, project graph, source/config analysis, lockfile analysis | Projects, then requested targets/tasks | Primarily static workspace and project/task graph | Conservative lockfile default marks all projects; graph/plugin behavior can broaden | Yes: any Nx target such as lint, test, build, or custom task | Affected graph and task graph explain inclusion; no first-class reason for every omitted task | No general OSS CLI shadow/full miss contract found | Claims a minimum affected project set, not acceptance sufficiency across verification classes | Consume affected projects/task graph and its failsafe signals |
Turborepo --affected |
Git range, package graph, global dependencies, optionally task input globs | Packages by default; tasks with affectedUsingTaskInputs |
Static package/task/input graph | Global configuration and lockfile changes select all; missing Git history can fall back broadly | Yes: caller-named Turbo tasks | --dry=json shows planned tasks, but not an argument for every skipped task |
No built-in miss classifier found | No cross-class acceptance sufficiency claim | Consume affected tasks/packages and global-change signals |
Jest --findRelatedTests |
Supplied source files and Jest's module dependency information | Test files/tests | Static module-resolution evidence, not runtime coverage | No general external uncertainty/policy model; caller owns source list and configuration | No; tests only | Lists selected tests, not a first-class reason for each omitted test | No | “Related” test selection, not acceptance sufficiency | Use its related-test result as one test-evidence provider |
Vitest related / --changed |
Supplied files or Git changes plus static imports | Test files | Static imports; documented dynamic-import limitation | forceRerunTriggers and config/package changes can force the full suite |
No; tests only | No durable per-skip argument in the core CLI | No general miss observation contract | No acceptance sufficiency claim | Use related/changed output and propagate its limitations |
| pytest-testmon | Per-test executed-code dependencies from Coverage.py plus source/block changes and persisted .testmondata |
Pytest tests | Runtime coverage plus source analysis | First qualifying run executes all; failed tests rerun; mode conflicts can disable selection/collection | No; tests only | Selection can be inspected, but no cross-catalog reason for every skip | --testmon-noselect runs all while prioritizing likely failures, but no durable generic miss contract |
Makes scoped affected-test claims, not whole-change verification sufficiency | Use runtime test-to-code evidence and explicit database readiness state |
| vitest-affected | Git changes, cached Vitest runtime import data, delta static parsing, explicit full-suite triggers | Vitest test files | Runtime-observed imports plus static delta parsing | Cache/git/graph failure falls back to full; first run is full; documented non-import gaps need triggers; stale cache warns but does not force full | No; tests only | Yes: selected chains and a why-not explanation based on absence from the cached graph | Yes: predicts selection while the full suite runs and emits decision data | Explicitly advises retaining full/periodic truth; no cross-class sufficiency claim | Reuse runtime graph, explain trails, fallback signals, and shadow observations rather than rebuilding them |
| Bazel query | Declared target/build graph and query universe | Build/test targets | Static declared build graph | Query scope and graph completeness are caller responsibilities; --keep_going tolerates errors but is not sufficiency |
Queries can select any target; Bazel can build/test selected targets | rdeps, somepath, and allpaths can explain graph relationships |
No generic selection-miss contract | No change-acceptance sufficiency claim | Consume target/reverse-dependency paths and configuration boundaries |
| Pants changed targets | Git changes, inferred/declared target dependencies, changed options |
Targets supplied to any goal | Static target/dependency graph | Can include direct or transitive dependees; no general evidence-sufficiency state | Yes: selected targets can feed test, lint, package, and other goals | Target introspection can explain graph membership; no per-skip verification argument | No generic miss classifier | No whole-change sufficiency claim | Consume changed target closure and goal/task metadata |
| Azure Pipelines Test Impact Analysis | Managed-code test impact data and source changes | Automated tests | Runtime instrumentation/impact data | Unknown file types fall back to all tests; periodic full runs are configurable and recommended | No; tests only | Reporting exposes TIA outcome, not a generic per-skip argument | Periodic full runs provide validation opportunity, but no portable durable miss schema | Scoped platform TIA, not cross-class acceptance sufficiency | Reuse impacted-test result, unknown-type fallback, and full-run cadence evidence |
Regression-test selection is a mature research field. Yoo and Harman's survey distinguishes minimization, modification-aware selection, and prioritization. Rothermel and Harrold's safe regression-test selection work uses “safe” in a formal, controlled-program sense. This project must not borrow that term for a multi-language, multi-check planner without equivalent proof.
The prototype's defensible distinction is narrower: it combines potentially heterogeneous selector evidence with an explicit verification catalog and risk policy, then emits an acceptance-oriented argument covering tests and non-test checks, uncertainty, escalation, and every catalogued skip. The individual graph, coverage, affected-target, explanation, and shadow mechanisms are prior art.
No novelty is claimed. Future comparison must include full verification, native affected tooling, Affected Verification, and Affected Verification consuming native tooling. Value exists only if the composed argument improves workload without increasing relevant misses under controlled shadow evidence.