Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 27 additions & 27 deletions .github/workflows/milestone-blog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,45 +62,45 @@ jobs:
run: |
BODY="## Milestone Review: ${MILESTONE_TITLE}

Ralph, **${MILESTONE_TITLE}** has been closed with **${ISSUE_COUNT} issues** completed.
Current latest release: \`${LAST_TAG}\`
Ralph, **${MILESTONE_TITLE}** has been closed with **${ISSUE_COUNT} issues** completed.
Current latest release: \`${LAST_TAG}\`

### Closed Issues (${ISSUE_COUNT} total)
${ISSUES_LIST}
### Closed Issues (${ISSUE_COUNT} total)
${ISSUES_LIST}

---
---

## 🔍 Release Candidate Checklist
## 🔍 Release Candidate Checklist

Review these criteria to decide between a full release or a blog-only post:
Review these criteria to decide between a full release or a blog-only post:

| Criteria | Check |
|----------|-------|
| Contains user-facing features or enhancements? | (${FEATURE_COUNT} enhancement-labeled issues) |
| Contains breaking changes or schema migrations? | Review issues above |
| Significant enough to warrant a version bump? | Your call |
| All CI gates green on \`main\`? | Check GitHub Actions |
| Blog post needed either way? | **Yes — always** |
| Criteria | Check |
|----------|-------|
| Contains user-facing features or enhancements? | (${FEATURE_COUNT} enhancement-labeled issues) |
| Contains breaking changes or schema migrations? | Review issues above |
| Significant enough to warrant a version bump? | Your call |
| All CI gates green on \`main\`? | Check GitHub Actions |
| Blog post needed either way? | **Yes — always** |

---
---

## ✅ Your Decision
## ✅ Your Decision

**Option A — Release Candidate** (tag + GitHub Release + release blog post):
> Add the label **\`release-candidate\`** to this issue.
> Then choose the version bump type in the comment below (major / minor / patch).
**Option A — Release Candidate** (tag + GitHub Release + release blog post):
> Add the label **\`release-candidate\`** to this issue.
> Then choose the version bump type in the comment below (major / minor / patch).

**Option B — Blog Only** (milestone summary blog post, no release):
> Add the label **\`blog-only\`** to this issue.
**Option B — Blog Only** (milestone summary blog post, no release):
> Add the label **\`blog-only\`** to this issue.

Either choice will automatically:
- Trigger Bilbo to write the blog post
- Update \`docs/blog/index.md\` (the blog page)
- Sync \`README.md\` via the blog-readme-sync workflow
Either choice will automatically:
- Trigger Bilbo to write the blog post
- Update \`docs/blog/index.md\` (the blog page)
- Sync \`README.md\` via the blog-readme-sync workflow

---
---

*Triggered by milestone close at ${PUBLISH_DATE}. Workflow: \`milestone-blog.yml\`*"
*Triggered by milestone close at ${PUBLISH_DATE}. Workflow: \`milestone-blog.yml\`*"
Comment on lines 63 to +103

Copilot AI Apr 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The BODY string here has leading indentation on almost every line. That whitespace will be preserved in the created issue and will cause Markdown to render large sections as code blocks (headings/tables/lists won’t format as intended). Remove the leading spaces from the BODY content (or use a heredoc with no indent) so the milestone review issue is readable and the checklist table renders properly.

Copilot uses AI. Check for mistakes.

gh issue create \
--title "📋 Milestone Review: ${MILESTONE_TITLE} — release or blog?" \
Expand Down
50 changes: 25 additions & 25 deletions .github/workflows/milestone-release-decision.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,12 @@ jobs:
run: |
gh issue comment "$ISSUE_NUMBER" --body "✅ **Release flow triggered.**

- Version bump: \`${BUMP}\`
- \`squad-milestone-release.yml\` dispatched — this will create the tag, push it, and publish a GitHub Release.
- \`release-blog.yml\` will fire automatically on release publish and create a \`squad:bilbo\` blog brief.
- Once Bilbo's PR merges, \`blog-readme-sync.yml\` will update \`README.md\` (the Page).
- Version bump: \`${BUMP}\`
- \`squad-milestone-release.yml\` dispatched — this will create the tag, push it, and publish a GitHub Release.
- \`release-blog.yml\` will fire automatically on release publish and create a \`squad:bilbo\` blog brief.
- Once Bilbo's PR merges, \`blog-readme-sync.yml\` will update \`README.md\` (the Page).

Closing this review issue."
Closing this review issue."
Comment on lines 64 to +71

Copilot AI Apr 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This gh issue comment body includes leading indentation before the list items and the closing sentence. That indentation will be preserved and can cause Markdown to render the list as a code block in GitHub, reducing readability. Remove the leading spaces inside the quoted body so the bullet list formats correctly.

Copilot uses AI. Check for mistakes.

gh issue close "$ISSUE_NUMBER" --reason completed

Expand Down Expand Up @@ -109,25 +109,25 @@ Closing this review issue."
run: |
BODY="## Blog Post Brief: ${MILESTONE_TITLE}

Bilbo, Ralph has reviewed the **${MILESTONE_TITLE}** milestone and decided: **blog post only** (no release).
Bilbo, Ralph has reviewed the **${MILESTONE_TITLE}** milestone and decided: **blog post only** (no release).

### Post metadata
- **Suggested filename:** \`docs/blog/${PUBLISH_DATE}-${SLUG}.md\`
- **Suggested publish date:** ${PUBLISH_DATE}
- **Review issue:** ${REVIEW_ISSUE_URL} (see for full issue list)
### Post metadata
- **Suggested filename:** \`docs/blog/${PUBLISH_DATE}-${SLUG}.md\`
- **Suggested publish date:** ${PUBLISH_DATE}
- **Review issue:** ${REVIEW_ISSUE_URL} (see for full issue list)

### Suggested post structure
1. **Summary** — what this milestone accomplished (2–3 sentences)
2. **What was built** — key features, fixes, or improvements with context
3. **Technical highlights** — architecture decisions, tricky problems solved, patterns introduced
4. **What's next** — follow-up work planned
### Suggested post structure
1. **Summary** — what this milestone accomplished (2–3 sentences)
2. **What was built** — key features, fixes, or improvements with context
3. **Technical highlights** — architecture decisions, tricky problems solved, patterns introduced
4. **What's next** — follow-up work planned

### Instructions
- Write the post to \`docs/blog/${PUBLISH_DATE}-${SLUG}.md\`
- Update \`docs/blog/index.md\` to add the new post at the top of the Recent Posts table
- Follow existing post style (see \`docs/blog/2026-04-04-release-v0-7-0.md\`)
- Open a PR targeting \`main\` when complete
- Close both this issue and the review issue (#${REVIEW_ISSUE_NUMBER}) in the PR description"
### Instructions
- Write the post to \`docs/blog/${PUBLISH_DATE}-${SLUG}.md\`
- Update \`docs/blog/index.md\` to add the new post at the top of the Recent Posts table
- Follow existing post style (see \`docs/blog/2026-04-04-release-v0-7-0.md\`)
- Open a PR targeting \`main\` when complete
- Close both this issue and the review issue (#${REVIEW_ISSUE_NUMBER}) in the PR description"
Comment on lines 110 to +130

Copilot AI Apr 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The BODY string used for the Bilbo blog-brief issue is indented on each line; GitHub will render much of this as a code block, so headings and lists won’t display properly. Build BODY without leading indentation (or use a heredoc) so the created issue body renders as intended.

Copilot uses AI. Check for mistakes.

gh issue create \
--title "Blog post: ${MILESTONE_TITLE} — milestone recap" \
Expand All @@ -141,10 +141,10 @@ Bilbo, Ralph has reviewed the **${MILESTONE_TITLE}** milestone and decided: **bl
run: |
gh issue comment "$ISSUE_NUMBER" --body "📝 **Blog-only path selected.**

A \`squad:bilbo\` blog brief issue has been created. Once Bilbo's PR merges:
- \`docs/blog/index.md\` will be updated (the blog page)
- \`blog-readme-sync.yml\` will update \`README.md\` (the Page)
A \`squad:bilbo\` blog brief issue has been created. Once Bilbo's PR merges:
- \`docs/blog/index.md\` will be updated (the blog page)
- \`blog-readme-sync.yml\` will update \`README.md\` (the Page)

Closing this review issue."
Closing this review issue."
Comment on lines 142 to +148

Copilot AI Apr 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This follow-up gh issue comment body is indented, which will be preserved and can cause the bullet list to render as a code block in GitHub. Remove the leading spaces in the comment string so the list formats normally.

Copilot uses AI. Check for mistakes.

gh issue close "$ISSUE_NUMBER" --reason completed
42 changes: 21 additions & 21 deletions .github/workflows/release-blog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,31 +46,31 @@ jobs:
run: |
BODY="## Blog Post Brief: ${RELEASE_NAME}

Bilbo, a new GitHub Release has been published. Please write a dev blog post for **${RELEASE_NAME}**.
Bilbo, a new GitHub Release has been published. Please write a dev blog post for **${RELEASE_NAME}**.

### Post metadata
- **Suggested filename:** \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\`
- **Suggested publish date:** ${PUBLISH_DATE}
- **Release:** [${TAG}](${RELEASE_URL})
- **Changelog range:** [\`${PREV_TAG}...${TAG}\`](https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG})
### Post metadata
- **Suggested filename:** \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\`
- **Suggested publish date:** ${PUBLISH_DATE}
- **Release:** [${TAG}](${RELEASE_URL})
- **Changelog range:** [\`${PREV_TAG}...${TAG}\`](https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG})

### Release notes
$(gh api "repos/${{ github.repository }}/releases/tags/${TAG}" --jq '.body // "No release notes provided."')
### Release notes
$(gh api "repos/${{ github.repository }}/releases/tags/${TAG}" --jq '.body // "No release notes provided."')

### Suggested post structure
1. **Summary** — what this release delivers in 2–3 sentences
2. **What's New** — feature sections with code snippets and context
3. **Bug Fixes / Improvements** — notable fixes
4. **How to Upgrade** — any steps required (migrations, config changes)
5. **Stats** — test counts, coverage numbers, PR count
6. **What's Next** — upcoming work
### Suggested post structure
1. **Summary** — what this release delivers in 2–3 sentences
2. **What's New** — feature sections with code snippets and context
3. **Bug Fixes / Improvements** — notable fixes
4. **How to Upgrade** — any steps required (migrations, config changes)
5. **Stats** — test counts, coverage numbers, PR count
6. **What's Next** — upcoming work

### Instructions
- Write the post to \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\`
- Update \`docs/blog/index.md\` to add the new post at the top of the Recent Posts table
- Follow existing post style (see \`docs/blog/2026-04-04-release-v0-7-0.md\`)
- Open a PR targeting \`main\` when complete
- Close this issue in the PR description with \`Closes #<this-issue>\`"
### Instructions
- Write the post to \`docs/blog/${PUBLISH_DATE}-release-${SLUG}.md\`
- Update \`docs/blog/index.md\` to add the new post at the top of the Recent Posts table
- Follow existing post style (see \`docs/blog/2026-04-04-release-v0-7-0.md\`)
- Open a PR targeting \`main\` when complete
- Close this issue in the PR description with \`Closes #<this-issue>\`"
Comment on lines 47 to +73

Copilot AI Apr 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The BODY string includes significant leading indentation on each line (spaces before “Bilbo,”, headings, and list items). In GitHub-flavored Markdown those leading spaces will render much of the issue body as a code block, breaking headings/lists. Build the body without leading indentation (or use a heredoc and strip indentation) so the created issue renders correctly.

Copilot uses AI. Check for mistakes.

gh issue create \
--title "Blog post: ${RELEASE_NAME} — release recap" \
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/squad-mark-released.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Squad Mark Released
on:
release:
types: [published, released]
workflow_dispatch: {}

permissions:
repository-projects: write
Expand All @@ -15,8 +16,8 @@ env:

jobs:
mark-released:
# Skip pre-releases (insider builds) and drafts — only real releases move items
if: ${{ !github.event.release.prerelease && !github.event.release.draft }}
# Skip pre-releases and drafts on release events; always run on manual dispatch
if: ${{ github.event_name == 'workflow_dispatch' || (!github.event.release.prerelease && !github.event.release.draft) }}
runs-on: ubuntu-latest
Comment on lines 3 to 21

Copilot AI Apr 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description/title indicates this promotion is only to add workflow_dispatch to squad-mark-released.yml, but this PR also includes substantial documentation/README/blog changes. If that’s intentional for a dev→main promotion, consider updating the PR description to reflect the full scope (or splitting docs changes into a separate PR) to reduce review/merge risk.

Copilot uses AI. Check for mistakes.

steps:
Expand Down Expand Up @@ -92,4 +93,5 @@ jobs:
}
} while (cursor);

core.notice(`🎉 Moved ${moved} item(s) from Done → Released for ${context.payload.release.tag_name}`);
const tagName = context.payload.release?.tag_name ?? 'manual dispatch';
core.notice(`🎉 Moved ${moved} item(s) from Done → Released for ${tagName}`);
Loading
Loading