Skip to content

chore(licenses): add a license gate and notices - #154

Merged
WhiteMuush merged 3 commits into
developfrom
chore/license-gate
Aug 15, 2026
Merged

chore(licenses): add a license gate and notices#154
WhiteMuush merged 3 commits into
developfrom
chore/license-gate

Conversation

@WhiteMuush

Copy link
Copy Markdown
Owner

Allowlist-based license check over the runtime dependency tree, the generated THIRD-PARTY-NOTICES.md, and a CI job in the Security workflow.

Reads package-lock.json rather than node_modules, so the result is deterministic, needs no install and does not vary with the host platform. Scope is the runtime tree; build-time-only packages ship nowhere.

The allowlist is deliberate: an unreviewed license fails the build instead of being waved through. Current tree is clean, 548 runtime packages, permissive except weak copyleft (LGPL-3.0 libvips, MPL-2.0, EPL-2.0), each documented with what it actually requires. Two packages ship a LICENSE file but no metadata field; both were read by hand and are recorded with the quote.

The notices are checked for staleness too, so a dependency change that skips the regeneration fails rather than drifting.

The audit job already blocks vulnerable dependencies, but nothing watched
what those dependencies are licensed under. A transitive package arriving
under AGPL or SSPL would have landed silently, and Section 3.d of LICENSE
promises attribution the repository could not actually produce.

The check reads package-lock.json rather than node_modules: the lockfile
records a license on every entry, so the result is deterministic, needs no
install, and does not change with the host platform (sharp's libvips
binaries only install on the platform they target). Scope is the runtime
tree; build-time-only packages ship nowhere.

The allowlist is deliberate. An unreviewed license fails the build instead
of being waved through, which is the only version of this check that keeps
working once someone stops paying attention. The current tree is clean:
523 runtime packages, permissive except weak copyleft (LGPL-3.0 libvips,
MPL-2.0, EPL-2.0), each documented with what it actually requires.

The generated notices are checked for staleness too, so a dependency
change that skips the regeneration step fails rather than drifting.
develop moved a lot since this branch was cut: the SSO plugin arrived,
next went to 16.3, and two override floors were added. 523 runtime
packages became 548, and the gate refuses a stale file by design.
@WhiteMuush
WhiteMuush merged commit 3a6ce09 into develop Aug 15, 2026
14 checks passed
@WhiteMuush
WhiteMuush deleted the chore/license-gate branch August 15, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant