The first native-target package needs @img/[email protected], which sharp loads on Linux x64 with glibc.
It declares LGPL-3.0-or-later.
It ships only README.md, versions.json, lib/index.js, one glib header and one shared library. Its latest release, 1.3.4, is the same.
That shared library includes about 29 libraries: LGPL, MPL-2.0 (cairo), and BSD, MIT, zlib, IJG and FreeType-licensed. The README names them, with links, but the package has no licence text and no copyright notice for any of them.
Today's collection rule takes material only from a package's own files or a standard text that needs no project-specific lines. That rule can't package this dependency, and downloading material during packaging is forbidden.
Decision
Preferred source: package-provided material stays primary. Supplements only add to it.
Matching: a checked-in, reviewed supplement applies only to an exact package name, version and packager-computed content integrity. Any mismatch fails closed, with no nearby-version fallback.
Build inputs: supplements are immutable, part of the packager's versioned inputs, and read without network access during packaging.
Contents: licence texts, copyright and attribution notices, provenance, corresponding-source information and other accompanying material.
Merge: deterministic. Package material comes first, then supplement material, labelled as supplement material.
Declared licence: a supplement never overrides a dependency's declared licence; if they disagree, packaging fails.
Generic: no package-specific code.
Still fails: missing required material with no exact supplement fails packaging, as today.
Format:packageFormat stays 1; only the content of THIRD_PARTY_NOTICES can change.
Scope: third-party dependencies only, never the module's own LICENSE (ADR 0051) or incorporated Ekklesia packages.
Legal determinations are deferred. A supplement may record corresponding-source information. The ADR asserts no written offer, URL or mirror satisfies any licence, and source-obligation determinations for LGPL, MPL and similar binaries must be made and verified separately. A package redistributing such a binary does not become distributable merely because its supplement was merged.
Relationship to ADR 0049
Extends 0049 in one respect only. 0049 delegated how licence and notice material is collected to the implementation, and the "package files or predefined standard text only" rule lives in packages/module-pack/src/notices.ts and the module development guide. This ADR adds supplements as a further source. Accepted ADR text is unchanged.
Proposes **ADR 0052: Reviewed license supplements cover redistributed dependencies whose packages omit required material**. Docs only.
## Why
The first native-target package needs `@img/[email protected]`, which `sharp` loads on Linux x64 with glibc.
- It declares `LGPL-3.0-or-later`.
- It ships only `README.md`, `versions.json`, `lib/index.js`, one glib header and one shared library. Its latest release, 1.3.4, is the same.
- That shared library includes about 29 libraries: LGPL, MPL-2.0 (cairo), and BSD, MIT, zlib, IJG and FreeType-licensed. The README names them, with links, but the package has **no licence text and no copyright notice** for any of them.
Today's collection rule takes material only from a package's own files or a standard text that needs no project-specific lines. That rule can't package this dependency, and downloading material during packaging is forbidden.
## Decision
- **Preferred source:** package-provided material stays primary. Supplements only add to it.
- **Matching:** a checked-in, reviewed supplement applies only to an **exact** package name, version and packager-computed content integrity. Any mismatch **fails closed**, with no nearby-version fallback.
- **Build inputs:** supplements are **immutable**, part of the packager's versioned inputs, and read **without network access** during packaging.
- **Contents:** licence texts, copyright and attribution notices, provenance, corresponding-source information and other accompanying material.
- **Merge:** deterministic. Package material comes first, then supplement material, labelled as supplement material.
- **Declared licence:** a supplement **never overrides** a dependency's declared licence; if they disagree, packaging fails.
- **Generic:** no package-specific code.
- **Still fails:** missing required material with no exact supplement fails packaging, as today.
- **Format:** `packageFormat` stays **1**; only the content of `THIRD_PARTY_NOTICES` can change.
- **Scope:** third-party dependencies only, never the module's own `LICENSE` (ADR 0051) or incorporated Ekklesia packages.
**Legal determinations are deferred.** A supplement may record corresponding-source information. The ADR asserts **no** written offer, URL or mirror satisfies any licence, and source-obligation determinations for LGPL, MPL and similar binaries must be made and verified separately. A package redistributing such a binary does not become distributable merely because its supplement was merged.
## Relationship to ADR 0049
**Extends** 0049 in one respect only. 0049 delegated how licence and notice material is collected to the implementation, and the "package files or predefined standard text only" rule lives in `packages/module-pack/src/notices.ts` and the module development guide. This ADR adds supplements as a further source. Accepted ADR text is unchanged.
## Changes
- `docs/architecture/decisions/0052-reviewed-license-supplements.md` (new, Proposed)
- `docs/architecture/decisions/README.md` (index entry)
**Not changed:** no packager or native-target implementation, no libvips supplement and no Signage changes.
## Verification
- `pnpm verify` passes.
- A relative-link and anchor check of the changed docs passes.
- The current guide and `notices.ts` still describe today's behaviour accurately, which remains true until this is implemented.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
When a redistributed dependency's own package omits licence material that
redistribution requires, the canonical packager may use a checked-in,
reviewed supplement. The motivating case is
@img/[email protected]: LGPL-3.0-or-later, and its shared
library contains about 29 libraries, but it ships no licence text or
notice for any of them.
ADR 0052 decides:
- package-provided material stays the preferred source and is never
replaced;
- a supplement matches exact package name, version, and a packager-computed
content integrity; any mismatch fails closed, with no fallback;
- supplements are immutable, reviewed build inputs with no network access
during packaging;
- they may carry licence texts, copyright and attribution notices,
provenance, corresponding-source information, and other accompanying
material;
- merging is deterministic, and supplement material is labelled;
- a supplement never overrides a dependency's declared licence; a
disagreement fails packaging;
- the mechanism is generic, with no package-specific code;
- missing material with no exact supplement still fails packaging;
- packageFormat stays 1.
It extends ADR 0049 only in the collection rule that ADR delegated to the
implementation. Legal and source-obligation determinations for LGPL, MPL,
and similar binaries are explicitly deferred: no written offer, URL, or
mirror is asserted to satisfy any licence.
Status Proposed. No implementation, no libvips supplement, and no Signage
change.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Two wording clarifications; no decision changes.
- Repository review of a supplement is project and code review of a build
input. It is not legal review, and not proof that redistribution
obligations are satisfied.
- The exact-match digest is deterministic over normalized redistributed
relative paths and file bytes. It excludes host filesystem metadata,
timestamps, ownership, permissions, and extraction or listing order.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Proposes ADR 0052: Reviewed license supplements cover redistributed dependencies whose packages omit required material. Docs only.
Why
The first native-target package needs
@img/[email protected], whichsharploads on Linux x64 with glibc.LGPL-3.0-or-later.README.md,versions.json,lib/index.js, one glib header and one shared library. Its latest release, 1.3.4, is the same.Today's collection rule takes material only from a package's own files or a standard text that needs no project-specific lines. That rule can't package this dependency, and downloading material during packaging is forbidden.
Decision
packageFormatstays 1; only the content ofTHIRD_PARTY_NOTICEScan change.LICENSE(ADR 0051) or incorporated Ekklesia packages.Legal determinations are deferred. A supplement may record corresponding-source information. The ADR asserts no written offer, URL or mirror satisfies any licence, and source-obligation determinations for LGPL, MPL and similar binaries must be made and verified separately. A package redistributing such a binary does not become distributable merely because its supplement was merged.
Relationship to ADR 0049
Extends 0049 in one respect only. 0049 delegated how licence and notice material is collected to the implementation, and the "package files or predefined standard text only" rule lives in
packages/module-pack/src/notices.tsand the module development guide. This ADR adds supplements as a further source. Accepted ADR text is unchanged.Changes
docs/architecture/decisions/0052-reviewed-license-supplements.md(new, Proposed)docs/architecture/decisions/README.md(index entry)Not changed: no packager or native-target implementation, no libvips supplement and no Signage changes.
Verification
pnpm verifypasses.notices.tsstill describe today's behaviour accurately, which remains true until this is implemented.🤖 Generated with Claude Code