# cc-watch snapshot PR fix M134

This playground documents the two cc-watch workflow bugs fixed in this PR. There is no interactive component — these are CI-layer fixes to `.github/workflows/claude-release-watch.yml`.

## W1a — github-actions[bot] PRs don't trigger CI (#1685)

Pull requests opened by the default `GITHUB_TOKEN` are authored by `github-actions[bot]`, and bot pushes do not satisfy required-status-check rules — auto-merge never fires. The fix wires `peter-evans/create-pull-request` to a fine-grained PAT (`SNAPSHOT_PR_TOKEN`) when present, falling back to `GITHUB_TOKEN` until a repo admin creates the secret.

    token: ${{ secrets.SNAPSHOT_PR_TOKEN || secrets.GITHUB_TOKEN }}

Required follow-up: a repo admin must create `SNAPSHOT_PR_TOKEN` as a fine-grained PAT scoped to this repo with `Contents: write` + `Pull requests: write`. Until then, snapshot PRs still need a manual rebase to kick CI.

## W1f — non-unique PR title accumulated stale PRs (#1697)

Every snapshot PR was titled `chore(cc-watch): snapshot upstream CHANGELOG`. When auto-merge stalled (because of W1a), each daily cron created another PR with the same title — making triage impossible. The fix reads `latest_new_version` out of `shared/gh-issue-args.json` (already emitted by `scripts/cc-release-watch.mjs`) and stamps it into both the title and commit message.

    chore(cc-watch): snapshot upstream CHANGELOG (2.1.138)

Multi-version cron runs use only the latest version in the title; the `chore/cc-snapshot-${{ github.run_id }}` branch suffix preserves run-level uniqueness.

## Validation

- `actionlint .github/workflows/claude-release-watch.yml` — passes
- `npm run test:manifests` — passes
- Diff scoped to `.github/workflows/claude-release-watch.yml` only