aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Govorov <me@govorov.online>2026-07-24 03:16:23 +0100
committerNikolay Govorov <me@govorov.online>2026-07-24 03:16:23 +0100
commit1934f5fb264ab046031d5d1b61227de2e1f8dde9 (patch)
treee474aeafc0d2f8e76ee2bb18a47032219450e2b5
parentf2506479af3e8eac34b675582878ac783a5effda (diff)
downloadtar
tar.gz
tar.bz2
tar.lz
tar.xz
tar.zst
zip
Unify CLA policy
Diffstat
-rw-r--r--CLA.md170+170 −0
-rw-r--r--LICENSES/CC-BY-3.0.txt319+319 −0
-rw-r--r--README.md19+13 −6
-rw-r--r--REUSE.toml7+7 −0
-rw-r--r--config/cla-unsupported-commits7+7 −0
-rwxr-xr-xtasks/signoff113+101 −12
6 files changed, 617 insertions, 18 deletions
diff --git a/CLA.md b/CLA.md
new file mode 100644
--- /dev/null
+++ b/CLA.md
@@ -0,0 +1,170 @@
+# Dimidium Labs Infrastructure Individual Contributor License Agreement
+
+Version 1.0
+
+> This agreement is based on the Harmony Individual Contributor License
+> Agreement Version 1.0 licensed under a
+> [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/).
+
+Thank you for your interest in contributing to Dimidium Labs Infrastructure
+(the "Project"). In this Agreement, "We" and "Us" mean Nikolay Govorov.
+
+This contributor agreement ("Agreement") documents the rights granted by
+contributors to Us. To make this document effective, You must personally add
+the following trailers to every commit You Submit:
+
+```text
+CLA-Version: 1.0
+Signed-off-by: Your Name <your.email@example.com>
+```
+
+The name and email address in `Signed-off-by` must identify You and match the
+commit author. By Submitting a commit containing these trailers, You
+electronically sign and accept this Agreement. No other person or automated
+system may add the `Signed-off-by` trailer on Your behalf. This is a legally
+binding document, so please read it carefully before agreeing to it.
+
+## 1. Definitions
+
+"You" means the individual who Submits a Contribution to Us.
+
+"Contribution" means any work of authorship that is Submitted by You to Us in
+which You own or assert ownership of the Copyright. If You do not own the
+Copyright in the entire work of authorship, please follow the instructions in
+Section 3(d).
+
+"Copyright" means all rights protecting works of authorship owned or controlled
+by You, including copyright, moral and neighboring rights, as appropriate, for
+the full term of their existence including any extensions by You.
+
+"Material" means the work of authorship which is made available by Us to third
+parties as part of the Project. After You Submit the Contribution, it may be
+included in the Material.
+
+"Submit" means any form of electronic, verbal, or written communication sent to
+Us or our representatives, including but not limited to electronic mailing
+lists, source code control systems, and issue tracking systems that are managed
+by, or on behalf of, Us for the purpose of discussing and improving the
+Material, but excluding communication that is conspicuously marked or otherwise
+designated in writing by You as "Not a Contribution."
+
+"Submission Date" means the date on which You Submit a Contribution to Us.
+
+"Effective Date" means the date You execute this Agreement or the date You first
+Submit a Contribution to Us, whichever is earlier.
+
+"Media" means any portion of a Contribution which is not software.
+
+## 2. Grant of Rights
+
+### 2.1 Copyright License
+
+(a) You retain ownership of the Copyright in Your Contribution and have the same
+rights to use or license the Contribution which You would have had without
+entering into the Agreement.
+
+(b) To the maximum extent permitted by the relevant law, You grant to Us a
+perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable
+license under the Copyright covering the Contribution, with the right to
+sublicense such rights through multiple tiers of sublicensees, to reproduce,
+modify, display, perform and distribute the Contribution as part of the
+Material; provided that this license is conditioned upon compliance with Section
+2.3.
+
+### 2.2 Patent License
+
+For patent claims including, without limitation, method, process, and apparatus
+claims which You own, control or have the right to grant,
+now or in the future, You grant to Us a perpetual, worldwide, non-exclusive,
+transferable, royalty-free, irrevocable patent license, with the right to
+sublicense these rights to multiple tiers of sublicensees, to make, have made,
+use, sell, offer for sale, import and otherwise transfer the Contribution and
+the Contribution in combination with the Material (and portions of such
+combination). This license is granted only to the extent that the exercise of
+the licensed rights infringes such patent claims; and provided that this license
+is conditioned upon compliance with Section 2.3.
+
+### 2.3 Outbound License
+
+Based on the grant of rights in Sections 2.1 and 2.2, if We include Your
+Contribution in a Material, We may license the Contribution under any license,
+including copyleft, permissive, commercial, or proprietary licenses. As a
+condition on the exercise of this right, We agree to also license the
+Contribution under the terms of the license or licenses which We are using for
+the Material on the Submission Date.
+
+### 2.4 Moral Rights
+
+If moral rights apply to the Contribution, to the maximum extent permitted by
+law, You waive and agree not to assert such moral rights against Us or our
+successors in interest, or any of our licensees, either direct or indirect.
+
+### 2.5 Our Rights
+
+You acknowledge that We are not obligated to use Your Contribution as part of
+the Material and may decide to include any Contribution We consider appropriate.
+
+### 2.6 Reservation of Rights
+
+Any rights not expressly licensed under this section are expressly
+reserved by You.
+
+## 3. Agreement
+
+You confirm that:
+
+(a) You have the legal authority to enter into this Agreement.
+
+(b) You own the Copyright and patent claims covering the
+Contribution which are required to grant the rights under Section 2.
+
+(c) The grant of rights under Section 2 does not violate any grant
+of rights which You have made to third parties, including Your employer. If You
+are an employee, You have had Your employer approve this Agreement or sign the
+Entity version of this document. If You are less than eighteen years old, please
+have Your parents or guardian sign the Agreement.
+
+(d) If You do not own the Copyright in the entire work of authorship Submitted,
+You have clearly identified the third-party work, its source, and its license in
+the Submission.
+
+## 4. Disclaimer
+
+EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS
+IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT
+LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US.
+TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY
+IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW.
+
+## 5. Consequential Damage Waiver
+
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU BE
+LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA,
+INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT
+OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR
+OTHERWISE) UPON WHICH THE CLAIM IS BASED.
+
+## 6. Miscellaneous
+
+6.1 This Agreement sets out the entire agreement between You and Us for Your
+Contributions to Us and overrides all other agreements or understandings.
+
+6.2 If You or We assign the rights or obligations received through this
+Agreement to a third party, as a condition of the assignment, that third party
+must agree in writing to abide by all the rights and obligations in the
+Agreement.
+
+6.3 The failure of either party to require performance by the other party of any
+provision of this Agreement in one situation shall not affect the right of a
+party to require such performance at any time in the future. A waiver of
+performance under a provision in one situation shall not be considered a waiver
+of the performance of the provision in the future or a waiver of the provision
+in its entirety.
+
+6.4 If any provision of this Agreement is found void and unenforceable, such
+provision will be replaced to the extent possible with a provision that comes
+closest to the meaning of the original provision and which is enforceable. The
+terms and conditions set forth in this Agreement shall apply notwithstanding any
+failure of essential purpose of this Agreement or any limited remedy to the
+maximum extent possible under law.
diff --git a/LICENSES/CC-BY-3.0.txt b/LICENSES/CC-BY-3.0.txt
new file mode 100644
--- /dev/null
+++ b/LICENSES/CC-BY-3.0.txt
@@ -0,0 +1,319 @@
+Creative Commons Legal Code
+
+Attribution 3.0 Unported
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+ DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+ other pre-existing works, such as a translation, adaptation,
+ derivative work, arrangement of music or other alterations of a
+ literary or artistic work, or phonogram or performance and includes
+ cinematographic adaptations or any other form in which the Work may be
+ recast, transformed, or adapted including in any form recognizably
+ derived from the original, except that a work that constitutes a
+ Collection will not be considered an Adaptation for the purpose of
+ this License. For the avoidance of doubt, where the Work is a musical
+ work, performance or phonogram, the synchronization of the Work in
+ timed-relation with a moving image ("synching") will be considered an
+ Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+ encyclopedias and anthologies, or performances, phonograms or
+ broadcasts, or other works or subject matter other than works listed
+ in Section 1(f) below, which, by reason of the selection and
+ arrangement of their contents, constitute intellectual creations, in
+ which the Work is included in its entirety in unmodified form along
+ with one or more other contributions, each constituting separate and
+ independent works in themselves, which together are assembled into a
+ collective whole. A work that constitutes a Collection will not be
+ considered an Adaptation (as defined above) for the purposes of this
+ License.
+ c. "Distribute" means to make available to the public the original and
+ copies of the Work or Adaptation, as appropriate, through sale or
+ other transfer of ownership.
+ d. "Licensor" means the individual, individuals, entity or entities that
+ offer(s) the Work under the terms of this License.
+ e. "Original Author" means, in the case of a literary or artistic work,
+ the individual, individuals, entity or entities who created the Work
+ or if no individual or entity can be identified, the publisher; and in
+ addition (i) in the case of a performance the actors, singers,
+ musicians, dancers, and other persons who act, sing, deliver, declaim,
+ play in, interpret or otherwise perform literary or artistic works or
+ expressions of folklore; (ii) in the case of a phonogram the producer
+ being the person or legal entity who first fixes the sounds of a
+ performance or other sounds; and, (iii) in the case of broadcasts, the
+ organization that transmits the broadcast.
+ f. "Work" means the literary and/or artistic work offered under the terms
+ of this License including without limitation any production in the
+ literary, scientific and artistic domain, whatever may be the mode or
+ form of its expression including digital form, such as a book,
+ pamphlet and other writing; a lecture, address, sermon or other work
+ of the same nature; a dramatic or dramatico-musical work; a
+ choreographic work or entertainment in dumb show; a musical
+ composition with or without words; a cinematographic work to which are
+ assimilated works expressed by a process analogous to cinematography;
+ a work of drawing, painting, architecture, sculpture, engraving or
+ lithography; a photographic work to which are assimilated works
+ expressed by a process analogous to photography; a work of applied
+ art; an illustration, map, plan, sketch or three-dimensional work
+ relative to geography, topography, architecture or science; a
+ performance; a broadcast; a phonogram; a compilation of data to the
+ extent it is protected as a copyrightable work; or a work performed by
+ a variety or circus performer to the extent it is not otherwise
+ considered a literary or artistic work.
+ g. "You" means an individual or entity exercising rights under this
+ License who has not previously violated the terms of this License with
+ respect to the Work, or who has received express permission from the
+ Licensor to exercise rights under this License despite a previous
+ violation.
+ h. "Publicly Perform" means to perform public recitations of the Work and
+ to communicate to the public those public recitations, by any means or
+ process, including by wire or wireless means or public digital
+ performances; to make available to the public Works in such a way that
+ members of the public may access these Works from a place and at a
+ place individually chosen by them; to perform the Work to the public
+ by any means or process and the communication to the public of the
+ performances of the Work, including by public digital performance; to
+ broadcast and rebroadcast the Work by any means including signs,
+ sounds or images.
+ i. "Reproduce" means to make copies of the Work by any means including
+ without limitation by sound or visual recordings and the right of
+ fixation and reproducing fixations of the Work, including storage of a
+ protected performance or phonogram in digital form or other electronic
+ medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+ Collections, and to Reproduce the Work as incorporated in the
+ Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+ including any translation in any medium, takes reasonable steps to
+ clearly label, demarcate or otherwise identify that changes were made
+ to the original Work. For example, a translation could be marked "The
+ original work was translated from English to Spanish," or a
+ modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+ in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme cannot be waived, the Licensor
+ reserves the exclusive right to collect such royalties for any
+ exercise by You of the rights granted under this License;
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme can be waived, the Licensor waives the
+ exclusive right to collect such royalties for any exercise by You
+ of the rights granted under this License; and,
+ iii. Voluntary License Schemes. The Licensor waives the right to
+ collect royalties, whether individually or, in the event that the
+ Licensor is a member of a collecting society that administers
+ voluntary licensing schemes, via that society, from any exercise
+ by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+ of this License. You must include a copy of, or the Uniform Resource
+ Identifier (URI) for, this License with every copy of the Work You
+ Distribute or Publicly Perform. You may not offer or impose any terms
+ on the Work that restrict the terms of this License or the ability of
+ the recipient of the Work to exercise the rights granted to that
+ recipient under the terms of the License. You may not sublicense the
+ Work. You must keep intact all notices that refer to this License and
+ to the disclaimer of warranties with every copy of the Work You
+ Distribute or Publicly Perform. When You Distribute or Publicly
+ Perform the Work, You may not impose any effective technological
+ measures on the Work that restrict the ability of a recipient of the
+ Work from You to exercise the rights granted to that recipient under
+ the terms of the License. This Section 4(a) applies to the Work as
+ incorporated in a Collection, but this does not require the Collection
+ apart from the Work itself to be made subject to the terms of this
+ License. If You create a Collection, upon notice from any Licensor You
+ must, to the extent practicable, remove from the Collection any credit
+ as required by Section 4(b), as requested. If You create an
+ Adaptation, upon notice from any Licensor You must, to the extent
+ practicable, remove from the Adaptation any credit as required by
+ Section 4(b), as requested.
+ b. If You Distribute, or Publicly Perform the Work or any Adaptations or
+ Collections, You must, unless a request has been made pursuant to
+ Section 4(a), keep intact all copyright notices for the Work and
+ provide, reasonable to the medium or means You are utilizing: (i) the
+ name of the Original Author (or pseudonym, if applicable) if supplied,
+ and/or if the Original Author and/or Licensor designate another party
+ or parties (e.g., a sponsor institute, publishing entity, journal) for
+ attribution ("Attribution Parties") in Licensor's copyright notice,
+ terms of service or by other reasonable means, the name of such party
+ or parties; (ii) the title of the Work if supplied; (iii) to the
+ extent reasonably practicable, the URI, if any, that Licensor
+ specifies to be associated with the Work, unless such URI does not
+ refer to the copyright notice or licensing information for the Work;
+ and (iv) , consistent with Section 3(b), in the case of an Adaptation,
+ a credit identifying the use of the Work in the Adaptation (e.g.,
+ "French translation of the Work by Original Author," or "Screenplay
+ based on original Work by Original Author"). The credit required by
+ this Section 4 (b) may be implemented in any reasonable manner;
+ provided, however, that in the case of a Adaptation or Collection, at
+ a minimum such credit will appear, if a credit for all contributing
+ authors of the Adaptation or Collection appears, then as part of these
+ credits and in a manner at least as prominent as the credits for the
+ other contributing authors. For the avoidance of doubt, You may only
+ use the credit required by this Section for the purpose of attribution
+ in the manner set out above and, by exercising Your rights under this
+ License, You may not implicitly or explicitly assert or imply any
+ connection with, sponsorship or endorsement by the Original Author,
+ Licensor and/or Attribution Parties, as appropriate, of You or Your
+ use of the Work, without the separate, express prior written
+ permission of the Original Author, Licensor and/or Attribution
+ Parties.
+ c. Except as otherwise agreed in writing by the Licensor or as may be
+ otherwise permitted by applicable law, if You Reproduce, Distribute or
+ Publicly Perform the Work either by itself or as part of any
+ Adaptations or Collections, You must not distort, mutilate, modify or
+ take other derogatory action in relation to the Work which would be
+ prejudicial to the Original Author's honor or reputation. Licensor
+ agrees that in those jurisdictions (e.g. Japan), in which any exercise
+ of the right granted in Section 3(b) of this License (the right to
+ make Adaptations) would be deemed to be a distortion, mutilation,
+ modification or other derogatory action prejudicial to the Original
+ Author's honor and reputation, the Licensor will waive or not assert,
+ as appropriate, this Section, to the fullest extent permitted by the
+ applicable national law, to enable You to reasonably exercise Your
+ right under Section 3(b) of this License (right to make Adaptations)
+ but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+ automatically upon any breach by You of the terms of this License.
+ Individuals or entities who have received Adaptations or Collections
+ from You under this License, however, will not have their licenses
+ terminated provided such individuals or entities remain in full
+ compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+ survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+ perpetual (for the duration of the applicable copyright in the Work).
+ Notwithstanding the above, Licensor reserves the right to release the
+ Work under different license terms or to stop distributing the Work at
+ any time; provided, however that any such election will not serve to
+ withdraw this License (or any other license that has been, or is
+ required to be, granted under the terms of this License), and this
+ License will continue in full force and effect unless terminated as
+ stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+ the Licensor offers to the recipient a license to the Work on the same
+ terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+ offers to the recipient a license to the original Work on the same
+ terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of
+ the remainder of the terms of this License, and without further action
+ by the parties to this agreement, such provision shall be reformed to
+ the minimum extent necessary to make such provision valid and
+ enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+ breach consented to unless such waiver or consent shall be in writing
+ and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+ respect to the Work licensed here. There are no understandings,
+ agreements or representations with respect to the Work not specified
+ here. Licensor shall not be bound by any additional provisions that
+ may appear in any communication from You. This License may not be
+ modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+ License were drafted utilizing the terminology of the Berne Convention
+ for the Protection of Literary and Artistic Works (as amended on
+ September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+ Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+ and the Universal Copyright Convention (as revised on July 24, 1971).
+ These rights and subject matter take effect in the relevant
+ jurisdiction in which the License terms are sought to be enforced
+ according to the corresponding provisions of the implementation of
+ those treaty provisions in the applicable national law. If the
+ standard suite of rights granted under applicable copyright law
+ includes additional rights not granted under this License, such
+ additional rights are deemed to be included in the License; this
+ License is not intended to restrict the license of any rights under
+ applicable law.
+
+
+Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be
+ liable to You or any party on any legal theory for any damages
+ whatsoever, including without limitation any general, special,
+ incidental or consequential damages arising in connection to this
+ license. Notwithstanding the foregoing two (2) sentences, if Creative
+ Commons has expressly identified itself as the Licensor hereunder, it
+ shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the
+ Work is licensed under the CCPL, Creative Commons does not authorize
+ the use by either party of the trademark "Creative Commons" or any
+ related trademark or logo of Creative Commons without the prior
+ written consent of Creative Commons. Any permitted use will be in
+ compliance with Creative Commons' then-current trademark usage
+ guidelines, as may be published on its website or otherwise made
+ available upon request from time to time. For the avoidance of doubt,
+ this trademark restriction does not form part of this License.
+
+ Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/README.md b/README.md
index ba734bc..f7f26b3 100644
--- a/README.md
+++ b/README.md
@@ -18,15 +18,22 @@ Consuming projects pin this repository by commit SHA.
`tasks/signoff` verifies that:
-- commits authored with an email from `config/signoff-approved-emails` are
- trusted without a trailer;
-- every other non-merge commit contains a `Signed-off-by` trailer exactly
- matching its author;
+- authors and co-authors with an email from
+ `config/signoff-approved-emails` are trusted without a trailer;
+- `CLA.md` declares exactly one version;
+- every non-approved author and co-author has a `Signed-off-by` trailer exactly
+ matching their commit identity;
+- every commit with a non-approved author or co-author has exactly one
+ `CLA-Version` trailer matching the version declared by `CLA.md` in that
+ commit;
+- commits listed in `config/cla-unsupported-commits` retain their
+ `Signed-off-by` requirement but are explicitly not treated as covered by a
+ versioned CLA;
- every non-approved author and committer email in the complete non-merge
history is registered in `.mailmap`.
-Approved emails are maintained centrally so a pull request in a consuming
-repository cannot grant itself an exemption.
+Approved emails and unsupported commits are maintained centrally so a pull
+request in a consuming repository cannot grant itself an exemption.
## Licensing policy
diff --git a/REUSE.toml b/REUSE.toml
index 515ecc4..f4aa259 100644
--- a/REUSE.toml
+++ b/REUSE.toml
@@ -9,3 +9,10 @@ path = [
]
SPDX-FileCopyrightText = "2026 Nikolay Govorov"
SPDX-License-Identifier = "CC-BY-4.0"
+
+[[annotations]]
+path = [
+ "CLA.md",
+]
+SPDX-FileCopyrightText = "2026 Nikolay Govorov"
+SPDX-License-Identifier = "CC-BY-3.0"
diff --git a/config/cla-unsupported-commits b/config/cla-unsupported-commits
new file mode 100644
--- /dev/null
+++ b/config/cla-unsupported-commits
@@ -0,0 +1,7 @@
+# SPDX-FileCopyrightText: 2026 Nikolay Govorov
+# SPDX-License-Identifier: 0BSD
+#
+# External contributions retained in history but not covered by a versioned CLA.
+
+ca483864b5f1f8048905c9016aff20ef36395840
+eb9caf82d99d61a022f67695f208067992a1a9ec
diff --git a/tasks/signoff b/tasks/signoff
index 70d8690..d9252b8 100755
--- a/tasks/signoff
+++ b/tasks/signoff
@@ -1,44 +1,133 @@
#!/bin/sh -eu
# SPDX-FileCopyrightText: 2026 Nikolay Govorov
# SPDX-License-Identifier: 0BSD
-#MISE description="Verify contributor identities and Signed-off-by trailers"
+#MISE description="Verify contributor identities and CLA acceptance trailers"
root=$(git rev-parse --show-toplevel)
cd "$root"
task_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
approved_emails_file="$task_dir/../config/signoff-approved-emails"
+unsupported_commits_file="$task_dir/../config/cla-unsupported-commits"
+
+if [ ! -f CLA.md ]; then
+ echo "CLA.md is missing" >&2
+ exit 1
+fi
+
+head_cla_version_count=$(grep -c '^Version ' CLA.md || :)
+if [ "$head_cla_version_count" -ne 1 ]; then
+ echo "CLA.md must declare exactly one version" >&2
+ exit 1
+fi
+
+head_cla_version=$(sed -n 's/^Version //p' CLA.md)
+if [ -z "$head_cla_version" ]; then
+ echo "CLA.md declares an empty version" >&2
+ exit 1
+fi
is_approved_email() {
grep -v '^[[:space:]]*#' "$approved_emails_file" |
grep -Fqx -- "$1"
}
+is_unsupported_commit() {
+ grep -v '^[[:space:]]*#' "$unsupported_commits_file" |
+ grep -Fqx -- "$1"
+}
+
+check_identity() {
+ identity=$1
+ role=$2
+ email=$(printf '%s\n' "$identity" | sed -n 's/^.*<\([^<>]*\)>$/\1/p')
+
+ if [ -z "$email" ]; then
+ echo "Commit $short_sha has an invalid $role identity: $identity"
+ bad=1
+ return
+ fi
+
+ if is_approved_email "$email"; then
+ return
+ fi
+
+ requires_cla=1
+ if ! printf '%s\n' "$signoffs" | grep -Fqx -- "$identity"; then
+ echo "Commit $short_sha $role $identity is missing a matching Signed-off-by"
+ bad=1
+ fi
+}
+
if [ ! -f "$approved_emails_file" ]; then
echo "Approved email configuration is missing: $approved_emails_file" >&2
exit 1
fi
+if [ ! -f "$unsupported_commits_file" ]; then
+ echo "Unsupported commit configuration is missing: $unsupported_commits_file" >&2
+ exit 1
+fi
+
bad=0
for sha in $(git log --no-merges --format=%H); do
- author=$(git show -s --format='%an' "$sha")
- email=$(git show -s --format='%ae' "$sha")
- if is_approved_email "$email"; then
- continue
+ short_sha=$(printf '%.8s' "$sha")
+ signoffs=$(git show -s --format='%(trailers:key=Signed-off-by,valueonly)' "$sha")
+ requires_cla=0
+
+ author=$(git show -s --format='%an <%ae>' "$sha")
+ check_identity "$author" "author"
+
+ coauthors=$(git show -s --format='%(trailers:key=Co-authored-by,valueonly)' "$sha")
+ if [ -n "$coauthors" ]; then
+ old_ifs=$IFS
+ IFS='
+'
+ for coauthor in $coauthors; do
+ check_identity "$coauthor" "co-author"
+ done
+ IFS=$old_ifs
fi
- expected="${author} <${email}>"
+ if [ "$requires_cla" -eq 1 ] && ! is_unsupported_commit "$sha"; then
+ expected_cla_version_count=$(
+ git show "$sha:CLA.md" 2>/dev/null | grep -c '^Version ' || :
+ )
+ if [ "$expected_cla_version_count" -ne 1 ]; then
+ echo "Commit $short_sha does not contain a CLA.md with exactly one version"
+ bad=1
+ continue
+ fi
- if ! git show -s --format='%(trailers:key=Signed-off-by,valueonly)' "$sha" |
- grep -Fqx -- "$expected"; then
- short_sha=$(printf '%.8s' "$sha")
- echo "Commit $short_sha by $expected is missing a valid Signed-off-by"
- bad=1
+ expected_cla_version=$(
+ git show "$sha:CLA.md" | sed -n 's/^Version //p'
+ )
+ if [ -z "$expected_cla_version" ]; then
+ echo "Commit $short_sha contains an empty CLA version"
+ bad=1
+ continue
+ fi
+
+ commit_cla_version=$(
+ git show -s --format='%(trailers:key=CLA-Version,valueonly)' "$sha"
+ )
+ if [ "$commit_cla_version" != "$expected_cla_version" ]; then
+ if [ -z "$commit_cla_version" ]; then
+ echo "Commit $short_sha is missing CLA-Version: $expected_cla_version"
+ else
+ echo "Commit $short_sha has invalid CLA-Version: $commit_cla_version"
+ echo "Expected CLA-Version: $expected_cla_version"
+ fi
+ bad=1
+ fi
fi
done
if [ "$bad" -ne 0 ]; then
- echo "Every commit from a non-approved author email must be signed off (git commit -s)"
+ echo "Every non-approved author and co-author must accept the CLA in their commit"
+ echo "Required trailers:"
+ echo " CLA-Version: <version from CLA.md>"
+ echo " Signed-off-by: Name <email>"
echo "See CLA.md"
exit 1
fi