docs: clarify when to create the stack changeset, and when growing it is required - #97
Merged
Merged
Conversation
…required Two gaps in the "One changeset, at the bottom of the stack" guidance, both found on the #71/#93/#94/#95 merging-down stack: - The section said where the changeset lives but never when to create it. Document the trigger: write it on the base branch before cutting the children, so every child inherits a file it can append to. - "Grow it incrementally" is merge-forward reasoning. Under merging down nothing lands until everything does, so a whole-change note is accurate at the only moment it is read. Scope the rule to forward, and state the constraint that holds in both shapes: the file must be in the bottom PR's own diff. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jwc9FFroR3mTZ4hLiSkkX3
Contributor
There was a problem hiding this comment.
Pull request overview
Refines the stacked-PR documentation in CLAUDE.md to clarify (1) when to create the stack’s single changeset file and (2) when “grow it incrementally” is a requirement vs. an optional review-friendly practice, depending on whether the stack merges forward or down.
Changes:
- Document that the changeset must be created on the base branch before cutting child branches (inheritance only runs forward in time).
- Scope “grow it incrementally” to merge-forward stacks, and explicitly explain why that reasoning doesn’t apply to merge-down stacks.
- Restate the invariant that always matters: the changeset must live on the bottom branch and be present in the bottom PR’s own diff (the only diff the workflow evaluates).
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two refinements to the One changeset, at the bottom of the stack, grown as the stack grows section of
CLAUDE.md. Both were found by walking into them on the real 4-PR merging-down stack (#71/#93/#94/#95).Gap 1 — the section said where the changeset lives, never when to create it. "At the bottom, grown as the stack grows" describes the steady state, not the trigger. Inheritance only runs forward in time, so a child branched before the file existed has nothing to grow — and the natural moment to write a release note (finishing a unit) is exactly when you are standing on the wrong branch. Now documented: write it on the base branch before cutting the children. On that stack it was written on the tip, and removing
skip-changesetfrom the bottom PR turnedRequire a changesetred immediately.Gap 2 — "grow it incrementally" is merge-forward reasoning stated as a universal rule. Its justification is that a reviewer shouldn't approve a release note promising more than the diff in front of them, which only holds when each unit reaches
mainseparately. Under merging down, one protected merge carries the whole stack, so a whole-change note is accurate at the only moment it is read. The rule is now scoped to forward, with the constraint that holds in both shapes stated plainly: the file must be in the bottom PR's own diff, since that is the only diffrequire-changesetevaluates.Notes
openspec/files, no behavior change.skip-changeset— aCLAUDE.mdedit ships no release content.🤖 Generated with Claude Code
https://claude.ai/code/session_01Jwc9FFroR3mTZ4hLiSkkX3