Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions ARTIFACTS.sha256
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
b0e1e6d4e19fbfab714838e0ea498cba667bd5c8b8bb9295e2b48be74d4dbd97 LICENSE
4d639d3ba6d9c8c2a259f682254e46ca20ca87656a4dc4d5ffc2debae5b59ec3 LICENSE
452bf527cba6c1635f7c8d4a756c06ae3d2cbb50e020e612ac40cdee0233781f MPL-2.0.txt
bd6b92f063fca361bfc2a7e4b010e66b02fc8f9fdda00b96c0770a69b4a2e7b1 LICENSE-AI-AGENT-INSTRUCTIONS.md
148be00f39e59e253975af8877079769cb00826a325e3800701a6c33e5c00e0c LICENSE-AI-AGENT-INSTRUCTIONS.md
4358d4c37f1305b43a3117a6a12780f666bf285538de0b28991613c0ccacecd8 LICENSE-MIT-LEGACY
5429369206c74be242d6afaaa31d9282c1846711c6964b94cc4d875b6a294d4e NOTICE-TEMPLATE.txt
2e1934fb48a60d001f9c8ac873be81f555b1549ae0c7ff6c16a68efdc13654fb header-policy.toml
c6bd6afda69f5cea2a4a874c154ca050a556874f84b838c19a142f3250e8b70c NOTICE-TEMPLATE.txt
51222de9259d572d17c344e6abb8c42731925562155ea23d0cc4459532e8a640 NOTICE-TEMPLATE-MIT-LEGACY.txt
1fb54087cd657bec3976a8c034e4f926afdd19fa60edf3278d830ce99e01ddb3 ai-policy.toml
48ea8c0a5d38fabaf2c4410024d436204abc8edfda1e05a472513d2714a46e64 header-policy.toml
8fa0781e065d623ecc77bfe15dc0a8277ffd4cd1f5867bbc61205adc4ad21d47 header-policy.schema.json
b874fadf64f2d01821653fcdcf198fefcf4f0a1b5f1f5a92e94106fd8d0b969e tools/license_headers.py
f98750e93262548670e23aea434efd8cdd6daa7de50d976ec61f05db46c29574 tools/license_headers.py
103 changes: 90 additions & 13 deletions LEGAL-REVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,93 @@

Status: **PENDING**

Before tagging `v1.0.0` or adopting this license in FastLED, an open-source
licensing attorney must review and approve at least:

- the definitions of First Sale and Modified FastLED;
- the requirement that source be public on the date of first sale;
- the public-fork or complete public bug-report-patch mechanisms;
- the Larger Work and proprietary-application boundary;
- contributor copyright/patent grants, patent termination, and provenance;
- compatibility with downstream licenses and package registries; and
- the legally non-remedial character of the AI-agent instructions.

Approval must record reviewer identity, date, reviewed commit, and any required
changes. Removing this gate without documented review is not approval.
Before tagging `v1.0.0`, adopting this license in FastLED, or stamping the
non-release-candidate identifier `LicenseRef-FastLED-Reciprocal-1.0`, an
open-source licensing attorney must review and approve the license text.
The header tool enforces this mechanically: `tools/license_headers.py`
refuses `update`/`apply` for a non-`-rc` identifier until this file records
`Status: APPROVED`.

Approval must record reviewer identity, date, reviewed commit, and any
required changes. Removing this gate without documented review is not
approval.

## AI first-pass review (2026-08-24)

An AI multi-agent first-pass review was completed and filed as issues
[#2](https://github.com/FastLED/license/issues/2)–[#8](https://github.com/FastLED/license/issues/8)
(meta: #8). The license was restructured in response. That review is input
to — not a substitute for — the attorney review above.

## Decisions applied in the restructuring (pending attorney ratification)

These were applied with the review's recommended defaults, plus steward
direction on timing. The reviewing attorney must confirm each on the
record:

1. **Single-instrument construction.** The license is now one
self-contained document: a modified MPL 2.0 (renamed per its Section
10.3, FastLED as steward, Mozilla references limited to the permitted
differs-from note) with the Additional Terms as Section 11 and
rewritten Exhibits. `MPL-2.0.txt` remains only as the unmodified base
text for provenance comparison.
2. **Section 11.3 is an express condition of the copyright grant only**
(Section 2.7). The contributor patent grant under 2.1(b) is
deliberately NOT conditioned on Section 11.3 — contributors never
agreed to have their patents armed as a sales-disclosure tripwire.
Confirm this allocation.
3. **Exhibit B is attached; Secondary-License distribution is closed**
(Sections 1.5, 3.3, 11.6). This makes the license deliberately
GPL-incompatible in exchange for making Section 11.3 non-bypassable.
Confirm this trade-off with the steward; it cannot be had both ways.
4. **Zero-day timing is intentional and per-version** (steward decision,
2026-08-24). The development period before first commercial transfer
is the compliance window; developing in a public fork is standing
compliance (11.3(b)). There is no post-transfer cure that
retroactively authorizes: units reproduced or transferred before
publication remain unlicensed (11.3(f)), while publication reinstates
prospectively under Section 5.1. Confirm the condition/covenant
framing and the 11.3(f) interaction with Section 5.1.
5. **The trigger is "Triggering Transfer",** per-version and recurring,
bound to the party that created or commissioned the modifications,
with carve-outs for intra-group transfers, contract manufacturers,
leases that convey no copy, and downstream resellers, plus a
free-firmware-with-paid-product limb and an explicit SaaS statement
(11.1). The term "First Sale" was removed to avoid collision with the
17 U.S.C. §109 exhaustion doctrine.
6. **AI-agent guidance is fully de-legalized** (Section 11.7): not part
of the license, excluded from the Section 3.4 notice-integrity rule,
header lines reduced and marked removable, document reordered
authorization-first, machine-readable `ai-policy.toml` added.
7. **Release-candidate status moved from prose into the identifier**
(`LicenseRef-FastLED-Reciprocal-1.0-rc1`); the former LICENSE §4
self-review clause was removed from the instrument and lives here.

## Attorney checklist

- the Section 11.1 definitions (Official FastLED Repository, Modified
FastLED, Triggering Transfer, Publicly Available);
- the Section 11.3 condition: mechanics, duration, third-party
interference safe harbor, 11.3(f) remedy model, separate-license valve;
- Section 2.7 condition scope (copyright-only) and the Jacobsen/MDY
condition-vs-covenant framing;
- the Exhibit B / GPL-incompatibility trade-off (decision 3 above);
- the modified Sections 1.4, 1.5, 1.8, 3.1, 3.3, 3.4, 4, 9, 10 against
MPL 2.0, and whether the Section 10.3 rename obligations are satisfied;
- contributor copyright/patent grants, provenance, and the MIT
relicensing path (sublicensing theory; notice preservation — see the
ownership-audit item in README);
- compatibility with downstream licenses, package registries, and SCA
tooling; and
- the informational, non-remedial character of the AI-agent guidance and
`ai-policy.toml`.

## Open items deliberately not decided here

- Whether to modify Section 8 (defendant's-forum litigation venue,
inherited from MPL) for an enforcement-oriented license.
- Whether to add a BUSL/FSL-style sunset or reversion clause.
- The strategic comparison recorded in issue #8: unmodified MPL-2.0 plus
a published upstreaming norm plus commercial licensing, versus this
bespoke instrument. The steward has elected to proceed with the bespoke
instrument; counsel should still price the comparison.
Loading
Loading