DiffCI

Support matrix

Language support is an evidence boundary, not a logo list.

DiffCI proposes a narrow test command only when it can resolve the repository structure, dependency edges, test identities, and execution context it needs. Unsupported or ambiguous behavior retains full validation.

Implemented scope

SurfaceImplemented analysisConservative boundary
JavaScript / TypeScriptDependency analysis, test discovery, and command mappings for supported test runners.Dynamic resolution, incomplete aliases, global configuration, or an unrecognized runner can require the full command.
VueVue SFC script imports, literal Options API component registrations, compiled-template asset imports, and propagation into importing JS/TS tests.Nuxt conventions, preprocessors, custom or external blocks, glob imports, and unresolved runtime components require full validation unless a verified isolated-suite policy protects them.
GoOne root module, native package metadata, transitive package selection, embeds, build-context capture, and package-level go test commands.Workspaces, local replacements, generation, cgo/native objects, plugins, inactive files, incomplete metadata, and undeclared nested-module scope retain full validation.
Maven / Java / KotlinConventional multi-module reactors, module dependency propagation, standard source/test layouts, Surefire-style test names, and reactor command proposals.Nonstandard layouts, generated sources, integration-test conventions, profiles not represented in configuration, and some POM changes require full validation.
Mixed Go and JS/TSBoth ecosystems can be detected.Full validation remains required until cross-language relationships are explicitly declared and modeled.
Python, Svelte, Astro, C#, RustNo semantic adapter in the current release.DiffCI does not claim affected-test selection for these ecosystems; use the repository's normal validation.

What causes a full-validation fallback?

  • Execution context is missing. The selected command cannot reproduce required setup, services, generated output, profiles, or environment variables.
  • The dependency model is incomplete. A runtime edge, workspace relationship, import form, or generated source cannot be resolved conservatively.
  • The comparison is incomplete. The checkout lacks the base commit or the current change cannot be represented as a valid Git range.
  • A global input changed. Lockfiles, workflows, root build configuration, and runner configuration can invalidate every narrow selection.

Check the repository you actually have

Static support labels do not establish that a particular checkout is eligible. Run analysis without test execution first:

npx "@diffci.com/diffci@latest" observe --no-send

The report names selected tests or records the reason full validation is required. Use check only when the inferred full and selected commands are allowed to execute in the current environment.

Configuration examples

A Maven repository whose CI uses verify with a profile can declare that command shape:

{ "maven": { "goal": "verify", "profiles": ["run-its"] } }

A repository whose Go CI intentionally covers only its root module can declare that scope:

{ "go": { "scope": "root-module" } }

These declarations narrow the modeled universe; they do not authorize dropping other CI jobs. Changes outside a declared safe scope still force full validation.