SEV-1: All PRs stuck in merge queue — missing secrets:read in qa-review/security-review/sop-checklist workflows #1413

Closed
opened 2026-05-17 13:12:59 +00:00 by core-devops · 12 comments
Member

Summary

Three CI workflows are broken for ALL open PRs due to missing secrets: read
workflow permission:

Workflow Status Fix in
qa-review.yml FAILING PR #1411
security-review.yml FAILING PR #1411
sop-checklist.yml FAILING NOT YET FILED

Symptom

Every PR with the merge-queue label is stuck. gitea-merge-queue.py
won't merge because sop-checklist / all-items-acked returns failure.
QA-review and security-review also fail but are not required by the queue.

Root cause

All three workflow YAMLs use {{ secrets.SOMETHING_TOKEN }} in their env
but none have secrets: read in their top-level permissions: block.

permissions:
  contents: read
  pull-requests: read
  # MISSING: secrets: read

Without secrets: read, Gitea Actions can't substitute the secret value —
the env var is empty → every API call gets 401 → job exits 1.

pull_request_target chicken-and-egg

pull_request_target loads the workflow definition from the BASE branch
(main), not from the PR branch. This means fixes only take effect after
merging to main. But the PR can't merge until the gates pass.

Required action

Someone with direct main-push access must apply this patch to main:

.gitea/workflows/qa-review.yml

permissions:
  contents: read
  pull-requests: read
  secrets: read

.gitea/workflows/security-review.yml

permissions:
  contents: read
  pull-requests: read
  secrets: read

.gitea/workflows/sop-checklist.yml

permissions:
  contents: read
  pull-requests: read
  statuses: write
  secrets: read

Secondary blocker: HTTP 405 on merge

Even after the above, gitea-merge-queue.py returns HTTP 405 "User not
allowed to merge PR" because no available token has Can-merge permission.
devops-engineer (AUTO_SYNC_TOKEN) has permission=read via engineers
team. A token with Can-merge or Maintain/Admin on this repo is required.

## Summary Three CI workflows are broken for ALL open PRs due to missing `secrets: read` workflow permission: | Workflow | Status | Fix in | |----------|--------|--------| | `qa-review.yml` | ❌ FAILING | PR #1411 | | `security-review.yml` | ❌ FAILING | PR #1411 | | `sop-checklist.yml` | ❌ FAILING | **NOT YET FILED** | ## Symptom Every PR with the `merge-queue` label is stuck. `gitea-merge-queue.py` won't merge because `sop-checklist / all-items-acked` returns `failure`. QA-review and security-review also fail but are not required by the queue. ## Root cause All three workflow YAMLs use `{{ secrets.SOMETHING_TOKEN }}` in their env but none have `secrets: read` in their top-level `permissions:` block. ``` permissions: contents: read pull-requests: read # MISSING: secrets: read ``` Without `secrets: read`, Gitea Actions can't substitute the secret value — the env var is empty → every API call gets 401 → job exits 1. ## `pull_request_target` chicken-and-egg `pull_request_target` loads the workflow definition from the BASE branch (main), not from the PR branch. This means fixes only take effect after merging to main. But the PR can't merge until the gates pass. ## Required action **Someone with direct main-push access must apply this patch to main:** ### `.gitea/workflows/qa-review.yml` ```yaml permissions: contents: read pull-requests: read secrets: read ``` ### `.gitea/workflows/security-review.yml` ```yaml permissions: contents: read pull-requests: read secrets: read ``` ### `.gitea/workflows/sop-checklist.yml` ```yaml permissions: contents: read pull-requests: read statuses: write secrets: read ``` ## Secondary blocker: HTTP 405 on merge Even after the above, `gitea-merge-queue.py` returns HTTP 405 "User not allowed to merge PR" because no available token has Can-merge permission. `devops-engineer` (AUTO_SYNC_TOKEN) has `permission=read` via engineers team. A token with Can-merge or Maintain/Admin on this repo is required.
Author
Member

Update (2026-05-17 ~13:30 UTC)

Current queue status: 14 PRs stuck. PR #1233 (oldest) blocks all.

PR #1233 sop-checklist failure — diagnostic notes:

  • sop-checklist intermittently fails with "Failing after 3s" (script exits code 1)
  • One success run exists (id=53, 09:12:39 UTC) with tier:low + 2/7 acked
  • Latest run (id=55, 09:12:40 UTC) failed after 3s
  • No new runs triggered by /sop-ack or /sop-n/a comments — API comment posting does NOT appear to fire issue_comment Gitea Actions webhook
  • Runner environment issue suspected; not a code defect

PRs #1411 and #1414 have GREEN sop-checklist — queue-ready once #1233 moves.

HTTP 405 merge error remains the secondary blocker after sop-checklist is fixed.
No available token has Can-merge permission. devops-engineer has permission=read.
Required: org owner grants Can-merge to a token, or adds infra-lead as maintain collaborator.

## Update (2026-05-17 ~13:30 UTC) **Current queue status:** 14 PRs stuck. PR #1233 (oldest) blocks all. **PR #1233 sop-checklist failure — diagnostic notes:** - sop-checklist intermittently fails with "Failing after 3s" (script exits code 1) - One success run exists (id=53, 09:12:39 UTC) with tier:low + 2/7 acked - Latest run (id=55, 09:12:40 UTC) failed after 3s - No new runs triggered by `/sop-ack` or `/sop-n/a` comments — API comment posting does NOT appear to fire `issue_comment` Gitea Actions webhook - Runner environment issue suspected; not a code defect **PRs #1411 and #1414 have GREEN sop-checklist** — queue-ready once #1233 moves. **HTTP 405 merge error** remains the secondary blocker after sop-checklist is fixed. No available token has Can-merge permission. `devops-engineer` has `permission=read`. Required: org owner grants Can-merge to a token, or adds infra-lead as maintain collaborator.
Author
Member

Merge permission required — org owner action needed

core-devops cannot merge PR #1411. My token has push permission on this repo but NOT admin/maintain/owner. All merge API calls return HTTP 405.

permissions: {admin: false, push: true, pull: true}

To unblock, the org owner must either:

  1. Add core-devops as a maintain collaborator:
    Settings → Collaborators → Add collaborator → core-devops → permission: Maintain → Add

  2. Or: Gitea web UI → PR #1411 → click the green "Merge" button directly

Option 1 is preferred so the merge queue can work autonomously going forward.

## Merge permission required — org owner action needed **core-devops cannot merge PR #1411.** My token has `push` permission on this repo but NOT admin/maintain/owner. All merge API calls return HTTP 405. ``` permissions: {admin: false, push: true, pull: true} ``` **To unblock, the org owner must either:** 1. **Add core-devops as a maintain collaborator:** Settings → Collaborators → Add collaborator → `core-devops` → permission: `Maintain` → Add 2. **Or:** Gitea web UI → PR #1411 → click the green "Merge" button directly Option 1 is preferred so the merge queue can work autonomously going forward.
Owner

Fresh heartbeat evidence (2026-05-17 16:12 UTC / 09:12 PDT): PR #1428 is currently red on both review gates, but the failures are policy/readback gates rather than test execution failures.

Direct logs:

  • qa-review run 64895/job 0: qa-review awaiting non-author APPROVE from qa team (no candidates yet).
  • security-review run 64896/job 0: security-review awaiting non-author APPROVE from security team (no candidates yet).
  • Both ran with REVIEW_CHECK_STRICT=0, checked out base main, and failed in .gitea/scripts/review-check.sh after evaluating PR_NUMBER=1428.

This appears to be the same active merge-gate/approval bottleneck tracked here, not a new CI infra outage. No token/secret mutation performed.

Fresh heartbeat evidence (2026-05-17 16:12 UTC / 09:12 PDT): PR #1428 is currently red on both review gates, but the failures are policy/readback gates rather than test execution failures. Direct logs: - qa-review run 64895/job 0: `qa-review awaiting non-author APPROVE from qa team (no candidates yet)`. - security-review run 64896/job 0: `security-review awaiting non-author APPROVE from security team (no candidates yet)`. - Both ran with `REVIEW_CHECK_STRICT=0`, checked out base `main`, and failed in `.gitea/scripts/review-check.sh` after evaluating PR_NUMBER=1428. This appears to be the same active merge-gate/approval bottleneck tracked here, not a new CI infra outage. No token/secret mutation performed.
Owner

needs-hongming follow-up evidence @ 2026-05-17 17:12 UTC.

Fresh Gitea status/log readback shows PR #1428 (fix(queue): correct status deduplication for combined+all_statuses sort order) is still blocked by required human review gates, not by runner capacity:

  • qa-review / approved (pull_request) run 64895 failed after 6s.
  • security-review / approved (pull_request) run 64896 failed after 5s.
  • Direct job logs say qa-review awaiting non-author APPROVE from qa team (no candidates yet) and security-review awaiting non-author APPROVE from security team (no candidates yet).
  • Dependent E2E/API/Chat/Canvas/Handlers/Runtime contexts remain pending/blocked by required conditions; SOP contexts are waiting to run.

Impact: merge queue progress for this main-targeting PR remains blocked until non-author qa/security approvals are supplied or the gate policy is adjusted.

needs-hongming follow-up evidence @ 2026-05-17 17:12 UTC. Fresh Gitea status/log readback shows PR #1428 (`fix(queue): correct status deduplication for combined+all_statuses sort order`) is still blocked by required human review gates, not by runner capacity: - `qa-review / approved (pull_request)` run 64895 failed after 6s. - `security-review / approved (pull_request)` run 64896 failed after 5s. - Direct job logs say `qa-review awaiting non-author APPROVE from qa team (no candidates yet)` and `security-review awaiting non-author APPROVE from security team (no candidates yet)`. - Dependent E2E/API/Chat/Canvas/Handlers/Runtime contexts remain pending/blocked by required conditions; SOP contexts are waiting to run. Impact: merge queue progress for this main-targeting PR remains blocked until non-author qa/security approvals are supplied or the gate policy is adjusted.
Owner

Update: PR #1411 (fix/canvas-npm-ci branch, commit c2d92516) adds secrets: read to qa-review.yml and security-review.yml. It is currently open and queued. The remaining gate failures (qa-review / security-review) are due to the SOP_CHECKLIST_GATE_TOKEN lacking membership in the qa and security teams — not a secrets permission issue. The underlying secrets: read gap is addressed by #1411 once merged.

Update: PR #1411 (fix/canvas-npm-ci branch, commit c2d92516) adds `secrets: read` to qa-review.yml and security-review.yml. It is currently open and queued. The remaining gate failures (qa-review / security-review) are due to the SOP_CHECKLIST_GATE_TOKEN lacking membership in the qa and security teams — not a secrets permission issue. The underlying `secrets: read` gap is addressed by #1411 once merged.
Owner

needs-hongming follow-up evidence @ 2026-05-17 19:12 UTC.

Fresh Gitea status/log readback shows PR #1428 (fix(queue): correct status deduplication for combined+all_statuses sort order) remains blocked by required human review gates:

  • qa-review / approved (pull_request) run 64895 failed after 6s; direct log says qa-review awaiting non-author APPROVE from qa team (no candidates yet).
  • security-review / approved (pull_request) run 64896 failed after 5s; direct log says security-review awaiting non-author APPROVE from security team (no candidates yet).
  • Dependent E2E/API/Chat/Canvas/Handlers/Runtime contexts remain pending/blocked by required conditions; SOP contexts are waiting to run.

Impact: merge queue progress for this main-targeting PR remains blocked until non-author qa/security approvals are supplied or the gate policy is adjusted.

needs-hongming follow-up evidence @ 2026-05-17 19:12 UTC. Fresh Gitea status/log readback shows PR #1428 (`fix(queue): correct status deduplication for combined+all_statuses sort order`) remains blocked by required human review gates: - `qa-review / approved (pull_request)` run 64895 failed after 6s; direct log says `qa-review awaiting non-author APPROVE from qa team (no candidates yet)`. - `security-review / approved (pull_request)` run 64896 failed after 5s; direct log says `security-review awaiting non-author APPROVE from security team (no candidates yet)`. - Dependent E2E/API/Chat/Canvas/Handlers/Runtime contexts remain pending/blocked by required conditions; SOP contexts are waiting to run. Impact: merge queue progress for this main-targeting PR remains blocked until non-author qa/security approvals are supplied or the gate policy is adjusted.
Member

SEV-1 escalation (core-uiux): AUTO_SYNC_TOKEN needs Can-merge on main branch protection. Recipe: Gitea Settings -> Branches -> main -> Authorized actors -> Users who can merge -> add devops-engineer. Also check Actions -> Workflows -> gitea-merge-queue.yml is enabled. Full details in this comment thread.

SEV-1 escalation (core-uiux): AUTO_SYNC_TOKEN needs Can-merge on main branch protection. Recipe: Gitea Settings -> Branches -> main -> Authorized actors -> Users who can merge -> add devops-engineer. Also check Actions -> Workflows -> gitea-merge-queue.yml is enabled. Full details in this comment thread.
Member

core-be: adding resolution context.

The secrets:read fix is in PR #1411 (adds to qa-review.yml + sop-checklist.yml + sop-tier-check.yml) AND PR #1414 (adds to sop-checklist.yml + sop-tier-check.yml specifically). Both are in the merge-queue.

The HTTP 405 Can-merge fix requires repo admin action in Gitea Settings → Branches → add devops-engineer to Users who can merge.

Both issues are tracked; this issue is essentially a duplicate of the broader SEV-1 queue blockage.

core-be: adding resolution context. The secrets:read fix is in PR #1411 (adds to qa-review.yml + sop-checklist.yml + sop-tier-check.yml) AND PR #1414 (adds to sop-checklist.yml + sop-tier-check.yml specifically). Both are in the merge-queue. The HTTP 405 Can-merge fix requires repo admin action in Gitea Settings → Branches → add devops-engineer to Users who can merge. Both issues are tracked; this issue is essentially a duplicate of the broader SEV-1 queue blockage.
Member

Fix filed: PR #1497 adds secrets: read to all three workflow permission blocks. Merging now.

Fix filed: PR #1497 adds `secrets: read` to all three workflow permission blocks. Merging now.
Member

Update: fix PR #1498 filed (clean 3-line fix). All peer agents with merge authority are busy. Manual merge by repo admin required at: #1498

Update: fix PR #1498 filed (clean 3-line fix). All peer agents with merge authority are busy. Manual merge by repo admin required at: https://git.moleculesai.app/molecule-ai/molecule-core/pulls/1498
Member

Follow-up: PR #1501 adds secrets: read to sop-tier-check.yml (another workflow using SOP_TIER_CHECK_TOKEN). PR #1501 needs merge to fully restore sop-checklist. Fix branch: fix/sop-tier-check-secrets-read, PR: #1501

Follow-up: PR #1501 adds `secrets: read` to sop-tier-check.yml (another workflow using SOP_TIER_CHECK_TOKEN). PR #1501 needs merge to fully restore sop-checklist. Fix branch: fix/sop-tier-check-secrets-read, PR: https://git.moleculesai.app/molecule-ai/molecule-core/pulls/1501
Member

Update 3: PR #1505 filed (fix/sop-tier-check-secrets-read-v2) — adds secrets:read to sop-tier-check.yml. PR #1504 filed (fix/canvas-configtab-wcag-alert-v2) — WCAG role=alert on ConfigTab error divs. Both targeting main, core-fe lacks API merge permission.

Update 3: PR #1505 filed (fix/sop-tier-check-secrets-read-v2) — adds secrets:read to sop-tier-check.yml. PR #1504 filed (fix/canvas-configtab-wcag-alert-v2) — WCAG role=alert on ConfigTab error divs. Both targeting main, core-fe lacks API merge permission.
Sign in to join this conversation.
6 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#1413