Skip to content

Commit 25ec324

Browse files
authored
Merge pull request #91 from ScriptKittyOS/slice/120-oss-hygiene-governance
Slice 120: every file attributed, every dependency licensed, and both checked
2 parents 78ee950 + a589281 commit 25ec324

16 files changed

Lines changed: 817 additions & 3 deletions

File tree

‎.github/workflows/gate.yml‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,19 @@ jobs:
5555
5656
- run: mix gate
5757

58+
# Slice 120 AC1. `reuse lint` is a Python tool and this is the only leg that installs one,
59+
# deliberately: `mix gate` has to stay runnable inside the FIPS container and on a developer's
60+
# machine without a Python environment, so the REUSE check is a step here rather than a row in
61+
# the alias. `mix trinity.reuse`, which is in the alias, is the cheaper subset that every leg
62+
# can run: it checks that commentable source files carry an SPDX header. This step checks the
63+
# whole specification, including the files that cannot carry a comment and the LICENSES
64+
# directory, and it is what the badge and a donation review actually ask about.
65+
- name: REUSE compliance
66+
run: |
67+
python3 -m venv /tmp/reuse-venv
68+
/tmp/reuse-venv/bin/pip install --quiet reuse
69+
/tmp/reuse-venv/bin/reuse lint
70+
5871
# Slice 010 AC1 and AC2: the same migrations and the same suite on Postgres. A second job
5972
# rather than a matrix entry so the required check keeps its context name, `gate`. This job
6073
# is not required by the ruleset until it has run green on main once; then it is added.

‎CHANGELOG.md‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,38 @@ evidence for each increment is retained by the maintainers and summarised here.
2424

2525
## 2026-09-24
2626

27+
### `slice/120` — Open-source hygiene and governance, audited
28+
Every one of the 613 files in this repository now carries copyright and licence information, and
29+
`reuse lint` exits 0 against version 3.3 of the REUSE Specification. It did not before: there was no
30+
`LICENSES` directory at all, 28 files carried nothing, and two files carried expressions the tool
31+
could not parse. The check runs in continuous integration.
32+
33+
The part a linter cannot check is the part that mattered. Twenty-six of the uncovered files were the
34+
desktop shell's icons, and the obvious fix, sweeping every uncovered file under this project's
35+
copyright, would have passed. It would also have been false: those icons are the output of Tauri's
36+
own installer, as the commit that added them says. They are attributed to the Tauri Programme within
37+
The Commons Conservancy, and `NOTICE` says so.
38+
39+
`THIRD_PARTY_LICENSES.md` is generated from the CycloneDX bill of materials, so the list and the bill
40+
cannot disagree. Building it found two dependencies with no licence in the bill at all: a package
41+
from the Elixir registry carries its licences in its metadata, a git dependency carries nothing, and
42+
the bill emits such a component silently rather than with an error. Nothing downstream could tell
43+
"MIT" from "nobody checked". Both were looked up at the commit this project pins, not at a branch,
44+
and a dependency with a licence from neither source now fails the build.
45+
46+
Every commit in the history carries a Developer Certificate of Origin sign-off, checked over the
47+
whole history rather than over one change. Merge commits are excluded, because a sign-off certifies
48+
the right to submit work and a merge commit made by the forge introduces none.
49+
50+
`GOVERNANCE.md` now states the committer process as it stands rather than as it was written: two of
51+
the three maintainers joined by invitation rather than through the published path, because there was
52+
no history of outside contribution for the path to be applied to, and a reader assessing this
53+
project should know which of its statements are practice and which are policy.
54+
55+
One criterion is recorded as unmet rather than reported as met: whether the signed receipt field set
56+
reproduces any third party's protected mechanism is a question for the owner, proposed at slice 024
57+
and not since answered.
58+
2759
### `slice/029` — Tool-surface drift
2860
A server whose tool definitions change after you approved them is holding an approval you never
2961
gave, and nothing in the Model Context Protocol requires a server to announce that it has changed

‎GOVERNANCE.md‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,24 @@ look as though it had always been right.
3939

4040
## Becoming a committer
4141

42-
There is no committee to join yet. The path, when it opens:
42+
**As it actually stands.** There are three maintainers (`MAINTAINERS.md`), two of whom joined on
43+
2026-09-23 by the author's invitation rather than through the path below, because at that point
44+
there was no history of outside contribution for the path to be applied to. That is written down
45+
rather than smoothed over: the process described here has not yet been used, and a reader assessing
46+
this project's governance should know which of its statements are practice and which are policy.
47+
48+
The path, for anyone joining from here:
4349

4450
1. Land changes through the ordinary review process, with evidence that meets the proof
4551
standard in `docs/03-conventions.md`.
4652
2. Review someone else's slice and have that review hold up.
47-
3. The maintainer proposes commit access; it is recorded here and in `MAINTAINERS.md`.
53+
3. A maintainer proposes commit access; it is recorded here and in `MAINTAINERS.md`.
54+
55+
A maintainer can accept a proposed change, close an issue and cut a release. Administration of the
56+
GitHub organisation, the domain and the security mailbox rest with the author alone, which is the
57+
first thing a reader should ask about and the reason it is named here rather than left to be
58+
discovered. Two-factor authentication is required of everyone with write access, enforced by the
59+
organisation rather than asked for in a document.
4860

4961
Commit access carries the same obligations as authorship: the rules of evidence in
5062
`docs/03-conventions.md`

‎LICENSES/Apache-2.0.txt‎

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
Apache License
2+
Version 2.0, January 2004
3+
http://www.apache.org/licenses/
4+
5+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6+
7+
1. Definitions.
8+
9+
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
10+
11+
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
12+
13+
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
14+
15+
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
16+
17+
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
18+
19+
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
20+
21+
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
22+
23+
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
24+
25+
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
26+
27+
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
28+
29+
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
30+
31+
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
32+
33+
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
34+
35+
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
36+
37+
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
38+
39+
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
40+
41+
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
42+
43+
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
44+
45+
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
46+
47+
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
48+
49+
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
50+
51+
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
52+
53+
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
54+
55+
END OF TERMS AND CONDITIONS
56+
57+
APPENDIX: How to apply the Apache License to your work.
58+
59+
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
60+
61+
Copyright [yyyy] [name of copyright owner]
62+
63+
Licensed under the Apache License, Version 2.0 (the "License");
64+
you may not use this file except in compliance with the License.
65+
You may obtain a copy of the License at
66+
67+
http://www.apache.org/licenses/LICENSE-2.0
68+
69+
Unless required by applicable law or agreed to in writing, software
70+
distributed under the License is distributed on an "AS IS" BASIS,
71+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
72+
See the License for the specific language governing permissions and
73+
limitations under the License.

‎LICENSES/MIT.txt‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
MIT License
2+
3+
Copyright (c) <year> <copyright holders>
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6+
associated documentation files (the "Software"), to deal in the Software without restriction, including
7+
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
9+
following conditions:
10+
11+
The above copyright notice and this permission notice shall be included in all copies or substantial
12+
portions of the Software.
13+
14+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15+
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
16+
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
18+
USE OR OTHER DEALINGS IN THE SOFTWARE.

‎NOTICE‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,24 @@ Unless required by applicable law or agreed to in writing, software distributed
1919
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
2020
CONDITIONS OF ANY KIND, either express or implied. See the License for the
2121
specific language governing permissions and limitations under the License.
22+
23+
Third-party material in this repository
24+
---------------------------------------
25+
Trinity's dependencies and their licences are listed in THIRD_PARTY_LICENSES.md, which is
26+
generated from sbom.cdx.json, the CycloneDX bill of materials the quality gate produces on
27+
every commit. The two cannot disagree: they are the same data rendered twice.
28+
29+
Two items are worth naming here because they are files in this repository rather than
30+
dependencies fetched at build time:
31+
32+
src-tauri/icons/* Tauri Programme within The Commons Conservancy, MIT OR Apache-2.0.
33+
The output of `mix ex_tauri.install`, which copies Tauri's template
34+
icons. They are not this project's artwork and are not covered by
35+
the copyright above.
36+
37+
assets/vendor/* Upstream authors, vendored unmodified, MIT. Listed per file in
38+
REUSE.toml.
39+
40+
Per-file copyright and licensing for every file in this repository follows the REUSE
41+
Specification, version 3.3. `reuse lint` exits 0 on this tree and runs in continuous
42+
integration; the licence texts are in LICENSES/.

0 commit comments

Comments
 (0)