dep-radius

Quiet, review, blocked

What each answer means, and when radius gives it.

For each updated package, radius gives one answer. It also lists every reason behind it, in reasons.

Blocked

Something your code uses was removed.

radius compared the type files of the two versions. A function, class or type your code uses is gone in the new version. Your code most likely won't compile.

Review

Some changes may affect your code. Any one of these is enough:

A change lands on your code

  • A function or type you use changed, or is now deprecated.
  • A member you might use changed. radius matched it by name only, so it says "possibly".

A release note concerns you

  • A note names something you use.
  • A breaking note names nothing specific, so it could apply to you.
  • A note describes a change radius can't link to your code, like "Remove empty non-boolean attributes". radius lists these notes, so you can read them.

radius can't see how you use the package

  • It's used from a script, a config file, CSS, or only imported for side effects.
  • It's passed around whole, used with computed names, or used in a file that didn't parse.
  • No file uses it.
  • The installed copy is patched, isn't on the registry, or its version had to be guessed.

Information is missing

  • The types couldn't be compared, and some release notes are missing too.
  • It's a major version (or a 0.x minor), and radius couldn't fully check both the types and the notes.

Quiet

Nothing your code uses changed. For quiet, all of these must be true:

  • Every name your code uses was found.
  • Nothing is hidden from radius.
  • Every release note that describes a change is explained: it names something you don't use, or it's housekeeping (docs, tests, CI, dependency updates), or it only adds something new.
  • The release notes were all read, or the types were compared.

This is why quiet is rare. Most releases include a fix written in plain words. radius can't prove it doesn't affect you, so it says review and shows you the note.

The asterisk

A quiet that relied on only the types, or only the notes, is marked * in the terminal and "(one net)" in pull request comments. It's still quiet.

Why quiet is hard to get

A wrong quiet is the worst mistake: you merge without reading, and something breaks. So radius only says quiet when it can explain why.

Two tests check this:

  • A backtest replayed 462 past upgrades from four projects. No upgrade called quiet had to be fixed afterwards. But this test only catches changes that forced a code fix.
  • The behaviour change benchmark uses 51 real release notes that changed behaviour. It found 13 upgrades radius called quiet by mistake. The rule above fixed them: none of the 51 is quiet now.

Found a wrong quiet? Please open a "wrong verdict" issue.

Several packages at once

The exit code is the worst answer across all packages: 2 if one is blocked, else 1 if one needs review, else 0.

If radius can't check a package (a registry error, a version that doesn't exist, a package installed from git), it lists it under "not analysed" with the reason, and checks the others.

On this page