From 67394b0480d6b420ae85d74f2b922fb3eae7064b Mon Sep 17 00:00:00 2001 From: MikeGatsby Date: Thu, 13 Aug 2026 13:31:28 -0500 Subject: [PATCH 1/2] docs: add CONTRIBUTING.md, CODE_OF_CONDUCT.md, PR template Closes #54 --- .github/PULL_REQUEST_TEMPLATE.md | 12 +++++ CODE_OF_CONDUCT.md | 69 ++++++++++++++++++++++++++++ CONTRIBUTING.md | 78 ++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..29a4d44 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ +## What this PR does + + + +Closes # + +## Checklist + +- [ ] Tests / ruff pass locally (`pytest`, `ruff check src tests scripts`) +- [ ] No personal writing or paths (real LinkedIn exports, notes, emails, `/Users/you/...`) +- [ ] Contoso-safe docs/screenshots only — no real corpus samples +- [ ] Linked issue diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c5a8546 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,69 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic +status, nationality, personal appearance, race, caste, color, religion, or +sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances + of any kind +* Trolling, insulting or derogatory comments, and personal or political + attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards +of acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, +offensive, or harmful. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies +when an individual is officially representing the community in public spaces. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement by opening an +issue or contacting the maintainers directly. All complaints will be reviewed +and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of +the reporter of any incident. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..11f9635 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,78 @@ +# Contributing to PersonalityProtect + +Thanks for looking at this repo. This guide gets you from a fresh clone to a +green test run, and lays out the privacy rule that matters more than anything +else here. + +## Setup + +```bash +git clone https://github.com/TelivityAI/personality-protect.git +cd personality-protect +python3 -m venv .venv +source .venv/bin/activate +pip install -e ".[dev]" +``` + +## Running checks locally + +```bash +pytest +ruff check src tests scripts +``` + +Both must pass before you open a PR. These are the same checks CI runs. + +## What CI requires + +Every PR needs these checks green: + +- `lint` +- `test (3.11)` +- `test (3.12)` +- `sanitize` +- `cli-smoke` + +`sanitize` (`scripts/sanitize_check.sh`) fails the build if private paths or +discussion-only language leak into tracked files — see the privacy rule below +for what that covers. + +## Privacy — read this before you commit anything + +**Never commit:** + +- Your real LinkedIn export, emails, or personal notes +- Adapters, SFT JSONL, or eval drafts built from your own writing +- Profile URLs or personal file paths (e.g. `/Users/you/Dropbox/...`) +- Real before/after writing samples, in code, docs, or screenshots + +**Public docs and PRs use synthetic Contoso / synergy-slop text only.** If you +need an example, invent one the way the README does (`Contoso Ledger`, +`Contoso pricing`, etc.) — never paste anything from your own corpus. + +`.gitignore` already blocks profiles, adapters, SFT files, exports, weights, +and secrets, and `scripts/sanitize_check.sh` runs in CI as a second check on +tracked files. If `sanitize` fails your PR, it means one of those patterns +matched — fix the content, don't work around the check. + +## Trying the CLI without your own data + +You don't need a real corpus or a model download to explore the project: + +```bash +personality-protect demo +``` + +This runs a stubbed smoke tour of the `write` path with synthetic Contoso +content only — no download, no personal data required. + +## Opening a PR + +- Keep changes scoped to what the linked issue describes. +- Link the issue you're addressing. +- Make sure `pytest` and `ruff check src tests scripts` pass locally first. +- Fill out the PR template checklist. + +## Code of Conduct + +This project follows the [Contributor Covenant](CODE_OF_CONDUCT.md). From c22f532d04ebdb2d2fd1e52aa229ad2c86066317 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 14 Aug 2026 16:19:24 +0000 Subject: [PATCH 2/2] docs: complete CoC 2.1 and align CONTRIBUTING local checks Follow-up on MikeGatsby's #54 onboarding files: add sanitize to the local checklist, note first-time-contributor workflow approval, and finish Contributor Covenant enforcement guidelines. Co-authored-by: telivity-otaip --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- CODE_OF_CONDUCT.md | 69 +++++++++++++++++++++++++++++++- CONTRIBUTING.md | 20 ++++++++- 3 files changed, 86 insertions(+), 5 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 29a4d44..bb9fd29 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,7 +6,7 @@ Closes # ## Checklist -- [ ] Tests / ruff pass locally (`pytest`, `ruff check src tests scripts`) +- [ ] Tests / ruff / sanitize pass locally (`pytest`, `ruff check src tests scripts`, `bash scripts/sanitize_check.sh`) - [ ] No personal writing or paths (real LinkedIn exports, notes, emails, `/Users/you/...`) - [ ] Contoso-safe docs/screenshots only — no real corpus samples - [ ] Linked issue diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c5a8546..a4d2502 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -44,26 +44,91 @@ of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for +moderation decisions when appropriate. + ## Scope This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail +address, posting via an official social media account, or acting as an +appointed representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement by opening an -issue or contacting the maintainers directly. All complaints will be reviewed -and investigated promptly and fairly. +issue or contacting the maintainers directly via the TelivityAI organization +on GitHub. All complaints will be reviewed and investigated promptly and +fairly. All community leaders are obligated to respect the privacy and security of the reporter of any incident. +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external +channels like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited +interaction with those enforcing the Code of Conduct, is allowed during this +period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + [homepage]: https://www.contributor-covenant.org [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 11f9635..dd34160 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,9 +19,10 @@ pip install -e ".[dev]" ```bash pytest ruff check src tests scripts +bash scripts/sanitize_check.sh ``` -Both must pass before you open a PR. These are the same checks CI runs. +These must pass before you open a PR. They match the required CI jobs below. ## What CI requires @@ -37,6 +38,10 @@ Every PR needs these checks green: discussion-only language leak into tracked files — see the privacy rule below for what that covers. +**First-time contributors:** GitHub holds Actions from new fork authors until a +maintainer clicks **Approve and run workflows** on the PR. That is expected, not +a missing workflow file. + ## Privacy — read this before you commit anything **Never commit:** @@ -66,11 +71,22 @@ personality-protect demo This runs a stubbed smoke tour of the `write` path with synthetic Contoso content only — no download, no personal data required. +## Versioning + +We use Semantic Versioning (`MAJOR.MINOR.PATCH`) in `pyproject.toml`. + +- Patch: bugfixes, docs, CI +- Minor: backward-compatible features +- Major: breaking CLI or package changes + +Tag releases as `vX.Y.Z` when cutting a PyPI publish (see #62). + ## Opening a PR - Keep changes scoped to what the linked issue describes. - Link the issue you're addressing. -- Make sure `pytest` and `ruff check src tests scripts` pass locally first. +- Make sure `pytest`, `ruff check src tests scripts`, and + `bash scripts/sanitize_check.sh` pass locally first. - Fill out the PR template checklist. ## Code of Conduct