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
13 changes: 13 additions & 0 deletions .github/workflows/gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,19 @@ jobs:

- run: mix gate

# Slice 120 AC1. `reuse lint` is a Python tool and this is the only leg that installs one,
# deliberately: `mix gate` has to stay runnable inside the FIPS container and on a developer's
# machine without a Python environment, so the REUSE check is a step here rather than a row in
# the alias. `mix trinity.reuse`, which is in the alias, is the cheaper subset that every leg
# can run: it checks that commentable source files carry an SPDX header. This step checks the
# whole specification, including the files that cannot carry a comment and the LICENSES
# directory, and it is what the badge and a donation review actually ask about.
- name: REUSE compliance
run: |
python3 -m venv /tmp/reuse-venv
/tmp/reuse-venv/bin/pip install --quiet reuse
/tmp/reuse-venv/bin/reuse lint

# Slice 010 AC1 and AC2: the same migrations and the same suite on Postgres. A second job
# rather than a matrix entry so the required check keeps its context name, `gate`. This job
# is not required by the ruleset until it has run green on main once; then it is added.
Expand Down
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,38 @@ evidence for each increment is retained by the maintainers and summarised here.

## 2026-09-24

### `slice/120` — Open-source hygiene and governance, audited
Every one of the 613 files in this repository now carries copyright and licence information, and
`reuse lint` exits 0 against version 3.3 of the REUSE Specification. It did not before: there was no
`LICENSES` directory at all, 28 files carried nothing, and two files carried expressions the tool
could not parse. The check runs in continuous integration.

The part a linter cannot check is the part that mattered. Twenty-six of the uncovered files were the
desktop shell's icons, and the obvious fix, sweeping every uncovered file under this project's
copyright, would have passed. It would also have been false: those icons are the output of Tauri's
own installer, as the commit that added them says. They are attributed to the Tauri Programme within
The Commons Conservancy, and `NOTICE` says so.

`THIRD_PARTY_LICENSES.md` is generated from the CycloneDX bill of materials, so the list and the bill
cannot disagree. Building it found two dependencies with no licence in the bill at all: a package
from the Elixir registry carries its licences in its metadata, a git dependency carries nothing, and
the bill emits such a component silently rather than with an error. Nothing downstream could tell
"MIT" from "nobody checked". Both were looked up at the commit this project pins, not at a branch,
and a dependency with a licence from neither source now fails the build.

Every commit in the history carries a Developer Certificate of Origin sign-off, checked over the
whole history rather than over one change. Merge commits are excluded, because a sign-off certifies
the right to submit work and a merge commit made by the forge introduces none.

`GOVERNANCE.md` now states the committer process as it stands rather than as it was written: two of
the three maintainers joined by invitation rather than through the published path, because there was
no history of outside contribution for the path to be applied to, and a reader assessing this
project should know which of its statements are practice and which are policy.

One criterion is recorded as unmet rather than reported as met: whether the signed receipt field set
reproduces any third party's protected mechanism is a question for the owner, proposed at slice 024
and not since answered.

### `slice/029` — Tool-surface drift
A server whose tool definitions change after you approved them is holding an approval you never
gave, and nothing in the Model Context Protocol requires a server to announce that it has changed
Expand Down
16 changes: 14 additions & 2 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,24 @@ look as though it had always been right.

## Becoming a committer

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

The path, for anyone joining from here:

1. Land changes through the ordinary review process, with evidence that meets the proof
standard in `docs/03-conventions.md`.
2. Review someone else's slice and have that review hold up.
3. The maintainer proposes commit access; it is recorded here and in `MAINTAINERS.md`.
3. A maintainer proposes commit access; it is recorded here and in `MAINTAINERS.md`.

A maintainer can accept a proposed change, close an issue and cut a release. Administration of the
GitHub organisation, the domain and the security mailbox rest with the author alone, which is the
first thing a reader should ask about and the reason it is named here rather than left to be
discovered. Two-factor authentication is required of everyone with write access, enforced by the
organisation rather than asked for in a document.

Commit access carries the same obligations as authorship: the rules of evidence in
`docs/03-conventions.md`
Expand Down
73 changes: 73 additions & 0 deletions LICENSES/Apache-2.0.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"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.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"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.

"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).

"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.

"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."

"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.

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.

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.

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:

(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices stating that You changed the files; and

(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

(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.

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.

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.

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.

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.

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.

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.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

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.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
18 changes: 18 additions & 0 deletions LICENSES/MIT.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
MIT License

Copyright (c) <year> <copyright holders>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
21 changes: 21 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,24 @@ Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.

Third-party material in this repository
---------------------------------------
Trinity's dependencies and their licences are listed in THIRD_PARTY_LICENSES.md, which is
generated from sbom.cdx.json, the CycloneDX bill of materials the quality gate produces on
every commit. The two cannot disagree: they are the same data rendered twice.

Two items are worth naming here because they are files in this repository rather than
dependencies fetched at build time:

src-tauri/icons/* Tauri Programme within The Commons Conservancy, MIT OR Apache-2.0.
The output of `mix ex_tauri.install`, which copies Tauri's template
icons. They are not this project's artwork and are not covered by
the copyright above.

assets/vendor/* Upstream authors, vendored unmodified, MIT. Listed per file in
REUSE.toml.

Per-file copyright and licensing for every file in this repository follows the REUSE
Specification, version 3.3. `reuse lint` exits 0 on this tree and runs in continuous
integration; the licence texts are in LICENSES/.
Loading
Loading