What I do
- •Identify the diff range and spec files that changed in
src/. - •Extract paragraph IDs added or removed in a diff and locate the
:dp:IDs that own modified text. - •Check whether syntax categories, sections, or glossary entries changed and should be recorded.
- •Provide a checklist to ensure
src/changelog.rsthas the right release entry and references (:p:,:s:,:t:,:ref:).
When to use me
- •After editing spec text for a Rust release note item.
- •When reviewing a PR that adds or fixes changelog entries.
Diff source variants
- •Feature PR branch checked out:
git diff main...HEAD -- src - •Changelog-only follow-up PR: diff the spec-change range
git diff <spec-base>..<spec-head> -- srcor inspect withgh pr diff <spec-pr> --repo rust-lang/fls - •Local WIP:
git diff -- src(unstaged) andgit diff --cached -- src(staged)
Workflow
- •Pick a base for the diff (default
main...HEAD, ororigin/main...HEADif you have the remote). - •List changed spec files:
git diff --name-only main...HEAD -- src - •Collect new and removed paragraph IDs:
git diff --unified=0 main...HEAD -- src | rg '^[+]\s*:dp:'git diff --unified=0 main...HEAD -- src | rg '^[-]\s*:dp:' - •Identify changed paragraphs with existing IDs:
- •For each diff hunk, find the nearest
:dp:above the change in the file and record that ID. - •Use
git diff --unified=3 main...HEAD -- src/path.rstand search in the file withrg -n ':dp:' src/path.rst. - •Ignore wrap-only changes (same wording, same indentation, same roles).
- •Treat list-structure or indentation changes as meaningful, even if the wording is unchanged.
- •Treat role changes (e.g.,
:dt:->:t:) as meaningful even when wording is the same.
- •For each diff hunk, find the nearest
- •Check for other changelog-worthy items:
- •
.. syntax::blocks or grammar category names -> "New/Changed syntax" using:s:. - •New section anchors (
.. _fls_...:) -> "New section" using:ref:. - •New glossary entries in
src/glossary.rst-> "New glossary entry" using:t:.
- •
- •Cross-check
src/changelog.rst:- •Entry is under the correct "Language changes in Rust X.Y.Z".
- •Upstream PR link is present.
- •Lists of changed/new/removed paragraphs match the IDs you collected (
:p:). - •Removed IDs should not appear in changed/new lists.
- •"No change: ..." reason is present when appropriate.
Notes
- •Prefer diffing the spec-change PR (not the changelog-only PR) to build the ID list.
- •When comparing paragraphs, treat blank lines as paragraph boundaries to avoid false positives from surrounding structure changes.
Review comments
- •Draft inline review comments in
$OPENCODE_CONFIG_DIR/reviews/<pr-number>/commentN.md. - •Add YAML front-matter with
pr,file,line_hint(right-side/new line in the PR diff), andline_hint_side: new. - •Optionally include
sectionandcontextto make the target location obvious. - •Use one file per inline location; include
suggestionblocks when proposing exact edits.
References
- •
src/changelog.rst - •
src/glossary.rst - •
exts/ferrocene_spec/README.rst