Skip to content

CLAUDE.md: per-issue claude/ branches, multi-PR, and PR label states#37

Merged
espg merged 2 commits into
mainfrom
claude/docs-routine-conventions
Jun 15, 2026
Merged

CLAUDE.md: per-issue claude/ branches, multi-PR, and PR label states#37
espg merged 2 commits into
mainfrom
claude/docs-routine-conventions

Conversation

@espg

@espg espg commented Jun 15, 2026

Copy link
Copy Markdown
Member

Updates the routine conventions in CLAUDE.md to match how we want the nightly routine to actually behave. Pairs with the updated routine prompt (shared separately) and the matching mortie PR. Docs-only — no code.

What changed (all in CLAUDE.md)

§2 — Branching & PR workflow

  • Branches keyed to the issue/PR, not the session: claude/<issue#>-<kebab-topic> (and claude/small-fixes-<YYYY-MM-DD>), so a PR can be continued across runs by pushing to its existing branch. Added an explicit instruction to ignore any single per-session branch the harness assigns. (lambda never-push note retained.)
  • Kept the accurate "CI does not key on branch name" statement and tied it to the pull_request trigger: a claude/* branch is fully tested the moment its draft PR exists (and on each phase commit via synchronize). Replaced the feature/claude-* / fix/claude-* scoping language with the claude/* namespace.
  • "Phase the work" → "Phase the work, and keep going": one commit per phase, fresh-context self-review after each phase, continue until done or blocked (the old "open phase 1 and stop" caused the routine to stall). Multiple open PRs allowed; cross-PR dependencies via blocked + Blocked by #N.

§5 — Working issues by label

  • implement / small-fix: open or continue the PR on a claude/<issue#>-<topic> branch and label the PR implement. An implement issue that already has a PR is represented by that PR.
  • New PR label states bullet: implement + neither waiting/blocked = actionable; waiting = ball is in @espg's court (question, or all phases done awaiting review/merge), cleared when @espg responds; blocked = depends on an unmerged PR.

§6 — Communication style

  • Disambiguated the self-review bot (🤖 *from Claude (review)* under the @espg account is not an @espg directive — leave standing).

Enforcement note

  • Push-scoping corrected from feature/claude-* / fix/claude-* to the claude/* namespace (the platform default for routines); CI coverage attributed to the all-PRs trigger, not the branch prefix.

Why

Two routine bugs traced to the old text: (1) the single-session-branch model + "stop after phase 1" blocked opening multiple PRs and continuing prior-run PRs (e.g. this repo's PR #33 went un-advanced); (2) the feature/claude-* branch/scoping claims didn't match the claude/* branches actually in use.

Companion items (not in this PR)

  • The routine prompt is updated separately to match.
  • The waiting / blocked labels (and implement applied to PRs) need to exist in the repo.

Questions for review

  1. OK to standardize on bare claude/<issue#>-<topic>? (zagg CI already runs on every PR, so no prefix is needed for triggering.)
  2. The "ignore any single per-session branch" clause assumes Allow unrestricted branch pushes stays off (default claude/* scoping) — confirm that's intended.

Generated by Claude Code

@espg espg added blocked flag for claude and removed blocked flag for claude labels Jun 15, 2026
@espg espg marked this pull request as ready for review June 15, 2026 01:19
@espg espg merged commit f92bda9 into main Jun 15, 2026
9 checks passed
@espg espg deleted the claude/docs-routine-conventions branch June 18, 2026 18:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants