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
55 changes: 55 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Bug report
description: Report a problem with the Cursor MCP server entry or the Signetry project rule.
labels: [bug]
body:
- type: markdown
attributes:
value: |
For **security vulnerabilities** (scope bypass, authority escalation,
receipt forgery, secret exposure) do NOT use this form — see
[SECURITY.md](https://github.com/Signetry/cursor/security/policy).

Governance logic lives in
[signetry-core](https://github.com/Signetry/core). If the wrong admission
decision was made, or a receipt is wrong, file it there — this repo only
wires Cursor up to the engine.
- type: input
id: version
attributes:
label: signetry-core version
placeholder: "0.7.0 (pip show signetry-core)"
validations:
required: true
- type: dropdown
id: surface
attributes:
label: Surface
options:
- MCP server (mcp.json / .cursor/mcp.json)
- Project rule (signetry.mdc / .cursor/rules/)
- README / setup instructions
- Other
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: What happened
description: What did you observe, and what did you expect instead?
validations:
required: true
- type: textarea
id: repro
attributes:
label: Reproduction
description: >-
A minimal repro — your `.signetry/admission.yaml`, the `.cursor/mcp.json` you
used, what you asked the agent to do, and the tool output or error.
render: shell
validations:
required: true
- type: input
id: platform
attributes:
label: Platform
placeholder: "macOS 14 / Windows 11; Cursor 0.4x; Python 3.12"
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Report a security vulnerability (private)
url: https://github.com/Signetry/cursor/security/advisories/new
about: Please report vulnerabilities privately — do not open a public issue.
- name: Governance engine (signetry-core)
url: https://github.com/Signetry/core/issues
about: Admission decisions, guard behavior, verifier, and receipts live in signetry-core.
- name: GitHub Action (Signetry Admission)
url: https://github.com/Signetry/action/issues
about: Issues with the required check on the pull request belong in the signetry-action repo.
- name: Signetry platform docs
url: https://github.com/Signetry/signetry
about: Architecture, licensing, and the compatibility matrix across integrations.
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Feature request
description: Suggest an improvement to the Cursor integration (MCP wiring, project rule, docs).
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
This repo is the Cursor-side surface only. New contract rules, executors, or
receipt behavior belong in
[signetry-core](https://github.com/Signetry/core/issues).
- type: textarea
id: problem
attributes:
label: Problem / use case
description: What are you trying to govern in Cursor that isn't possible today?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: What should change in `mcp.json`, `signetry.mdc`, or the setup docs?
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
- type: checkboxes
id: invariants
attributes:
label: Invariants
options:
- label: This preserves the invariants — the integration never reimplements policy (it pins `signetry-core`), `auto_merge` stays false, and the in-editor guard stays defense-in-depth rather than the hard boundary.
required: true
12 changes: 7 additions & 5 deletions .github/workflows/cla.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ name: CLA
# Requires every contributor to sign the Contributor License Agreement (CLA.md)
# before their pull request can be merged. Runs entirely in this repo's Actions —
# no third-party OAuth app. Signatures are recorded in signatures/cla.json on this
# repo, so there is a durable, auditable record that each contributor assigned
# copyright/ownership of their contribution to the Owner.
# repo, so there is a durable, auditable record that each contributor granted the
# licence in CLA.md. Contributors keep their copyright; the grant is what lets code
# move across Signetry's open-core line (this repo is Apache-2.0, the engine is
# BUSL-1.1 until it converts to Apache-2.0 on 2030-08-31).
#
# A contributor signs by commenting the exact statement below on their PR:
# I have read the CLA Document and I hereby sign the CLA
Expand All @@ -24,7 +26,7 @@ permissions:
jobs:
cla:
runs-on: ubuntu-latest
# Skip the CLA gate for the Owner and bots (they are allowlisted). Skipping the
# Skip the CLA gate for the maintainer and bots (they are allowlisted). Skipping the
# job makes the required check "cla" resolve as passed for these actors, so
# their PRs never see a spurious CLA failure. Real contributors still run it.
if: >-
Expand All @@ -36,7 +38,7 @@ jobs:
github.event.issue.user.login == 'dependabot[bot]'
)
}}
# Skip Dependabot / the Owner's own automated PRs if desired; contributors still gate.
# Skip Dependabot / the maintainer's own automated PRs if desired; contributors still gate.
steps:
- name: CLA Assistant
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
Expand All @@ -48,7 +50,7 @@ jobs:
path-to-document: "https://github.com/Signetry/cursor/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/cursor/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/cursor/blob/main/CLA.md)** — this repo is **Apache-2.0** and you **keep the copyright** in your work; signing grants a licence that lets code move across Signetry's [open-core line](https://github.com/Signetry/signetry/blob/main/LICENSING.md) into the BUSL-1.1 engine. 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
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,24 @@ Follows [Keep a Changelog](https://keepachangelog.com/) / [SemVer](https://semve

### Changed

- **Licence: now [Apache-2.0](LICENSE)** (previously all rights reserved). Signetry
moved to an open-core model: the integration surface — this repo included — is
Apache-2.0, while the engine ([`Signetry/core`](https://github.com/Signetry/core))
is 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). The
[CLA](CLA.md) still applies and was rewritten as a licence grant — contributors now
keep their copyright.
- Naming: CLI `signetry`, import package `signetry_core`, env vars `SIGNETRY_*`, config
`.signetry/`, and the Cursor rule file `signetry.mdc`.
- Install pin updated to
`signetry-core @ git+https://github.com/Signetry/core@v0.6.0`; the advisory
reviewer now installs `signetry-reviewer @ git+https://github.com/Signetry/reviewer@v0.1.2`.
- **The CLA's fallback licence grant is now non-exclusive.** It previously granted the
Owner an *exclusive* licence where copyright assignment is not permitted by law, which
would have stripped contributors of the right to use their own contribution — directly
contradicting the rights the LICENSE grants everyone. The CLA text is now identical
across all Signetry repositories (bar the engine/integration licence wording) so the
legal terms cannot drift per-repo again. See [CLA.md](CLA.md) §2–3.

## [0.3.0] — 2026-07-26

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
82 changes: 73 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,57 @@
# Contribution Agreement
# Contributing

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.
Thanks for wanting to improve the Cursor integration. This repository is
**[Apache-2.0](LICENSE)** — you may use, modify, fork, redistribute, and ship it
commercially, with no permission needed from anyone.

## What lives here

This repo is small on purpose. It is the Cursor-side surface over
[signetry-core](https://github.com/Signetry/core), which owns *all* governance logic:

| File | What it is |
|---|---|
| `mcp.json` | The MCP server entry a user copies to `.cursor/mcp.json`, exposing `signetry_admit` / `signetry_verify` / `signetry_provenance` to the agent. |
| `signetry.mdc` | The Cursor project rule a user drops into `.cursor/rules/` — advisory guidance to stay inside the admission contract. |
| `README.md` | Setup for both paths. |

Two rules for changes here: this integration **never reimplements policy** (that
belongs in `signetry-core`), and it **never auto-merges** — `auto_merge` is always
false; a human approves the PR. A change that breaks either of those will not be
merged. If the behavior you want lives in the engine, open the issue or PR on
[Signetry/core](https://github.com/Signetry/core) instead.

## Getting started

There is no build step and no test suite in this repository — it is configuration
and documentation. To exercise a change end to end, install the engine and point
Cursor at your working copy:

```bash
pip install "signetry-core @ git+https://github.com/Signetry/core@v0.7.0"
```

Then, in a scratch project with a `.signetry/admission.yaml`:

- copy your edited `mcp.json` to `.cursor/mcp.json` and confirm the agent can call
`signetry_admit`, `signetry_verify`, and `signetry_provenance`;
- copy your edited `signetry.mdc` to `.cursor/rules/` and confirm Cursor loads it
(the YAML frontmatter must stay valid, with `alwaysApply` intact);
- if you touched the guard advice, check the commands it tells the agent to run
still exist: `signetry guard --path <file>`, `signetry guard --command "<cmd>"`,
and `signetry admit . --agent none --mission "<what you changed>"`.

Say in the pull request which of these you actually ran.

## What CI does on your PR

- **CLA** (`.github/workflows/cla.yml`) — blocks the merge until you have signed
(see below).
- **Reviewer** (`.github/workflows/reviewer.yml`) — an advisory
[signetry-reviewer](https://github.com/Signetry/reviewer) pass that posts one
recommendation comment. It is advisory only: it never merges and never fails your
PR. It does flag changes to security-sensitive surfaces (workflows, packaging) for
a human to look at.

## Signing the CLA (required before merge)

Expand All @@ -13,13 +64,26 @@ 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.

**Why a CLA on an Apache-2.0 repo?** Because Signetry is
[open core](https://github.com/Signetry/signetry/blob/main/LICENSING.md), and code
sometimes has to move across that line: an adapter that proves itself here may belong
in the engine ([`Signetry/core`](https://github.com/Signetry/core)), which is
BUSL-1.1 until it converts to Apache-2.0 on 2030-08-31. The CLA lets that happen
without tracking down every past contributor for permission. It does **not** take
your copyright — you keep it, and grant a licence alongside it. Your contribution
also stays available to you and to everyone else under Apache-2.0, because that is
the licence this repository ships under.

## Credit

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).
Contributors are acknowledged in [CONTRIBUTORS.md](CONTRIBUTORS.md), the Git history,
and release notes. Add yourself in the same PR if you like, or leave it to a
maintainer.

## Reporting a vulnerability

Do not open a public issue. See [SECURITY.md](SECURITY.md) — vulnerabilities in the
governance pipeline itself belong on
[signetry-core](https://github.com/Signetry/core).
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