Files
ocp/.github/PULL_REQUEST_TEMPLATE.md
T
cff06439fa chore(privacy): remediation follow-up from ocp#44 (#45)
Three-part follow-up from the 2026-04-22 privacy postmortem:

1. OAUTH_CLIENT_ID verified as public Claude Code constant (not a secret).
   Added gitleaks allowlist entry. The value 9d1c250a-e61b-44d9-88ed-5944d1962f5e
   is the public PKCE client ID used by the Claude Code CLI — public clients in
   PKCE flows have no client secret, so the ID itself carries no secret value.
   Introduced in commit b87992f (the 2026-04-11 drift incident); the constant
   mirrors what cli.js embeds for its OAuth token-refresh flow.

2. README.md API key example made clearly fake (ocp_example12345abcde...) to
   avoid gitleaks false-positives and clarify to readers it is not real.
   The ocp_ prefix IS the real prefix (keys.mjs line 80: randomBytes(24).base64url),
   so the prior example could be mistaken for a real truncated key.

3. PR template: added Privacy self-check section for PUBLIC repos below the
   existing 5.3 user-visible change self-check section.

4. .gitleaks.toml: new file with allowlist for the three confirmed non-issues
   (OAUTH_CLIENT_ID constant, README placeholder regex, old plan doc path).

No code or behavior change beyond the docs, README, and new config file.

Closes part of ocp#44.

Co-authored-by: Tao Deng <dtzp555@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 11:40:50 +10:00

3.3 KiB

Pull Request

Summary

Claude Code Alignment Evidence (REQUIRED)

Per ALIGNMENT.md, every PR that touches server.mjs or any network-facing surface must fill out this section. PRs with this section blank or unchecked will receive a request changes review and cannot be merged.

  • Corresponding cli.js reference. I have identified the cli.js function and line range that performs the operation this PR forwards. Citation (format cli.js:NNNN or cli.js vE4 <functionName>):

  • If cli.js does not perform this operation, I have stated this explicitly below and justified the scope under ALIGNMENT.md Rule 2. (Note: in almost all cases this means the PR should be closed, not merged. Proxy layers do not invent endpoints.)

  • Commit message citations. Every "Claude Code uses X" or "cli.js uses X" assertion in every commit of this PR is immediately followed by a cli.js:NNNN or cli.js vE4 <functionName> citation. I have verified this by rereading each commit message.

Type of change

  • Bug fix (alignment with existing cli.js behavior)
  • Feature (new cli.js behavior now surfaced through OCP)
  • Refactor (no wire-level behavior change)
  • Deletion (unalignable feature removal per ALIGNMENT.md Unalignable Policy)
  • Documentation / governance

Reviewer checklist

Reviewers: this section is for you, not the author. Do not approve until every box is checked.

  • I opened cli.js at the cited line range and confirmed the operation matches.
  • I ran (or confirmed CI ran) .github/workflows/alignment.yml and it passed.
  • I am not the commit author of any commit in this PR (Iron Rule 10).
  • If the PR asserts scope without a cli.js citation, I confirmed the justification is sound per ALIGNMENT.md Rule 2.
  • ALIGNMENT.md Rule(s) invoked:
  • Related issue / prior PR:
  • Historical lesson reference (if relevant):

User-visible change self-check (铁律第五律 5.3)

  • This PR has user-visible changes → README has corresponding documentation (paste diff link or line range)
  • This PR has no user-visible changes → stated "no user-visible change" in summary above

Reviewers: if "user-visible" is checked but README diff is empty, block merge (per 5.3 reviewer gate).

Privacy self-check (for PUBLIC repos) — Iron Rule adjacent

  • This PR does not introduce real names, nicknames, or handles that identify specific individuals. All references use role-based terms (project maintainer, contributor, user, reviewer).
  • This PR does not introduce literal personal paths (/Users/<username>/, /home/<username>/). Uses $HOME/ or ~/ instead.
  • This PR does not introduce personal machine hostnames. Uses role-based names or generic descriptors.
  • This PR does not introduce personal email addresses beyond automated placeholders like noreply@<vendor>.com.

Reviewers: if any of the above is violated and the repo is PUBLIC, block merge and request scrub.