Skip to content

Fix nightly issue-auto-unassign failure (Projects classic API retired) - #7142

Merged
compwron merged 1 commit into
mainfrom
fix/unassign-issues-projects-classic-sunset
Aug 20, 2026
Merged

Fix nightly issue-auto-unassign failure (Projects classic API retired)#7142
compwron merged 1 commit into
mainfrom
fix/unassign-issues-projects-classic-sunset

Conversation

@compwron

Copy link
Copy Markdown
Collaborator

What's broken

.github/workflows/issue-auto-unassign.yml has failed on every nightly run for weeks — it's the only consistently red workflow on main. Core CI (rspec, ruby_lint, erb_lint, npm, yaml_lint, factory_bot_lint, security, docker) is green.

Last run: 32316495594

Run bjthompson805/move-issues@4d2c991
  from_column: 8461148
  to_column: 15690587

RequestError [HttpError]: Not Found
  url: 'https://api.github.com/projects/columns/8461148/cards?per_page=100&page=0'
  status: '404'

Root cause

The move-issues action drives the retired Projects (classic) REST API. Both hardcoded column IDs are gone:

$ gh api projects/columns/8461148   # 404 Not Found
$ gh api projects/columns/15690587  # 404 Not Found

The 404 surfaces as an unhandled octokit rejection, so the step exits non-zero and the whole run goes red — even though the unassign/warn steps before it had already completed successfully. The daily red run masks whether the bot is actually doing its job.

Fix

Remove the card-move step and the print step that consumed its output, leaving a comment explaining why. The workflow's actual purpose — unassigning and warning on stale issues — is untouched and now reports its own status honestly.

If the board move is still wanted, it needs re-implementing against the Projects v2 GraphQL API (e.g. actions/add-to-project) with the new project/field IDs — worth a follow-up issue rather than blocking this.

Notes / out of scope

  • Four other workflows still reference Projects classic concepts and are worth auditing separately: add-labels-based-on-column.yml, remove-label-based-on-column.yml, after-deploy.yml, and issue-auto-close-done.yml (which triggers on the project_card event that classic boards no longer emit). They currently pass — the actions appear to no-op rather than throw — so they're likely silently dead rather than loudly broken.
  • Separate non-blocking warning in the same run: rubyforgood/unassign-issues still targets Node 20 and is being force-run on Node 24.

Verification

  • YAML.load_file parses cleanly; matches the repo's .yamllint (2-space indent, no document-start).
  • Cannot fully verify end-to-end until a scheduled or workflow_dispatch run fires on main after merge — the remaining steps are unchanged from the ones already succeeding today.

🤖 Generated with Claude Code

The nightly "Unassign issues" workflow has failed every day because its
last real step, bjthompson805/move-issues, calls the retired Projects
(classic) REST API. Columns 8461148 and 15690587 return 404, so the step
crashes with an unhandled octokit HttpError and marks the whole run red —
including the unassign/warn work that had already succeeded.

Remove the move step (and the print step that read its output) so the
workflow reflects whether unassigning actually worked. Moving cards on the
new board would need the Projects v2 GraphQL API.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@compwron
compwron marked this pull request as ready for review August 20, 2026 15:34
@compwron
compwron merged commit 8a9cf39 into main Aug 20, 2026
12 of 13 checks passed
@compwron
compwron deleted the fix/unassign-issues-projects-classic-sunset branch August 20, 2026 15:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant