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
23 changes: 23 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,29 @@ This repository contains draft license text and preliminary legal research. It
does not provide legal advice, and an agent's research is not an adoption or
licensing decision.

## Keep the reusable license separate from adopting projects

Treat this repository like a repository of reusable license text. It does not
need a universal software owner. A maintainer or steward of the canonical text
controls text publication and versioning only; that role does not by itself
make the person a copyright owner, licensor, commercial licensor, beneficiary,
or enforcement claimant for software placed under the license.

For every adoption or enforcement question, identify the applicable software
Contributor or rights holder separately. A commercial-license exception can
come only from the applicable Contributors or someone independently authorized
by them. Do not investigate the ownership, contribution history, or source-file
headers of the FastLED codebase merely because the license is named FastLED.
Those facts are relevant only when the question specifically concerns FastLED
adoption, FastLED rights, or enforcement involving FastLED software.

The AI Coding Agent Notice is different: it is generic, reproduced as Exhibit
C, and incorporated into the License by Section 11.7. Treat inclusion of the
complete notice as an adoption and source-distribution requirement. Do not
describe it as an optional FastLED-specific companion. Keep that inclusion
condition distinct from the notice's statement that an automated agent is not
itself made a contracting party or independent enforcement target.

For any request involving license interpretation, enforcement, infringement,
remedies, litigation, statutes, cases, or legal strategy:

Expand Down
16 changes: 8 additions & 8 deletions ARTIFACTS.sha256
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
796cef1d065c002d315c54396554eb7ec8370508a8e8603eb854d565f439739f LICENSE
a42aa7bb2925ba62054e14d6f4b32b2d1358270f0ac61cd7ec753a1ac00db7eb LICENSE
452bf527cba6c1635f7c8d4a756c06ae3d2cbb50e020e612ac40cdee0233781f MPL-2.0.txt
148be00f39e59e253975af8877079769cb00826a325e3800701a6c33e5c00e0c LICENSE-AI-AGENT-INSTRUCTIONS.md
07b4400299f67dad4bf49de5f3e2ee5c19daf2d95fc0800e0e07987993c66a13 LICENSE-AI-AGENT-INSTRUCTIONS.md
4358d4c37f1305b43a3117a6a12780f666bf285538de0b28991613c0ccacecd8 LICENSE-MIT-LEGACY
c6bd6afda69f5cea2a4a874c154ca050a556874f84b838c19a142f3250e8b70c NOTICE-TEMPLATE.txt
51222de9259d572d17c344e6abb8c42731925562155ea23d0cc4459532e8a640 NOTICE-TEMPLATE-MIT-LEGACY.txt
1fb54087cd657bec3976a8c034e4f926afdd19fa60edf3278d830ce99e01ddb3 ai-policy.toml
48ea8c0a5d38fabaf2c4410024d436204abc8edfda1e05a472513d2714a46e64 header-policy.toml
8fa0781e065d623ecc77bfe15dc0a8277ffd4cd1f5867bbc61205adc4ad21d47 header-policy.schema.json
f98750e93262548670e23aea434efd8cdd6daa7de50d976ec61f05db46c29574 tools/license_headers.py
4cc93f53cd775a8ed98c46e7658ce8ebce1c7fc764ddfc56224d7c8c582ae4c4 NOTICE-TEMPLATE.txt
8975b7bc9e8a11b7d4769efcbafab0a239c03a29cec027bd8a1140fe8f43b12d NOTICE-TEMPLATE-MIT-LEGACY.txt
b86c86db6b0a405f5c3933c1ed7e2495e2b889c8b01550b9bf2a5830b82136ba ai-policy.toml
965ec1ba8ff569db31e5f366909ae387b152f174ab3404154919b989e95dea23 header-policy.toml
46a58ea084f12a001709c9b59a05d24be7180f82da52a12f646b18bd22125826 header-policy.schema.json
b9ea8bd9ef4d6eff9729d914db7927216ba2b49f4b800a89ea55906f155b1963 tools/license_headers.py
145 changes: 71 additions & 74 deletions LEGAL-REVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,93 +2,90 @@

Status: **PENDING**

Before tagging `v1.0.0`, adopting this license in FastLED, or stamping the
Before tagging `v1.0.0`, recommending adoption, 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
open-source licensing attorney must review and approve the license text. The
header tool enforces this mechanically: `tools/license_headers.py` refuses
`update` or `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)
## AI first-pass review

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.
An AI multi-agent first-pass review of rc1 was filed as GitHub issues #2-#8
on 2026-08-24. The license was restructured in response. Rc2 then separated
the reusable license text from the rights, repositories, and commercial
licensing decisions of any particular adopting project. That work is input
to, not a substitute for, attorney review.

## Decisions applied in the restructuring (pending attorney ratification)
## Decisions applied 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.
1. **Reusable-text architecture.** The FastLED Reciprocal License may be
applied to software from any project. The canonical repository and its
maintainers publish and version the text only. They do not become the
owner, commercial licensor, beneficiary, or enforcement claimant for an
adopter's software. Each Contributor grants rights only in its
Contributions. Any separate commercial license must come from the
applicable Contributors or someone independently authorized by them.
Confirm Sections 10.1 and 11.3(g).
2. **Single-instrument construction.** The license is one self-contained
document: a modified MPL 2.0 renamed under its Section 10.3, with Mozilla
references limited to the permitted differs-from note, the Reciprocal
Terms in Section 11, and rewritten Exhibits. `MPL-2.0.txt` remains only as
provenance material.
3. **Sections 11.3 and 11.7(a) condition only the copyright grant.** Section
2.7 does not condition the Contributor patent grant in Section 2.1(b) on
the public-availability rule or required AI-notice inclusion. Confirm this
allocation.
4. **Exhibit B closes Secondary-License distribution.** Sections 1.5, 3.3,
and 11.6 make the license deliberately GPL-incompatible in exchange for
making Section 11.3 non-bypassable. Confirm this trade-off before
recommending adoption.
5. **Zero-day timing is intentional and per version.** The development period
before a commercial Triggering Transfer is the compliance window.
Publication after the transfer restores rights only prospectively under
Sections 5.1 and 11.3(f). Confirm the condition-versus-covenant framing and
remedy consequences.
6. **The Triggering Transfer is recurring and modifier-bound.** It includes
the free-software-with-paid-product scenario and excludes specified
intra-group, manufacturing, lease, reseller, and network-only conduct.
Confirm each boundary and the interaction with applicable exhaustion law.
7. **The AI Coding Agent Notice is generic and mandatory.** Exhibit C and
`LICENSE-AI-AGENT-INSTRUCTIONS.md` contain the same project-agnostic notice.
Section 11.7(a) requires every adopter and source distributor to include a
complete copy as a copyright-license condition. Section 11.7(b) separately
states that an automated agent is not made a contracting party or
enforcement target and that its operating guidance adds no further
condition. Confirm that distinction and every distribution path.
8. **Release-candidate status is explicit.** The current identifier is
`LicenseRef-FastLED-Reciprocal-1.0-rc2`; the final identifier remains gated.

## 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`.
- the Section 10 distinction between canonical text publication and each
adopter's software ownership, licensing authority, and standing;
- the Section 11.1 definitions of optional Upstream Repository, Modified
Covered Software, Triggering Transfer, and Publicly Available;
- the Section 11.3 condition, duration, third-party-interference safe harbor,
prospective-only model, and project-specific separate-license valve;
- Section 2.7 condition scope and the *Jacobsen*/*MDY* condition-versus-covenant
framing;
- the Exhibit B and GPL-incompatibility decision;
- the modified Sections 1.4, 1.5, 1.8, 3.1, 3.3, 3.4, 4, 9, and 10 against MPL
2.0, including compliance with MPL Section 10.3;
- Contributor copyright and patent grants and the requirement that each
adopter separately validate provenance, authority, and third-party notices;
- compatibility with downstream licenses, registries, and SCA tooling; and
- the mandatory inclusion and agent-directed legal-effect boundaries of the
generic AI Coding Agent Notice.

## Open items deliberately not decided here
## Open items

- Whether to modify Section 8 (defendant's-forum litigation venue,
inherited from MPL) for an enforcement-oriented license.
- Whether to modify Section 8's defendant-principal-place litigation rule.
- 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.
- Whether unmodified MPL 2.0 plus a nonbinding upstreaming norm and
project-specific commercial licensing would better meet adopter goals than
this bespoke instrument.
Loading
Loading