feat(add-to-project): track all issues + retire Discussion drafts + ContentTwin/BMAD#616
feat(add-to-project): track all issues + retire Discussion drafts + ContentTwin/BMAD#616don-petry wants to merge 2 commits into
Conversation
…ontentTwin/BMAD Follow-up to #608, which squash-merged mid-work and captured only the classifier + triage tuning. These two changes landed on the branch after that merge and were stranded: 1. Un-gate Issues (keep PRs gated): empty REQUIRED_LABEL now means "no required label"; reusable passes '' for issues / dev-lead for PRs; reconcile-backlog gates per item via the /issues payload's `.pull_request`. Excluded-label noise filter still applies. 2. Retire Discussion drafting: removed the `discussion:` trigger (stub + template), the reconcile-discussion job (reusable), the Ideas backlog scan, ideas_category/IDEAS_CATEGORY, and reconcile-discussion.sh + its bats. Ideas live in GitHub Discussions; an Epic is a parent Issue with sub-issues. 3. ContentTwin + BMAD initiatives (full org coverage); bare `bmad` moved off the dev-lead rule so it doesn't swallow the repo path. Board is now the org-wide issue portfolio. The 25 Initiative / 10 Theme options already exist on the board (created footgun-safe). 66 bats green; shellcheck -S warning clean; 4 workflows parse. Docs updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reached
Next review available in: 14 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (12)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |
Dev-Lead — fix-bot-comment (no-changes)Agent reasoning |
There was a problem hiding this comment.
Code Review
This pull request refactors the Initiatives project automation to track all open issues across repositories (un-gated) while keeping pull requests gated by the dev-lead label. It removes tracking for GitHub Discussions (Ideas category) entirely, deletes the discussion reconciliation scripts and tests, and updates the initiative classification rules, taxonomy, and documentation. The review feedback suggests improving the robustness of the TSV reader in reconcile-backlog.sh to handle missing trailing newlines and carriage returns, using the optional/try operator in jq to prevent fatal errors on null labels, and refactoring the write_issue_stub test helper to avoid potential printf formatting issues.
There was a problem hiding this comment.
Pull request overview
Updates the org “Initiatives” Projects automation to (1) track all issues as the durable portfolio unit, (2) keep PRs gated behind dev-lead, (3) stop drafting Discussions onto the board, and (4) expand/adjust the Initiative/Theme taxonomy (including BMAD + ContentTwin) with corresponding tests and docs.
Changes:
- Un-gate Issues (track all, minus excluded-label noise filter) while keeping PRs gated by
REQUIRED_LABEL(defaultdev-lead). - Remove Discussion drafting/reconciliation from workflows, scripts, and tests.
- Extend classification taxonomy/rules + docs; update bats coverage for new behavior.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/add-to-project.yml |
Thin caller stub updated to issues+PRs only (no Discussions). |
standards/workflows/add-to-project.yml |
Canonical template updated to issues+PRs only (no Discussions). |
.github/workflows/add-to-project-reusable.yml |
Core reusable workflow updated for issue un-gating + PR gating; removes discussion job/inputs. |
.github/workflows/add-to-project-reconcile.yml |
Scheduled/manual reconcile updated to scan issues/PRs only and run classifier step. |
.github/scripts/add-to-project/add-issue-or-pr.sh |
Noise gate updated so empty REQUIRED_LABEL means “no required label” (used to un-gate issues). |
.github/scripts/add-to-project/reconcile-backlog.sh |
Backlog scanner updated to distinguish issue vs PR and apply gate only to PRs. |
.github/scripts/add-to-project/reconcile-discussion.sh |
Removed (Discussions no longer drafted/tracked). |
.github/scripts/add-to-project/initiative-rules.tsv |
Expanded/retuned ordered regex classifier rules (incl. BMAD/ContentTwin and more infra tokens). |
.github/scripts/add-to-project/initiative-taxonomy.tsv |
Updated Initiative→Theme mapping to include product themes + ContentTwin + BMAD. |
standards/initiatives-project.md |
Operator guide updated to portfolio model (issues tracked; ideas stay in Discussions). |
test/workflows/add-to-project/add-issue-or-pr.bats |
New coverage for empty REQUIRED_LABEL behavior (un-gating). |
test/workflows/add-to-project/reconcile-backlog.bats |
Updated coverage for issue un-gating + PR gating; removes discussion expectations. |
test/workflows/add-to-project/classify-initiative.bats |
Added classification tests for new/adjusted taxonomy (BMAD/ContentTwin/etc.). |
test/workflows/add-to-project/reconcile-discussion.bats |
Removed (Discussion reconciler removed). |
Dev-Lead — fix-reviews (applied)Changes committed and pushed. |
|
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |



What this does
Overhauls the Initiatives board population + classification.
1. Classify (Initiative + Theme).
classify-initiative.sh— deterministic, ordered-regex classifier over atitle | labels | reposignature. Cross-cutting infra rules first, product initiatives last (so a SonarCloud sweep inside a product repo → Org Standards, not product work). Writes only per-item field values (never the schema — no option-wipe footgun). Leaves genuinely-unmatched items blank.2. Track all issues (portfolio model). Issues are un-gated — every issue across all installed repos is tracked (minus the excluded-label noise filter). PRs keep the
dev-leadgate (they're transient). An emptyREQUIRED_LABELnow means "no required label".3. Retire Discussion drafting. Discussions are no longer drafted onto the board — Ideas live in GitHub Discussions; an Epic is a parent Issue with sub-issues (a board can't hold a Discussion as real content anyway). Removed the
discussion:trigger, thereconcile-discussionjob, the Ideas backlog scan, andreconcile-discussion.sh+ its tests.Taxonomy
25 Initiative options / 10 Themes (created on the board via the safe read-then-round-trip-all-ids pattern — verified zero orphaning). New this PR: Business Analyst, Cost Observability + per-product initiatives/Themes TalkTerm, Broodly, Markets, Google App Scripts, ContentTwin, and BMAD (Agentic Framework).
broodminder-export→Broodly andrepo-template→Org Standards via existing tokens.Tests
66 bats green (un-gate + PR-gate + issue/PR-kind + product/infra ordering + BMAD/ContentTwin guards);
shellcheck -S warningclean; 4 workflows parse.Activation (two-step, nothing auto-mutates on merge)
Refs #415, #387.
🤖 Generated with Claude Code
Note: follow-up to #608, which squash-merged mid-work and captured only the classifier + triage tuning. This PR carries the stranded remainder: un-gate Issues (PRs stay gated), retire Discussion drafting, and the ContentTwin + BMAD initiatives. The 25 Initiative / 10 Theme options already exist on the board.