Skip to content

docs: CONTRIBUTING describes the CAA instead of denying a CLA - #496

Merged
gafferongames merged 1 commit into
mainfrom
contributing-caa
Sep 4, 2026
Merged

docs: CONTRIBUTING describes the CAA instead of denying a CLA#496
gafferongames merged 1 commit into
mainfrom
contributing-caa

Conversation

@gafferongames

Copy link
Copy Markdown
Contributor

Fixes the docs half of #474. Docs only. No code, no legal text, no workflow changed.

What was wrong

docs/CONTRIBUTING.md ended with "Contributions are accepted under those terms. There is no CLA." while .github/workflows/cla.yml holds every pull request red until each human commit author posts a copyright assignment. A contributor read the guide, opened a pull request, and met a gate the guide denied existed. An assignment is stronger than the CLA the guide denied.

What this does

docs/CONTRIBUTING.md gets a ## The Contributor Assignment Agreement section that states, in order: the check exists and gates the merge, maintainers and bots are allowlisted, you sign once on your first pull request to any Más Bandwidth repository, the exact sentence to post, what the agreement assigns, where the signature ledger lives, and what happens to a signature the automation cannot record (extra text, or posted on an issue) plus the recheck escape hatch. Every fact is read off cla.yml and off CAA.md; the section says the agreement is the authority and the prose is a summary.

Each fact sits in the file that owns it. docs/CONTRIBUTING.md owns contributing and its short ## License section now points at LICENSE and the README instead of restating them. README.md keeps the user-facing license paragraph and gains one cross-reference line to the new section. The ## Licence heading is now ## License.

README-NEW.md gets the same one-line cross-reference so the in-progress 3.0.0 page does not land without it.

Sentences changed

  • docs/CONTRIBUTING.md:168-172, the whole ## Licence section, replaced by ## The Contributor Assignment Agreement and a three-line ## License.
  • docs/CONTRIBUTING.md, "The gates a change has to pass": one sentence added, "One more gate is not CI at all. A pull request is not merged until its authors have signed the Contributor Assignment Agreement."
  • README.md:135, README-NEW.md:332: one sentence added, "Contributing is a separate matter. Contributions are made under a Contributor Assignment Agreement, described in CONTRIBUTING.md."

For the owner's eye

Legal text was left verbatim. These are the sentences the issue puts on you, quoted, with what I would write beside them.

1. The SPDX expression. LICENSE:4-7 grants more than the badge and the prose claim.

  • LICENSE:4-7: "either version 3 of the License, or (at your option) any later version" — this is AGPL-3.0-or-later.
  • README.md:4: [![License: AGPL v3](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)
  • README.md:125: "The compiler is AGPL-3.0, and will stay that way."
  • README.md:128: "The compiler is licensed under the GNU Affero General Public License v3.0"
  • docs/FAQ.md:194: "The compiler is AGPL-3.0."
  • docs/SPEC.md:1927: "License: AGPL-3.0, with an explicit additional permission for generated output"

Proposed, if the grant is what you want: AGPL-3.0-or-later in all five places and license-AGPL--3.0--or--later in the badge. Proposed, if the badge is what you want: strike "or (at your option) any later version" from LICENSE. One or the other, not both. I changed none of them, since which one is the grant is your call and LICENSE is legal text.

2. The CAA names a license this project does not use.

  • CAA.md section 3: "the license the project uses at the time (currently the Más Bandwidth Source License, the MBSL, for most Más Bandwidth libraries)"
  • CAA.md, closing line: "By signing, You agree to assign the copyright in Your Contributions to Más Bandwidth LLC and to have them distributed under the MBSL, on the terms above."

A contributor to schema reads the agreement and is told their work goes out under the MBSL, while schema is AGPL. Proposed for the closing line: "...and to have them distributed under the license that project uses, on the terms above." That file is in mas-bandwidth/.github, not this repo, so nothing here can fix it.

3. The relicensing reservation against the permanence promise.

  • CAA.md section 3: "You acknowledge that the Company may relicense the project, including Your Contribution, at its sole discretion."
  • README.md:125: "The compiler is AGPL-3.0, and will stay that way."
  • README.md:132-133: "That grant is intentional and permanent."

Both can be true, a promise you make and a right you keep, but a contributor may read the pair as a contradiction. My new sentence in docs/CONTRIBUTING.md reports the agreement rather than the promise: "Contributions are assigned under the CAA above, and Más Bandwidth licenses them under the project's license and any other license it chooses (CAA section 3)." Say the word and I will replace it with whatever you want a contributor to be told, or drop the clause.

4. My summary of the agreement. The paragraph beginning "Read the agreement before you sign it." compresses CAA sections 2, 4, 5, 6, 7 into six sentences. It is descriptive, and it says the agreement governs, but it is prose about a legal document and you may want to read it as such.

Not in this pull request, deliberately

The issue's third item: the generated-file header carries SPDX-License-Identifier: NONE, which is not a valid SPDX expression (NOASSERTION is the idiom). The issue rules that it rides a release that moves the goldens anyway. Same for the compiler sources carrying no SPDX header. The remaining British "licence" spellings in docs/FAQ.md:206, docs/FAQ.md:209, docs/SPEC-TABLES.md:9223 and three internal/codegen/jstable/ comments belong to #402's sweep; only the one in the section rewritten here was fixed.

Gates

  • go test ./compiler/... green, including compiler/docs_test.go, the docs-examples gate.
  • make check green.

Go untouched, so no other leg applies.

🤖 Generated with Claude Code

CONTRIBUTING.md's licence section claimed there is no CLA while
.github/workflows/cla.yml holds every pull request red until each human
commit author signs a copyright assignment. The section now owns the
contributing terms: the exact signing sentence, what the agreement
assigns, where the org-wide signature ledger lives, and what happens to a
signature the automation cannot record.

Each fact sits in one file. CONTRIBUTING.md owns contributing and points
at the README for the license; the README owns the user-facing license
line and points at CONTRIBUTING.md for the agreement. The section heading
is now spelled the American way.

The SPDX expression (AGPL-3.0 in the badge and prose against
AGPL-3.0-or-later in LICENSE) and the CAA's own wording are the owner's
calls, so no legal text moved here.

Refs #474

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@gafferongames
gafferongames marked this pull request as ready for review September 4, 2026 05:39
@gafferongames
gafferongames merged commit f29e636 into main Sep 4, 2026
20 checks passed
@gafferongames
gafferongames deleted the contributing-caa branch September 4, 2026 05:43
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