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
2 changes: 1 addition & 1 deletion .github/workflows/cla.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
path-to-document: "https://github.com/Signetry/reviewer/blob/main/CLA.md"
branch: "cla-signatures"
allowlist: "dependabot[bot],bkd-dotcom"
custom-notsigned-prcomment: "Thanks for your contribution! Before it can be merged, please read the **[Contributor License Agreement](https://github.com/Signetry/reviewer/blob/main/CLA.md)** — Signetry is **All Rights Reserved**, and by signing you assign copyright/ownership of your contribution to the Owner (you may not use, sell, or commercialize it yourself). To agree, reply with exactly:"
custom-notsigned-prcomment: "Thanks for your contribution! Before it can be merged, please read the **[Contributor License Agreement](https://github.com/Signetry/reviewer/blob/main/CLA.md)** — this repo is **Apache-2.0**, and the CLA lets code move across Signetry's open-core licence line. It does not reduce your rights: you keep the same Apache-2.0 grant as everyone else. To agree, reply with exactly:"
custom-pr-sign-comment: "I have read the CLA Document and I hereby sign the CLA"
custom-allsigned-prcomment: "All contributors have signed the CLA. ✅"
lock-pullrequest-aftermerge: false
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Release

# Cuts a GitHub Release when a version tag is pushed (e.g. v0.1.0).
#
# signetry-reviewer is SOURCE-AVAILABLE (All Rights Reserved) and is NOT published to
# signetry-reviewer is Apache-2.0 and is NOT published to
# PyPI — it is installed from source by tag:
# pip install "signetry-reviewer @ git+https://github.com/Signetry/reviewer@v0.1.0"
# The former PyPI Trusted-Publishing job was removed on the source-available
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
echo "Release ${GITHUB_REF_NAME}. See CHANGELOG.md." > notes.md
fi
echo "" >> notes.md
echo "Source-available (All Rights Reserved); install from source:" >> notes.md
echo "Apache-2.0; install from source:" >> notes.md
echo '```' >> notes.md
echo "pip install \"signetry-reviewer @ git+https://github.com/Signetry/reviewer@${GITHUB_REF_NAME}\"" >> notes.md
echo '```' >> notes.md
Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,24 @@ Follows [Keep a Changelog](https://keepachangelog.com/) / [SemVer](https://semve

## [Unreleased]

### Changed — Signetry is now open core; this repo is Apache-2.0

- An [Apache-2.0](LICENSE) **LICENSE** file is now present, replacing the previous
"All Rights Reserved" terms, as part of Signetry's
[open-core model](https://github.com/Signetry/signetry/blob/main/LICENSING.md). The
engine ([`Signetry/core`](https://github.com/Signetry/core)) is source-available under
BUSL-1.1 and converts to Apache-2.0 on 2030-08-31.
- **The reviewer is advisory by construction** — it never merges and never gates — so
there is no reason to restrict who may run it. `pyproject.toml` declares
`license = "Apache-2.0"` and the OSI Apache classifier, replacing
`Proprietary — All Rights Reserved`.
- The all-rights-reserved framing is gone from `README.md`, `CONTRIBUTING.md`,
`CLA.md`, `CONTRIBUTORS.md`, `action.yml`, the release workflow's notes, and the CLA
workflow's PR comment.
- **The CLA is kept**, and its fallback licence grant is now **non-exclusive** so a
contributor never loses the right to use their own contribution. See
[CLA.md](CLA.md) §2–3.

### Added — insecure-deserialization check (`deser.introduced`)

- Flags a deserialization sink introduced by the diff, across Python (`pickle`,
Expand Down
38 changes: 27 additions & 11 deletions CLA.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Signetry Contributor License Agreement (CLA)

**Copyright (c) 2026 Binay Dalai. All rights reserved.**
**Copyright (c) 2026 Binay Dalai.** This repository is licensed under
**[Apache-2.0](LICENSE)** as part of Signetry's
[open-core model](https://github.com/Signetry/signetry/blob/main/LICENSING.md). This
Agreement governs what You grant the Owner when You contribute; it does not reduce the
rights the Apache-2.0 licence gives You (and everyone else) in this code.

Thank you for your interest in contributing to Signetry ("the Project"), owned by
Binay Dalai ("the Owner"). This Contributor License Agreement ("Agreement")
Expand All @@ -26,21 +30,33 @@ Your Contribution. You agree that the Owner is the sole and exclusive owner of t
Contribution once merged into the Project.

To the extent any rights cannot be assigned by law, You grant the Owner a
**perpetual, worldwide, exclusive, irrevocable, royalty-free, sublicensable, and
**perpetual, worldwide, non-exclusive, irrevocable, royalty-free, sublicensable, and
transferable license** to use, reproduce, modify, prepare derivative works of,
publicly display, publicly perform, distribute, **sell, and commercialize** Your
Contribution, in whole or in part, in any form and for any purpose.

## 3. The Owner's exclusive rights
Nothing in this section removes Your own ability to use Your Contribution: once it is
released as part of this repository it is available to You, as to anyone, under
[Apache-2.0](LICENSE), and You retain any rights You independently hold in the
underlying ideas and techniques.

## 3. Why the Owner needs this (open core)

You acknowledge and agree that:

- The Owner alone retains the right to **use, license, sell, and monetize** the
Project, including Your Contribution.
- You obtain **no right** to use, copy, modify, distribute, sell, or commercialize
the Project or Your Contribution for Your own personal or commercial purposes,
except as expressly permitted in writing by the Owner.
- The Project is **not open source** and is licensed "All Rights Reserved."
- **You keep the licence's rights.** This repository is released under
[Apache-2.0](LICENSE), so You may use, copy, modify, distribute, and commercialize
it — including Your own Contribution — on exactly the same terms as any other user.
No separate written permission is required.
- **The Owner may relicense.** The assignment above lets the Owner use, license, sell,
and monetize the Project, including Your Contribution, and release it under other
terms.
- **Code may move across the open-core line.** Signetry's integration surface is
Apache-2.0 while the engine
([`Signetry/core`](https://github.com/Signetry/core)) is source-available under
BUSL-1.1, converting to Apache-2.0 on 2030-08-31. A Contribution accepted here may
later be moved into the engine, or engine code moved out to an Apache-2.0 repo. The
CLA is what makes that possible without asking every past contributor again.

## 4. Recognition of Contributors (credit, not rights)

Expand All @@ -50,8 +66,8 @@ of Your work.

This recognition is **attribution only**. It does **not**:

- grant You any ownership, license, or right to use, copy, sell, sublicense, or
commercialize the Project or Your Contribution;
- grant You ownership of the Project, or any rights beyond those the Project's
licence already grants everyone;
- entitle You to represent the Project, or any part of it, as Your own work, product,
or property, or to market or sell it under Your own name or brand; or
- create any partnership, employment, or revenue-sharing relationship with the Owner.
Expand Down
90 changes: 80 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,42 @@
# Contribution Agreement
# Contributing to signetry-reviewer

By submitting a Pull Request to this repository, you agree to assign and transfer all copyright and ownership of your contributed code to the repository owner. The owner retains the exclusive right to monetize, use, and control the entire codebase.
`signetry-reviewer` is **[Apache-2.0](LICENSE)** — use it, fork it, run it in your own
CI, ship it commercially, no permission needed. This file covers what the licence means
for contributors, why a CLA still applies, and how to get a change merged.

The most valuable contribution here is **a new deterministic check**: something the
reviewer can assert about a diff without asking a model. The reviewer's whole claim is
that its advice is cross-verified against gates that cannot hallucinate, so every
deterministic check makes the advisory layer more trustworthy.

## Licensing, in plain terms

- **This repository is Apache-2.0.** You may use, copy, modify, distribute, and
commercially deploy it, including forks and derivative reviewers. Nothing is gated on
asking us first.
- **Signetry is open core.** The integration surface — this repo, the
[GitHub Action](https://github.com/Signetry/action), the
[editor/agent plugins](https://github.com/Signetry/plugins), the
[pre-commit guard](https://github.com/Signetry/precommit) — is Apache-2.0. The engine
([`Signetry/core`](https://github.com/Signetry/core)) is source-available under
BUSL-1.1 and converts to Apache-2.0 on **2030-08-31**. See
[LICENSING.md](https://github.com/Signetry/signetry/blob/main/LICENSING.md).
- **This package installs from source, not PyPI.** That is a distribution choice, not a
restriction on what you may do with the code.

### The CLA still applies — and why

Open source and a CLA are not in tension. Because Signetry is open core, code
legitimately moves **across the licence line**: a check that starts life here
(Apache-2.0) may later belong inside the engine (BUSL-1.1), and engine code may move out
to the integration surface. The [CLA](CLA.md) gives the maintainer the relicensing rights
that make those moves possible without tracking down every past contributor for
permission.

What it does **not** do is take anything from you: you keep the full Apache-2.0 grant on
this repository, exactly like every other user, and you keep the right to use your own
work however you like elsewhere. Contributors are credited in
[CONTRIBUTORS.md](CONTRIBUTORS.md), the Git history, and release notes.

## Signing the CLA (required before merge)

Expand All @@ -13,13 +49,47 @@ I have read the CLA Document and I hereby sign the CLA
```

Your acceptance is recorded in `signatures/cla.json`. A PR **cannot be merged** until
the CLA is signed. Signetry is **not open source** (All Rights Reserved) — by signing
you assign copyright/ownership of your contribution to the Owner and gain no right to
use, sell, or commercialize it yourself.
the CLA is signed.

## Development setup

Python **3.11+**.

```bash
pip install -e ".[dev]"
```

A `uv.lock` is committed, so `uv sync --extra dev` installs the exact locked set if you
prefer [uv](https://docs.astral.sh/uv/).

## Lint and test (what CI runs)

```bash
ruff check signetry_reviewer/ tests/
pytest -q
```

## Adding a deterministic check

1. Add the check to [`signetry_reviewer/checks.py`](signetry_reviewer/checks.py).
2. It must be **deterministic and offline** — no model call, no network. A check that
sometimes disagrees with itself cannot cross-verify anything.
3. Return a finding with enough context for a human to act on it without re-reading the
diff.
4. Add a test under `tests/`.

## The one rule this repo will not bend

**The reviewer is advisory. It never merges and it never gates.** A change that makes
the reviewer's own judgement authoritative — auto-approving, auto-merging on its own
verdict, or failing a build on a model's opinion alone — will not be merged. Gating is
[`signetry-action`](https://github.com/Signetry/action)'s job, against deterministic
admission, with a signed receipt. Keep the two separate.

## Credit
## Pull requests

Contributors are **acknowledged** in [CONTRIBUTORS.md](CONTRIBUTORS.md), the Git
history, and release notes. This is attribution only — you may truthfully say you
contributed, but it grants no ownership and no right to use, sell, or rebrand the
project as your own. See the "Recognition of Contributors" clause in [CLA.md](CLA.md).
- Start at the [good-first-issues board](https://github.com/Signetry/signetry/issues/10).
- Keep the diff focused; every new check ships with a test.
- Be decent to each other: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
- Found a security problem instead of a bug? Do not open a public issue — see
[SECURITY.md](SECURITY.md).
14 changes: 8 additions & 6 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
# Contributors

Signetry is **owned by Binay Dalai** and is **All Rights Reserved** (not open source).
This repository is **[Apache-2.0](LICENSE)** and maintained by Binay Dalai as part of
Signetry's [open-core model](https://github.com/Signetry/signetry/blob/main/LICENSING.md).
The people below are gratefully acknowledged for contributions accepted under the
[Contributor License Agreement](CLA.md).

**Credit, not ownership.** Being listed here recognizes a person's contribution. It
does **not** grant any right to use, copy, sell, sublicense, or commercialize the
project, and does **not** entitle anyone to present the project (in whole or in part)
as their own work, product, or brand. All such rights remain exclusively with the
owner.
**Credit, not ownership.** Being listed here recognizes a person's contribution.
Everyone — contributors included — already has the right to use, modify, and
commercialize this code under Apache-2.0. Listing here does **not** additionally grant
ownership of the project, and does **not** entitle anyone to present the project (in
whole or in part) as their own work, product, or brand, or to use the Signetry name to
endorse their own products.

## Owner / maintainer

Expand Down
Loading
Loading