NO-ISSUE: docs(skills): guard release notes against a truncated git log - #176
Conversation
`git log` without an explicit `-n` is capped at 50 commits in some environments and truncates silently, so commits disappear from the release notes with no warning. Cutting v0.5.0 hit this: the real range held 59 commits, and PRs #98 through #107 were nearly dropped. Cross-check the list against `git rev-list --count`, pass an explicit `-n`, and read each PR number from its own commit rather than from a subject line that may have been clipped mid-render.
There was a problem hiding this comment.
Pull request overview
This PR updates the release skill documentation to make release-note generation resilient to environments where git log output is silently capped (e.g., at 50 commits), which can otherwise cause missing commits/PRs in release notes.
Changes:
- Added a
git rev-list --no-merges --countcross-check before listing commits. - Added explicit
-n 200limits togit loginvocations to avoid the silent 50-commit cap. - Added a per-commit loop to extract PR numbers from each commit subject rather than relying on a possibly clipped one-line listing.
Suppressed comments (1)
.agents/skills/release/SKILL.md:137
- Step 3a says to verify the list length matches the commit count, but the commands still hard-code
-n 200. If there are >200 commits between releases, this can truncate and break the cross-check (and the per-commit PR extraction loop). Consider deriving-nfrom thegit rev-list --countvalue and reusing it for all subsequent logs in this step.
# Commits between releases. Verify the list length matches this count -- see step 1.
git rev-list --no-merges --count <prevVersion>..<releaseVersion>
git log <prevVersion>..<releaseVersion> --oneline --no-merges -n 200
# Long subjects can get clipped in tool output, hiding the trailing PR number.
# Pull the PR number per commit instead of trusting a wrapped subject line.
for c in $(git log <prevVersion>..<releaseVersion> --no-merges -n 200 --format='%h'); do
echo "$c $(git log -1 "$c" --format='%s' | grep -oE '#[0-9]+' | head -1)"
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…istings The previous commit blamed `git log` for capping output at 50 commits and prescribed an explicit `-n`. Retesting disproves both halves. Redirected to a file, `--oneline --no-merges`, the same command with `-n 500`, and `git rev-list` all return the identical 60 commits, so `git log` is not capped. The 50-line cut comes from the layer rendering the output, which also clips long subject lines, and it reproduces or not depending on the surrounding command rather than on any git flag. That makes `-n` the wrong cure: it does not change what git emits, and a hard-coded `-n 200` merely moves the silent truncation to 200 commits. Cross-check the listing against `git rev-list --count`, and when the two disagree, redirect to a file and read the file -- the one form that reliably survives. The PR-number loop now reads its SHAs from a file too, so the commit list feeding it cannot be truncated either.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
Suppressed comments (2)
.agents/skills/release/SKILL.md:95
- The PR description says the skill now adds an explicit
-n 200to bothgit logcalls, but this guide now explicitly recommends not using-n(and the commands shown do not include it). Please align the PR description with the actual guidance so reviewers/users don’t get conflicting instructions about how to avoid truncation.
# List commits since last stable tag, then check the list is as long as the count
# above. `git log` itself is not capped, but the terminal or agent tool rendering
# its output may truncate it, which silently drops commits from the release notes.
git log <latest-stable-tag>..HEAD --oneline --no-merges
If the listing is shorter than the count, do not work around it with -n -- the
limit is in the rendering, not in git log. Redirect to a file and read the file,
which is the only form that reliably survives:
**.agents/skills/release/SKILL.md:143**
* Step 3a says to “fall back to the file form from step 1” if the rendered `git log` output is truncated, but step 1’s file snippet is for `<latest-stable-tag>..HEAD` and doesn’t show the equivalent file-based commands for `<prevVersion>..<releaseVersion>`. Adding the explicit file-based commands here would make the instructions unambiguous and copy/paste safe.
Commits between releases. Cross-check the list length against this count, and
fall back to the file form from step 1 if the two disagree.
git rev-list --no-merges --count ..
git log .. --oneline --no-merges
</details>
Summary
Cutting
v0.5.0nearly dropped PRs #98–#107 from the release notes: agit log --oneline --no-mergeslisting rendered only 50 of the range's 59 commits, with no warning. This hardens the release skill against that.The first commit blamed
git logfor a 50-commit cap and prescribed an explicit-n. Both halves were wrong, and the second commit corrects them:git log --oneline --no-merges, the same command with-n 500, andgit rev-listall return an identical 60 commits.git logis not capped.-nwas never the cure: it does not change what git emits, and a hard-coded-n 200only relocates the silent truncation to 200 commits.What the skill now says instead:
git rev-list --no-merges --countas the oracle and cross-check the listing length against it.Test Plan
git logis not capped: to a file,--oneline --no-merges,-n 500, andgit rev-listall yield 60 commits forv0.4.0..HEAD, and the two listings are byte-identical (diffclean).v0.4.0..52f1fbf: oracle count 59, file listing 59, 59 PR rows, unique PRs spanning MAF-19394: feat(preset): add vLLM v0.15.1 E2E presets for H100/H200 GPUs #98–MAF-20668: docs(skills): correct the KV cache events guidance in guide-odin #174.-nlimit remains in the skill (grep -n '\-n 200'→ no matches).AGENTS.md:docs(skills)matches the documented type and scope, and all added comments are in English.🤖 Generated with Claude Code