TeireDocs
ChangesScanDashboardTry Teire
GuideEcosystems & APIsNemotron on Token FactoryBuild
ChangesScanDashboard
Try Teire
ArchitectureHow Teire updates dependency filesVerificationToken Factory SandboxesSecurity and trustContributing to the catalog

Tools

CLIMCP serverAgent Skill
Build

Verification

Two sandboxes from the same commit, your own checks with the network off, compared check by check and by test counts. Rules decide the evidence, never a model.

A run page's Proof panel: typecheck (npm run -s typecheck) passes before and after, test (npm run -s test) 4/4 before and after, Proven, with nothing reported as skipped.
Each check's command and result on the baseline and after the change, on the run page's Proof panel.

Two sides, one commit

Every run opens two sandboxes from the same commit, in parallel:

  • baseline: your repository as it is, with your lockfile,
  • after: the upgrade or swap, plus any code changes.

Each side goes through two phases:

  1. Install. On Cloudflare Containers (private repositories), only GET and HEAD requests to package registries, toolchain hosts and GitHub's release downloads are allowed. On Token Factory Sandboxes (public repositories and dry runs) the install's network is open, because Token Factory has no allowlist, and no request is recorded. JavaScript installs run no lifecycle or build scripts. The time limit is 600 seconds, 1,200 for Maven and Gradle, whose warm-up downloads the whole build's plugins.
  2. Checks. The network is off: Cloudflare refuses and records every request; a Token Factory microVM has no network interface at all, so the error in the output is what Teire reads. Each check has a 300-second limit.

If the baseline fails to install, Teire retries it once. If it still fails, the agent doesn't start, because no edit could be judged.

Which checks

Teire runs the checks your project already has. It reads your CI workflows first, then your scripts or tool configuration, then sensible defaults. The full rules are on each ecosystem's page. verify in teire.yml replaces them per workspace. Lint, format, e2e and deploy steps are skipped.

How the evidence is decided

The rules apply in this order, and the first that matches wins:

#WhenEvidence
1Any check on either side hit its time limittimeout
2The baseline didn't installenvironment_mismatch
3The after side didn't installregression
4No typecheck, build or test was foundunverified
5A check passes on the baseline and fails afterregression
6Both fail, but more tests fail, fewer pass, or more type errors appear afterregression
7Fewer tests were collected, or more were skippedregression
8Both fail and nothing got worseneeds_live_access, needs_local_service, environment_mismatch, or else pre_existing_failure
9Tests ran and were counted, and everything passes afterverified
10No counted tests, but a typecheck or build passestypecheck_only
11Anything elseunverified

Rule 9 also covers checks that failed before and pass after: the change itself had already broken the repository, as a retired model does.

Rule 8 sorts out why both sides failed:

  • needs_local_service: connection refused on localhost to PostgreSQL, MySQL, Redis, MongoDB, Elasticsearch, RabbitMQ or Memcached.
  • environment_mismatch: Node engine, native binary or offline build errors.
  • needs_live_access: requests the sandbox denied during the checks, or network errors in the output.

verified opens a ready PR. The middle kinds open a draft that names the reason. regression, unverified and timeout open an issue for a person. The model's review never changes this.

When a change touches several projects

One pull request can change several projects: a package locked in two folders of a monorepo, or a retired model swapped in a TypeScript service and a Go one. The project the change breaks runs the fix and its checks first. Then every other project the final files touch installs and runs its own checks, before and after, in its own sandboxes with its own toolchain. A project that can't be checked (its sandbox didn't open twice, or its verification failed to run) is never left out: the pull request becomes a draft that names the project and why. A tarball over the size limit, or a repository that stopped being public, is not tried a second time. The weakest result decides the pull request, the Verification section lists each project with its before and after, and the receipt lists every project's commands.

When the newest major won't pass

If a major upgrade still fails its checks after the agent's attempts, Teire opens nothing for it. It tries once more with the newest version of the previous major, and that pull request opens with Why X, not Y and the checks that failed on the newer one. The newer major is tried again when a scan sees a newer commit.

What is kept

For each install and check, Teire keeps:

  • the command,
  • its exit code and duration,
  • the test counts,
  • the last 4,000 characters of its output,
  • the hosts it was denied.

The PR shows the before/after table, and the run page shows every command with its time.

How Teire updates dependency files

The manifest and lockfile change comes from Dependabot's own updater, run in an isolated sandbox on Teire's server; Teire's loop of locating, fixing and verifying the code sits on top.

Token Factory Sandboxes

Public repositories and dry runs are verified on Nebius Token Factory Sandboxes, microVMs Teire builds its own images in. Private repositories stay on Cloudflare Containers.

On this page

Two sides, one commitWhich checksHow the evidence is decidedWhen a change touches several projectsWhen the newest major won't passWhat is kept