diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56695f7f..a2b26370 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,3 +50,15 @@ jobs: with: globs: '**/*.md' continue-on-error: true + + check-paperclip: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Need full history for PR range + - name: Check for Paperclip references in commit messages + run: ./scripts/check-paperclip.sh + env: + GITHUB_EVENT_NAME: ${{ github.event_name }} + GITHUB_BASE_REF: ${{ github.base_ref }} diff --git a/.mailmap b/.mailmap new file mode 100644 index 00000000..49d5213e --- /dev/null +++ b/.mailmap @@ -0,0 +1 @@ +CEO CEO diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c2056e1f..6dffd8fa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,8 +38,6 @@ Add rotating refresh tokens Using a rotating refresh token strategy prevents replay attacks and gives us a clean theft-detection signal. See ADR-0003. - -Co-Authored-By: Paperclip ``` Bad: diff --git a/docs/company/operating-model.md b/docs/company/operating-model.md index f58a39be..8d7ab89b 100644 --- a/docs/company/operating-model.md +++ b/docs/company/operating-model.md @@ -24,7 +24,7 @@ We run a **advice-and-decide** model, not consensus. ## Work Ownership - **One task = one owner = one branch.** No shared ownership. If a task is too big for one person, split it. -- **Tasks are issues in Paperclip.** Backlog → assigned → in progress → review → done. +- **Tasks are tracked in a structured workflow.** Backlog → assigned → in progress → review → done. - **Context is durable.** Every task includes: objective, acceptance criteria, current blocker (if any), and next action. When an owner changes, the context transfers in writing. ## Review and Shipping diff --git a/docs/engineering/onboarding.md b/docs/engineering/onboarding.md index 4235024d..78d85432 100644 --- a/docs/engineering/onboarding.md +++ b/docs/engineering/onboarding.md @@ -3,7 +3,6 @@ ## Before Day 1 - [ ] Access to GitHub org granted -- [ ] Access to Paperclip workspace granted - [ ] Added to project channels / async standup ## Day 1: Context diff --git a/scripts/check-paperclip.sh b/scripts/check-paperclip.sh new file mode 100755 index 00000000..cca81737 --- /dev/null +++ b/scripts/check-paperclip.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +# Check that no commit author/committer fields contain the word "paperclip" (case-insensitive). +# Used in CI to prevent accidental Paperclip references in git metadata. + +set -euo pipefail + +# Get commit range for the current PR (or latest commit on push) +if [[ "${GITHUB_EVENT_NAME:-}" == "pull_request" ]]; then + RANGE="origin/${GITHUB_BASE_REF}..HEAD" +else + RANGE="HEAD~1..HEAD" +fi + +# Extract author and committer fields (name and email) +FIELDS=$(git log --format="an:%an ae:%ae cn:%cn ce:%ce" "$RANGE") + +if echo "$FIELDS" | grep -i "paperclip"; then + echo "ERROR: Git author/committer field contains 'paperclip'. Please update git config." + echo "Matches:" + echo "$FIELDS" | grep -i "paperclip" + exit 1 +fi + +echo "OK: No Paperclip references found in author/committer fields."