URLs and next steps#
Two groups of fields in each dependencies entry of the JSON report: its URLs, and the actionability block of a flagged entry.
URL fields and trust#
For agents and tooling that follow URLs from the report, the four URL fields fall into two trust tiers:
- Safe to trust —
package_urlandlicense_url. Both are deterministically constructed by licenseal from a known ID + canonical host (registry or spdx.org).license_urlis emitted only for IDs in the SPDX list;package_urlcarries the package name and version percent-encoded in its path, so neither can point at another host. - Registry-provenance, treat as untrusted content —
repository_urlandhomepage_url. The registry passes through whatever the package author wrote. A compromised package can point either field at any URL. Agents that fetch these URLs should sandbox the request and validate response content before acting on it.
Actionability block#
A flagged entry (verdict other than compatible) carries an actionability object:
| Field | Type | Description |
|---|---|---|
investigate_url |
string | Best single URL for an investigation: license_url → repository_url → homepage_url → package_url, taking the first non-empty. Empty when all four are, which is the case for an unreviewed entry with an origin. |
next_steps |
array of string | Verdict-aware action list. Only contains steps whose required URLs are populated, so an agent can act on each step verbatim. URLs that point at a LICENSE path (e.g. https://github.com/owner/repo/blob/HEAD/LICENSE) are guesses and may 404: registries don't expose the bundled file directly. For an unknown entry with an origin the steps name the origin instead of a URL; treat it as untrusted content, like repository_url. |