Review file#
licenseal.review.toml sits in the scanned directory and holds one [[review]] entry per reviewed dependency. Review flagged dependencies shows how to create and fill it.
Keys#
| Key | Required | Value |
|---|---|---|
ecosystem |
yes | python, npm, rust, go, java, dotnet, php, ruby, hex, or r |
package |
yes | The package's name, compared the way its registry compares names |
version |
yes, unless source is set |
The resolved version the entry applies to |
source |
for an off-registry dependency | The row's origin string: the origin field of the JSON report |
license |
to apply the entry | A license expression. Left empty or left out, the entry is not applied, and check names it in a Warning: |
note |
no | The reason for the decision |
Rules#
- An entry matches the row with its
ecosystem,package, and resolvedversion.packageis compared the way the ecosystem's registry compares names: exactly, upper and lower case included, for Go, Java, npm, and Ruby; without regard to case for .NET, PHP, Rust, Hex, and R; with PEP 503 normalization for Python. A Hex dependency thatmix.exsdeclares under another name than its hex.pm package is matched on the hex.pm name. - An entry with a
sourcekey matches on ecosystem, package, andsource, compared with the row'soriginexactly, and onversionwhen the entry has one. An entry keyed on a commit applies to that commit only. One keyed on a branch or a tag (all a manifest without a lockfile can say), on a bare repository URL, on a URL without a hash, or on a path keeps applying when the code there changes; pin a commit, or commit a lockfile, to get an immutable key. licenseis a license expression. Each license in it must be an SPDX identifier (current or deprecated), a source-available license licenseal recognises (BUSL-,FSL-,PolyForm-, …),Proprietary, or aLicenseRef-reference; an exception afterWITHis not checked against a list. A comma- or slash-separated list is not accepted: join the licenses withORorAND.- These fail the command:
- an entry that matches a compatible dependency (only a flagged one can be overridden);
- a filled-in entry that matches no reported row (an old version after an upgrade, or a dev dependency in a scan without
--dev): see After an upgrade; - a missing
ecosystem,package, orversion(versionis optional besidesource), or a value that is not a string; - an unknown ecosystem;
- a duplicate;
- a
licensethat breaks the rule above.
- An entry whose
licenseis empty is not applied, andchecknames it in aWarning:that is not an analysis gap. licenseal.review.tomland the report passed to--from-reportmust be UTF-8; write the report with-o report.jsonrather than a shell redirect.- A reviewed dependency never fails the check, whatever verdict its reviewed license gets. Unreviewed warnings, violations, and unknowns still fail. An analysis gap cannot be reviewed: fix the file, commit a lockfile, or pass
--no-require-lockfile. - Reports show both the detected and the reviewed license; JSON has
detected_license,reviewed_license,effective_license,reviewed, andreview_note.