chore(board): harden board automation reliability\n\nCloses #215\n\nC… - #217
Conversation
…o-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🏗️ PR Added to Squad Triage QueueThis PR has been labeled with Next steps:
|
There was a problem hiding this comment.
Pull request overview
This PR hardens the GitHub Project (board) automation by expanding PR lifecycle handling, tightening which issues get auto-added to the delivery board, and adding an audit workflow to detect drift.
Changes:
- Expand board automation to react to more PR state transitions (draft ↔ ready, reopen, close-without-merge) and to promote
Done→Releasedondev→mainrelease merges. - Add a scheduled/manual “Project Board Audit” workflow to flag status drift and PR cards on an issue-centric board.
- Update sprint planning docs to reflect new automation behavior; prevent duplicate Ralph milestone review issues; remove the workflow that added PR cards to the project.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
.squad/playbooks/sprint-planning.md |
Updates sprint ceremony guidance to match the new automation (auto-add issues, PR-driven transitions, release promotion). |
.github/workflows/project-board-automation.yml |
Broadens PR event coverage and centralizes logic for moving linked issues and promoting Done → Released on release PR merge. |
.github/workflows/project-board-audit.yml |
Adds a scheduled/manual audit to detect board drift and PR cards on the delivery board. |
.github/workflows/milestone-blog.yml |
Avoids creating duplicate Ralph “milestone review” issues by checking for an existing one first. |
.github/workflows/add-prs-to-project.yml |
Removes PR-card auto-add workflow (aligns with issue-centric delivery board). |
.github/workflows/add-issues-to-project.yml |
Narrows auto-add to sprint-stamped delivery issues (title prefix + milestone present). |
| if: contains(github.event.issue.labels.*.name, 'squad') | ||
| # Only add sprint-stamped delivery issues. | ||
| if: > | ||
| contains(github.event.issue.labels.*.name, 'squad') && |
There was a problem hiding this comment.
The workflow only checks for an exact squad label (contains(..., 'squad')). Issues that are created/reopened with a member label like squad:sam (the repo’s common convention) won’t be added to the project even if they’re sprint-stamped. Consider updating the condition to treat squad OR any label that starts with squad: as eligible.
| contains(github.event.issue.labels.*.name, 'squad') && | |
| ( | |
| contains(github.event.issue.labels.*.name, 'squad') || | |
| contains(join(github.event.issue.labels.*.name, ','), 'squad:') | |
| ) && |
| } | ||
| } | ||
| } | ||
| `, { nodeId: issueNodeId }); | ||
| `, { nodeId: issue.node_id }); | ||
|
|
||
| const projectItem = projectQuery.node?.projectItems?.nodes?.find( | ||
| return projectQuery.node?.projectItems?.nodes?.find( |
There was a problem hiding this comment.
This query only requests projectItems(first: 20), which can miss the MyBlog project item if an issue is associated with many projects. That would incorrectly treat the issue as “not on the board” and skip the status update. Consider increasing the page size and/or adding pagination for projectItems to make the automation more reliable.
…o-authored-by: Copilot 223556219+Copilot@users.noreply.github.com
Summary
Closes #
Type of Change
Domain Affected
Self-Review Checklist
Code Quality
dotnet build MyBlog.slnx --configuration Release— 0 errors, 0 warningsdotnet test MyBlog.slnx --configuration Release --no-build— all passArchitecture
Command/Query/Handler/Validatornaming conventionssealedWeborPersistence.*projectsResult<T>/ResultErrorCodeused for expected failures (no exception-driven control flow)Domain.DTOs; Models are inDomain.ModelsTests
[Collection("XxxIntegration")])IssueDto.Empty/CommentDto.Emptyinstances directlySecurity (check if security-relevant)
RequireAuthorization/ policy appliedMarkupStringused with user-supplied contentMerge Readiness
main(no merge conflicts)Screenshots / Evidence
Notes for Reviewers