Propose ADR 0051: Module packages declare their own license and carry its text.
The ADR amends Module Package v1 so that a future implementation will:
require one authoritative SPDX expression in ekklesia.package.json
require a deterministic LICENSE payload listed and hashed like every other file
require explicit source license metadata and license-text input without network downloads or implicit parent-repository inference
keep THIRD_PARTY_NOTICES separate for third-party components
retain incorporates for bundled Ekklesia components without duplicating identical AGPL text
keep the generated runtime package.json minimal
keep packageFormat: 1
Format compatibility finding
ADR 0049's strict schema does not require format 2. ADR 0049 explicitly withheld distributable-release status until licensing was proven, so this is a coordinated fail-closed tightening before the first distributable v1 release: old readers reject the unknown field, and updated readers reject pre-license artifacts.
Verification
pnpm verify
formatter check
ADR 0051 uniqueness check
local ADR link resolution check
stale/conflicting licensing-language search
Scope
ADR-only: the new Proposed ADR and the ADR index. No contracts, packager, verifier, template, Signage, image, marketplace, installer, THIRD_PARTY_NOTICES generation, ADR 0049, ADR 0050, or package-format implementation changes.
## Summary
Propose ADR 0051: Module packages declare their own license and carry its text.
The ADR amends Module Package v1 so that a future implementation will:
- require one authoritative SPDX expression in `ekklesia.package.json`
- require a deterministic `LICENSE` payload listed and hashed like every other file
- require explicit source license metadata and license-text input without network downloads or implicit parent-repository inference
- keep `THIRD_PARTY_NOTICES` separate for third-party components
- retain `incorporates` for bundled Ekklesia components without duplicating identical AGPL text
- keep the generated runtime `package.json` minimal
- keep `packageFormat: 1`
## Format compatibility finding
ADR 0049's strict schema does not require format 2. ADR 0049 explicitly withheld distributable-release status until licensing was proven, so this is a coordinated fail-closed tightening before the first distributable v1 release: old readers reject the unknown field, and updated readers reject pre-license artifacts.
## Verification
- `pnpm verify`
- formatter check
- ADR 0051 uniqueness check
- local ADR link resolution check
- stale/conflicting licensing-language search
## Scope
ADR-only: the new Proposed ADR and the ADR index. No contracts, packager, verifier, template, Signage, image, marketplace, installer, THIRD_PARTY_NOTICES generation, ADR 0049, ADR 0050, or package-format implementation changes.
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.
Summary
Propose ADR 0051: Module packages declare their own license and carry its text.
The ADR amends Module Package v1 so that a future implementation will:
ekklesia.package.jsonLICENSEpayload listed and hashed like every other fileTHIRD_PARTY_NOTICESseparate for third-party componentsincorporatesfor bundled Ekklesia components without duplicating identical AGPL textpackage.jsonminimalpackageFormat: 1Format compatibility finding
ADR 0049's strict schema does not require format 2. ADR 0049 explicitly withheld distributable-release status until licensing was proven, so this is a coordinated fail-closed tightening before the first distributable v1 release: old readers reject the unknown field, and updated readers reject pre-license artifacts.
Verification
pnpm verifyScope
ADR-only: the new Proposed ADR and the ADR index. No contracts, packager, verifier, template, Signage, image, marketplace, installer, THIRD_PARTY_NOTICES generation, ADR 0049, ADR 0050, or package-format implementation changes.