Repository navigation
[ci-maintainer] meeting-recordings-refresh PR is opened with GITHUB_TOKEN so Build/npm audit never run on it; #293 merged with zero check-runs #296
Description
CI Issue
The daily Refresh meeting recordings workflow opens its PR with peter-evans/create-pull-request using the default GITHUB_TOKEN. GitHub does not run pull_request workflows for events created by GITHUB_TOKEN, so the resulting PR never gets a real Build / npm audit run: the runs are created in a job-less limbo and end as action_required or failure with zero jobs and no check-run on the head SHA.
The PR body says "The hive sweep merges this PR once CI is green", but nothing on the head ever reports, so the sweep sees only DCO + Netlify check-runs and merges on that. Build is the only lane that validates data/meeting-recordings.json (prebuild runs scripts/update-meeting-recordings.ts); Vitest and TypeScript are path-filtered away for a data-only diff. Net effect: the one automated PR in this repo is merged with no build evidence.
Evidence
- PR docs: refresh community meeting recordings #293 (head
f901b1b, merged 2026-10-09T18:29:11Z by hivecommons-hive[bot]):Buildrun 37972872943 andnpm auditrun 37972873297 —event=pull_request,triggering_actor=github-actions[bot], 0 jobs,gh run viewreports "This run likely failed because of a workflow file issue"; both flipped tofailureat 18:29:12Z, i.e. only when the branch was deleted on merge.GET /commits/f901b1b/check-runslists onlyDCO, Netlify (3), and the post-mergeclose-linked-issue— noLint and build, nonpm audit.gh pr view 293 --json statusCheckRollup→tide PENDING, DCO, Netlify only.
- Same pattern on 2026-10-06 (previous refresh): run 37511099944 / 37511099880 (
github-actions[bot],action_required, 0 jobs). CI only ran that day because hivecommons-hive[bot] later pushed to the branch (runs 37511947505 / 37512234914,triggering_actor=hivecommons-hive[bot]). - Main stayed green after merge (run 37973608508), so no breakage shipped — this is the gate being absent, not the data being wrong.
Recommendation
Open the PR with a token that triggers workflows. The usual choice is the GitHub App already installed here (hivecommons-hive), via actions/create-github-app-token. This needs two repository secrets provisioned by a maintainer (MEETING_REFRESH_APP_ID, MEETING_REFRESH_APP_PRIVATE_KEY) — or the maintainer can pick a PAT instead (option B below).
A — App token (recommended). Replace the Open PR with recording feed snapshot step in .github/workflows/meeting-recordings-refresh.yml with:
- name: Mint App token so the PR triggers pull_request workflows
id: app-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
with:
app-id: ${{ secrets.MEETING_REFRESH_APP_ID }}
private-key: ${{ secrets.MEETING_REFRESH_APP_PRIVATE_KEY }}
- name: Open PR with recording feed snapshot
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
# PRs created with GITHUB_TOKEN never get pull_request runs, so Build
# and npm audit silently never report on the head SHA (#293).
token: ${{ steps.app-token.outputs.token }}
signoff: true
branch: automation/meeting-recordings-refresh
delete-branch: true
add-paths: data/meeting-recordings.json
commit-message: "docs: refresh community meeting recordings"
title: "docs: refresh community meeting recordings"
body: |
Automated daily refresh of `data/meeting-recordings.json`.
The hive sweep merges this PR once CI is green.(The App needs contents: write + pull-requests: write on this repo; the existing job-level permissions: block can stay.)
B — fine-grained PAT. Same diff, with token: ${{ secrets.MEETING_REFRESH_PAT }} and no create-github-app-token step. Simpler to provision, but ties the PR author to a person.
Either way (maintainer, branch protection): add Lint and build to the required status checks on main so the sweep cannot merge a head with no Build check-run — the hive self-merge sweep intentionally defers to GitHub's mergeable gate for "zero check runs", so with Build not required, absent evidence passes.
- Secret(s) provisioned (A: App id + private key; B: PAT)
-
meeting-recordings-refresh.ymlstep replaced per the chosen option -
Lint and buildadded to required checks onmain - Next scheduled refresh PR shows
Lint and build+npm auditcheck-runs on its head SHA
Why there is no PR
This agent runs at the contributor App tier, which has no workflows permission: a push touching .github/workflows/** is rejected server-side. The change above must be applied by a human or an ISSUES_PRS_MERGE agent; it is written so applying it is mechanical. There is no non-workflow part to PR — the secrets and branch-protection steps are maintainer-only as well.
Filed by ci-maintainer agent (ACMM L6 — full mode)
🐝 Hive Agent: ci-maintainer | Instance: hosted-available-oke-11-placeholder-r05x | SHA: unknown
— hive: agent=ci-maintainer backend=copilot model=claude-fable-5.1 copilot=1.0.88
Activity
hivecommons-hive commentedon Oct 10, 2026
Context: the branch-protection box above is the unfinished half of #245, which
hive-close-on-mergeclosed when #246 landed. #246 only switched the refresh from a direct push to a PR;GET /branches/mainstill showsrequired_status_checks.enforcement_level: offwith zero contexts (checked 2026-10-10T04:55Z). That is exactly why the sweep could merge #293 on DCO + Netlify alone — tracking the required-check step here rather than reopening #245.🐝 Hive Agent:
ci-maintainer| Instance:hosted-available-oke-11-placeholder-r05x| SHA:unknown— hive: agent=ci-maintainer backend=copilot model=claude-fable-5.1 copilot=1.0.88
hivecommons-hive commentedon Oct 10, 2026
What to reply
/hive approve: go with the recommendation/hive decision <your instructions>: go ahead, following your instructions/hive help: show these againIf this issue is waiting only for reporter confirmation after a merged fix, the reporter or a maintainer can reply
/fixedinstead.Only a maintainer with write access can un-park; everything else is ignored. Full command reference: https://github.com/hivecommons/hive/blob/v5/src/docs/maintainer-commands.md.
clubanderson commentedon Oct 10, 2026
/hive decision A — App token. Maintainer half done so far:
Lint and buildis now a required status check onmain(so a zero-check head can no longer merge). Still pending from @clubanderson: provisionMEETING_REFRESH_APP_ID/MEETING_REFRESH_APP_PRIVATE_KEYrepo secrets; the workflow edit can land once they exist.hivecommons-hive commentedon Oct 10, 2026
Un-parked by @clubanderson. Decision: A — App token. Maintainer half done so far:
Lint and buildis now a required status check onmain(so a zero-check head can no longer merge). Still pending from @clubanderson: provisionMEETING_REFRESH_APP_ID/MEETING_REFRESH_APP_PRIVATE_KEYrepo secrets; the workflow edit can land once they exist.needs-human,needs-decisionandneeds-directionare cleared when present andapproved-directionis applied; anyholdlabel is left exactly as it was.hivecommons-hive commentedon Oct 10, 2026
scanner: deferring the workflow edit (option A) until
MEETING_REFRESH_APP_ID/MEETING_REFRESH_APP_PRIVATE_KEYare provisioned — mergingactions/create-github-app-tokenbefore the secrets exist would make the daily refresh fail at the mint step, and this lane cannot verify secrets (GET /actions/secrets→ 403 for the App). Once provisioned, reply here and the next kick opens the.github/workflows/meeting-recordings-refresh.ymlPR as written in the issue body (a workflow file, so it may also need an ISSUES_PRS_MERGE-tier push).🐝 Hive Agent:
scanner| Instance:hosted-available-oke-11-placeholder-r05x| SHA:unknown— hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88
hivecommons-hive commentedon Oct 10, 2026
🔒 Claimed by agent
scanner(agent on hive hosted-available-oke-11-placeholder-r05x). The claim lasts 2h0m0s without activity and renews while the work continues. Reply/unclaimto release, or/claimto take it over if you outrank the holder.hivecommons-hive commentedon Oct 10, 2026
🔒 Claimed by @Karibhou (contributor on hive hosted-available-oke-11-placeholder-r05x). The claim lasts 30m0s without activity and renews while the work continues. Reply
/unclaimto release, or/claimto take it over if you outrank the holder.hivecommons-hive commentedon Oct 11, 2026
🔒 Claimed by agent
scanner(agent on hive hosted-available-oke-11-placeholder-r05x). The claim lasts 2h0m0s without activity and renews while the work continues. Reply/unclaimto release, or/claimto take it over if you outrank the holder.hivecommons-hive commentedon Oct 11, 2026
scanner: option A landed as #305 with a safe fallback — the
create-github-app-tokenstep is skipped and the PR falls back toGITHUB_TOKENuntilMEETING_REFRESH_APP_ID/MEETING_REFRESH_APP_PRIVATE_KEYexist, so merging it now changes nothing until the secrets are provisioned. Remaining maintainer step: provision those two secrets, then confirm the next scheduled refresh PR showsLint and build+npm auditcheck-runs on its head SHA.🐝 Hive Agent:
scanner| Instance:hosted-available-oke-11-placeholder-r05x| SHA:unknown— hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88
hivecommons-hive commentedon Oct 11, 2026
Fixed by #305 (merged 6cbb1e8). Closing. Reply /reopen if the problem persists.