Problem
Upstream PR maintenance comments go stale. Ralph posts "Waiting for CI" but when CI passes minutes later, the comment stays forever — misleading maintainers into thinking the PR isn't ready.
Example: bradygaster#726 (comment)
Solution: Living Status Comment
Use a single "living" comment per upstream PR that gets updated in-place on every Ralph loop, instead of appending new comments that go stale.
Pattern
- Search PR comments for
<!-- ralph-upstream-status -->
- If found →
gh api PATCH to update body with current state
- If not found →
gh pr comment to create with marker
- Body always reflects CURRENT state:
<!-- ralph-upstream-status -->
## Upstream Maintenance Status
**Last checked:** {ISO 8601 timestamp}
- [x] Mergeable: MERGEABLE
- [x] Single commit
- [x] File audit: clean
- [x] CI: All checks green
- [x] Team approval: Reviewed on fork
- [x] Maintainer feedback: none
**Status:** Ready for maintainer review
Rules
- ONE status comment per PR — never post a second
- Update timestamp and checklist on every Ralph loop
- Keep historical action comments (team reviews, changeset additions) as separate comments — do NOT merge those into the status comment
<!-- ralph-upstream-status --> marker MUST be on line 1
Where to implement
Update dina-upstream-pr-maintenance skill on diberry/squad branch:
.copilot/skills/dina-upstream-pr-maintenance/SKILL.md
gh API commands
Find existing comment:
gh api repos/{owner}/{repo}/issues/{pr_number}/comments --jq '.[] | select(.body | contains("<!-- ralph-upstream-status -->")) | .id'
Update comment:
gh api repos/{owner}/{repo}/issues/comments/{comment_id} -X PATCH -f body="..."
Create comment:
gh pr comment {pr_number} --repo {owner}/{repo} --body "..."
Problem
Upstream PR maintenance comments go stale. Ralph posts "Waiting for CI" but when CI passes minutes later, the comment stays forever — misleading maintainers into thinking the PR isn't ready.
Example: bradygaster#726 (comment)
Solution: Living Status Comment
Use a single "living" comment per upstream PR that gets updated in-place on every Ralph loop, instead of appending new comments that go stale.
Pattern
<!-- ralph-upstream-status -->gh api PATCHto update body with current stategh pr commentto create with markerRules
<!-- ralph-upstream-status -->marker MUST be on line 1Where to implement
Update
dina-upstream-pr-maintenanceskill ondiberry/squadbranch:gh API commands
Find existing comment:
gh api repos/{owner}/{repo}/issues/{pr_number}/comments --jq '.[] | select(.body | contains("<!-- ralph-upstream-status -->")) | .id'Update comment:
gh api repos/{owner}/{repo}/issues/comments/{comment_id} -X PATCH -f body="..."Create comment:
gh pr comment {pr_number} --repo {owner}/{repo} --body "..."