TeireDocs
ChangesScanDashboardTry Teire
GuideEcosystems & APIsNemotron on Token FactoryBuild
ChangesScanDashboard
Try Teire
What Teire doesQuickstartHow Teire worksAnatomy of a Teire PRThe life of a Teire PR

Use it

Public scan and dry runDashboardAsk Teire@teire commandsConfiguration (teire.yml)dependabot.ymlPrivate registries

Help

TroubleshootingCompared with Dependabot and Renovate
Guide

The life of a Teire PR

What happens to a Teire pull request after it opens. The base moves, CI fails, a newer version ships, someone pushes a commit or closes it. Each event, what Teire does, and the words it posts.

It opens with its evidence
It opens with its evidence. A scan finds a change, the fix run upgrades and adapts, checks run before and after, and a ready PR, draft or issue opens. While it's open: the base moves and Teire rebases, CI fails and Teire makes one repair, a newer version replaces it. It ends when you merge it, you close it, or Teire closes it because it's no longer needed.
  1. A scanpush · schedule · you
  2. finds a change
  3. The fix runyour checks before
  4. upgrades, adapts
  5. Checks afterin the sandbox
  6. proves it
  7. Ready, draft or issueby the evidence
While it's open, Teire keeps it true
While it's open, Teire keeps it true. A scan finds a change, the fix run upgrades and adapts, checks run before and after, and a ready PR, draft or issue opens. While it's open: the base moves and Teire rebases, CI fails and Teire makes one repair, a newer version replaces it. It ends when you merge it, you close it, or Teire closes it because it's no longer needed.
  1. Base moveda dependency push
  2. rebuilds it
  3. Rebasedverified again
  4. then
  5. CI failedone repair
  6. then
  7. Newer versiona new PR replaces it
How it ends
How it ends. A scan finds a change, the fix run upgrades and adapts, checks run before and after, and a ready PR, draft or issue opens. While it's open: the base moves and Teire rebases, CI fails and Teire makes one repair, a newer version replaces it. It ends when you merge it, you close it, or Teire closes it because it's no longer needed.
  1. You merge itfindings fixed
  2. or
  3. You close itthat version stays away
  4. or
  5. No longer neededTeire closes it, says why
A Teire PR is never left to go stale: Teire keeps it true while it's open, and says why whenever it closes one.

Anatomy of a Teire PR shows what a PR says when it opens. This page covers what happens after.

It opens

The evidence decides what opens:

The run's evidenceWhat opens
Verified: your checks pass before and afterA ready PR, with a green Teire check run
Typecheck only, checks already failing, needs live access or a local service, environment differsA draft PR, labelled with the reason (typecheck-only, …), and a neutral check run
A regression, unverified, or out of timeA Teire needs a human issue, never a PR

The branch is teire/<group>. One call-site annotation lands on each line the change reaches. When you started the run with a comment, Teire's reply updates when it ends: "Done: … (verified)."

While it's open

What happensWhat Teire does
A push to the default branch that touches a manifest or lockfile, or leaves the PR conflictingStarts a rebase run: the change is rebuilt on the new base and verified again, and the same PR updates. Once per base commit. Rebases are never held by the PR limits
Fixes are Off and the base movesAdds the stale-evidence label and comments once: "The base branch moved … @teire reverify checks it merged into the base as it is now."
The PR's CI fails (a check suite that isn't Teire's)Reads up to 3 failing checks and their logs, comments "CI failed on this PR (…). Teire is making one repair attempt from those logs", and runs that repair. Once per base commit
A newer version ships, in AutomaticOpens a new PR for it, then closes the old one: "Superseded by #N, which moves to a newer version (X)." The old one doesn't count against the open limit
A newer version ships, in Ask firstLeaves the PR and comments once: "Newer version available: X. … comment @teire fix <group>, or tick it under Upgrades available in the Dashboard issue."
Someone pushes a commit to Teire's branchTeire never overwrites it. The next update stops: "Teire stopped updating this branch: … has 1 commit(s) by others. Your commits stay; comment @teire recreate to start over from the current base, which replaces this branch and those commits with Teire's fix." CI repair leaves the PR alone too
Dependabot has a PR open for the same packageTeire's PR says "Supersedes Dependabot's #N". Teire doesn't touch Dependabot's PR; Dependabot closes its own once the dependency is updated

How it ends

HowWhat Teire does
You merge itIts findings become fixed everywhere. The merge push rescans, and other open Teire PRs rebase if dependency files moved
You close itThat version's findings are dismissed and it never comes back. A newer version is a new PR. @teire recreate brings this one back
It's no longer neededEach scan closes it with the reason: "Closing: pkg is no longer a dependency on main (abc1234)", "… is at 2.1.0 on main now, so this upgrade to 2.0.0 no longer applies", or "… no longer finds code this change affects". Only when every lookup answered
You ignore it@teire ignore <target> closes its PRs: "Closed: @you ignored <target>." @teire ignore <package> major closes the PR it's posted on, and other updates still come

Teire never closes a PR just because it's old.

Commands on an open PR

CommentWhat it does
@teire rebaseRebuild on the current base, verify again, update the same PR
@teire recreateRun the fix again from scratch, even on a closed PR; replaces commits by others on the branch
@teire reverifyCheck it as GitHub would merge it into the base now, before and after; a draft turns ready when it's verified
@teire explainThe evidence behind the PR
@teire ignore … / unignore …Stop or restart reporting it
@teire pause / resumeHold everything for the repository: no scans, PRs, rebases or repairs; queued runs wait and start again on resume

Every command needs write access to the repository. The full list is in Commands.

How many open at once

pullRequests.limit (default 5 open) and pullRequests.perHour (default 2 new an hour) in teire.yml cap new PRs, as Dependabot's open-pull-requests-limit does. A run over the cap waits and tries again each hour. It shows "waiting for the PR limit" on Runs and in the Dashboard issue's In progress section. Security fixes go first.

When Teire looks again

  • A push to the default branch that touches dependencies, teire.yml or code.
  • The schedule: daily by default, or weekly, on push only, or off (schedule:).
  • A provider changes something your code uses.
  • Installing, @teire rescan, and resuming.

Every scan re-checks the open PRs: it closes the ones no longer needed, and either notes or replaces the ones a newer version supersedes.

Anatomy of a Teire PR

Every Teire pull request carries its own evidence. It shows why your code is affected, what the source says, what changed, your checks before and after, and what each model call cost.

Public scan and dry run

See what would break in any public repository without installing anything, then watch Teire fix one change in the sandbox, without opening a pull request.

On this page

It opensWhile it's openHow it endsCommands on an open PRHow many open at onceWhen Teire looks again