diff --git a/.github/workflows/add-issues-to-project.yml b/.github/workflows/add-issues-to-project.yml index 9e0f4352..45860039 100644 --- a/.github/workflows/add-issues-to-project.yml +++ b/.github/workflows/add-issues-to-project.yml @@ -26,7 +26,7 @@ jobs: - name: Add issue to MyBlog project board uses: actions/github-script@v9 with: - github-token: ${{ secrets.GITHUB_TOKEN }} + github-token: ${{ secrets.GH_PROJECT_TOKEN }} script: | const issue = context.payload.issue; diff --git a/.github/workflows/project-board-audit.yml b/.github/workflows/project-board-audit.yml index 4851f26d..a53df009 100644 --- a/.github/workflows/project-board-audit.yml +++ b/.github/workflows/project-board-audit.yml @@ -1,5 +1,7 @@ name: Project Board Audit +# Audit for status drift between project board and issue/PR states +# Updated: 2026-05-11 to use new project (PVT_kwHOA5k0b84BXZpa) on: workflow_dispatch: schedule: diff --git a/.github/workflows/project-board-automation.yml b/.github/workflows/project-board-automation.yml index 43e744c3..0c69daf2 100644 --- a/.github/workflows/project-board-automation.yml +++ b/.github/workflows/project-board-automation.yml @@ -15,10 +15,10 @@ permissions: env: PROJECT_ID: PVT_kwHOA5k0b84BXZpa STATUS_FIELD_ID: PVTSSF_lAHOA5k0b84BXZpazhSmuGY - IN_SPRINT_OPTION_ID: 61e4505c - IN_REVIEW_OPTION_ID: df73e18b + IN_SPRINT_OPTION_ID: f75ad846 + IN_REVIEW_OPTION_ID: 47fc9ee4 DONE_OPTION_ID: "98236657" - RELEASED_OPTION_ID: 8e246b27 + RELEASED_OPTION_ID: 90af7f3b jobs: update-project-board: diff --git a/.github/workflows/squad-mark-released.yml b/.github/workflows/squad-mark-released.yml index 472c97f6..cde3006e 100644 --- a/.github/workflows/squad-mark-released.yml +++ b/.github/workflows/squad-mark-released.yml @@ -16,7 +16,7 @@ env: PROJECT_ID: PVT_kwHOA5k0b84BXZpa STATUS_FIELD_ID: PVTSSF_lAHOA5k0b84BXZpazhSmuGY DONE_OPTION_ID: "98236657" - RELEASED_OPTION_ID: "8e246b27" + RELEASED_OPTION_ID: "90af7f3b" jobs: mark-released: diff --git a/.squad/agents/boromir/history.md b/.squad/agents/boromir/history.md index 26f13c17..255cf4de 100644 --- a/.squad/agents/boromir/history.md +++ b/.squad/agents/boromir/history.md @@ -1425,3 +1425,31 @@ Decision #26: Lint Workflow Pattern for MyBlog (merged into `.squad/decisions.md - `docs/CONTRIBUTING.md` is a third maintenance surface beyond the hook and playbook. All three must be checked on hook changes. - Gate numbering in docs must match the hook source exactly (0–5, not 0–4). + +### Issue #305 — PR #306 Blocker: Released Option Did Not Exist on Project Board (2026-05-11) + +**Root cause:** `RELEASED_OPTION_ID: 98236657` on the `squad/305-sync-board-option-ids` branch was +identical to `DONE_OPTION_ID`. The "Released" status option did not exist on the MyBlog project board — +the board only had Todo (`f75ad846`), In Progress (`47fc9ee4`), Done (`98236657`). + +**Changes made:** + +- Added "Released" (BLUE) option to the project board Status field via `updateProjectV2Field` GraphQL + mutation. New ID: `90af7f3b`. +- Updated `RELEASED_OPTION_ID` to `90af7f3b` in both: + - `.github/workflows/project-board-automation.yml` + - `.github/workflows/squad-mark-released.yml` +- `DONE_OPTION_ID` (`98236657`) left untouched. +- Committed and pushed to `origin/squad/305-sync-board-option-ids`; all 6 pre-push gates passed + (49 tests, 0 failures). + +**Learnings:** + +- **Verify board options exist before hardcoding option IDs** — A phantom ID causes silent no-ops or + runtime GraphQL errors. Always query `field(name: "Status") { options { id name } }` to confirm IDs. +- **Unset `GH_TOKEN` for board GraphQL** — The environment `GH_TOKEN` may lack `read:org`/`project` + scopes. The keyring token (set via `gh auth login`) carries full project scopes. +- **`updateProjectV2Field` mutation: no `projectId` argument** — Input only takes `fieldId` + + `singleSelectOptions`. Pass all existing option IDs to preserve them; omit `id` for new options. +- **Cherry-pick workflow for PR fixes:** stash → checkout origin branch → cherry-pick fix commit → + rename to `squad/{issue}-{slug}` → push. Cleaner than diverging 8 commits onto the remote. diff --git a/.squad/decisions/decisions.md b/.squad/decisions/decisions.md index 19da5144..4d7de0fe 100644 --- a/.squad/decisions/decisions.md +++ b/.squad/decisions/decisions.md @@ -2298,6 +2298,7 @@ The `squad-mark-released.yml` workflow uses `actions/github-script` to call the ## Setup To configure the secret: + 1. Create a classic PAT at https://github.com/settings/tokens with `project` scope 2. Add it as repository secret: Settings → Secrets and variables → Actions → `GH_PROJECT_TOKEN`