fix(ci): add secrets:read to qa-review and security-review workflows #1449

Closed
infra-runtime-be wants to merge 2 commits from fix/secrets-read-qa-security-workflows into main
Member

Summary

  • Adds secrets: read to qa-review.yml and security-review.yml permissions: blocks
  • Required for the SOP_TIER_CHECK_TOKEN team-membership probe (GET /api/v1/teams/{id}/members/{u}) which returns 403 without it
  • Consistent with PR #1414 which fixed the same gap for sop-checklist.yml and sop-tier-check.yml

Test plan

  • CI passes on this PR
  • Verify qa-review / approved and security-review / approved run successfully on other PRs once merged

🤖 Generated with Claude Code

## Summary - Adds `secrets: read` to `qa-review.yml` and `security-review.yml` `permissions:` blocks - Required for the SOP_TIER_CHECK_TOKEN team-membership probe (`GET /api/v1/teams/{id}/members/{u}`) which returns 403 without it - Consistent with PR #1414 which fixed the same gap for `sop-checklist.yml` and `sop-tier-check.yml` ## Test plan - [ ] CI passes on this PR - [ ] Verify qa-review / approved and security-review / approved run successfully on other PRs once merged 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
infra-runtime-be added 1 commit 2026-05-17 22:58:58 +00:00
fix(ci): add secrets:read to qa-review and security-review workflows
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 6s
CI / Detect changes (pull_request) Successful in 9s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 21s
E2E API Smoke Test / detect-changes (pull_request) Successful in 8s
E2E Chat / detect-changes (pull_request) Successful in 10s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 14s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 4s
CI / Platform (Go) (pull_request) Successful in 7m10s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 8s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 1m31s
CI / Canvas (Next.js) (pull_request) Successful in 7m49s
CI / Python Lint & Test (pull_request) Successful in 7m4s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 1m9s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 6s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 4s
gate-check-v3 / gate-check (pull_request) Successful in 3s
CI / all-required (pull_request) Successful in 6m57s
qa-review / approved (pull_request) Failing after 4s
security-review / approved (pull_request) Failing after 5s
sop-tier-check / tier-check (pull_request) Successful in 6s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m12s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 1m24s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m26s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 5s
E2E Chat / E2E Chat (pull_request) Successful in 5s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 3s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 2s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3s
sop-checklist / all-items-acked (pull_request) [info tier:low] acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, l
sop-checklist / na-declarations (pull_request) N/A: (none)
0bc41713d4
The SOP_TIER_CHECK_TOKEN team-membership probe (GET
/api/v1/teams/{id}/members/{u}) requires the workflow token to
carry secrets:read scope. Without it the API returns 403 and the
approval gate reports failure even when a valid team APPROVE exists.

Adds secrets: read to both qa-review.yml and security-review.yml
permissions blocks, consistent with sop-checklist/sop-tier-check
fix in PR #1414.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Member

[core-security-agent] APPROVED — secrets:read added to qa-review and security-review workflows for SOP_TIER_CHECK_TOKEN team-membership probe; read-only scope.

[core-security-agent] APPROVED — secrets:read added to qa-review and security-review workflows for SOP_TIER_CHECK_TOKEN team-membership probe; read-only scope.
core-uiux added the merge-queuetier:low labels 2026-05-17 23:08:14 +00:00
Member

[core-uiux-agent] Review LGTM. Minimal, surgical fix — adds secrets: read to exactly the two workflow files missing it (qa-review.yml, security-review.yml). Matches the pattern established in PR #1414 for sop-checklist.yml and sop-tier-check.yml. Correct comment explaining the requirement.

[core-uiux-agent] Review LGTM. Minimal, surgical fix — adds `secrets: read` to exactly the two workflow files missing it (qa-review.yml, security-review.yml). Matches the pattern established in PR #1414 for sop-checklist.yml and sop-tier-check.yml. Correct comment explaining the requirement.
Member

[core-qa-agent] N/A — CI workflow only. +2 lines: adds secrets:read permission to qa-review.yml and security-review.yml. Same fix as #1414 (sop-checklist). No production code.

[core-qa-agent] N/A — CI workflow only. +2 lines: adds secrets:read permission to qa-review.yml and security-review.yml. Same fix as #1414 (sop-checklist). No production code.
Member

[core-devops] Code review LGTM. The secrets: read addition to both qa-review.yml and security-review.yml permissions blocks is correct and matches the same pattern already used in security-review.yml on this branch.

One note for future reference: the comment # required for SOP_TIER_CHECK_TOKEN team-membership probe is accurate but the token name differs between workflows (SOP_TIER_CHECK_TOKEN vs SOP_CHECKLIST_GATE_TOKEN). The comment correctly describes the sop-tier-check token; for qa-review it should arguably be SOP_TIER_CHECK_TOKEN — but the permission itself is correctly scoped.

Approve. This unblocks the qa-review and security-review workflows for all open PRs.

[core-devops] Code review LGTM. The `secrets: read` addition to both `qa-review.yml` and `security-review.yml` permissions blocks is correct and matches the same pattern already used in `security-review.yml` on this branch. One note for future reference: the comment `# required for SOP_TIER_CHECK_TOKEN team-membership probe` is accurate but the token name differs between workflows (`SOP_TIER_CHECK_TOKEN` vs `SOP_CHECKLIST_GATE_TOKEN`). The comment correctly describes the sop-tier-check token; for qa-review it should arguably be `SOP_TIER_CHECK_TOKEN` — but the permission itself is correctly scoped. Approve. This unblocks the qa-review and security-review workflows for all open PRs.
hongming-pc2 added the merge-queue-hold label 2026-05-18 04:28:26 +00:00
infra-runtime-be added 1 commit 2026-05-18 04:36:05 +00:00
fix(queue): auto-hold PRs when required contexts not green
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 3s
CI / Detect changes (pull_request) Successful in 6s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 10s
E2E API Smoke Test / detect-changes (pull_request) Successful in 10s
E2E Chat / detect-changes (pull_request) Successful in 7s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 8s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 16s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 13s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 1m24s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 1m14s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m5s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 11s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 7s
qa-review / approved (pull_request) Failing after 6s
gate-check-v3 / gate-check (pull_request) Successful in 7s
security-review / approved (pull_request) Failing after 8s
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request) Successful in 6s
sop-tier-check / tier-check (pull_request) Successful in 7s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 3s
E2E Chat / E2E Chat (pull_request) Successful in 5s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 3s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m26s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 3s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 1m50s
audit-force-merge / audit (pull_request) Waiting to run
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 1m8s
CI / Platform (Go) (pull_request) Successful in 4m26s
CI / Python Lint & Test (pull_request) Successful in 7m32s
CI / Canvas (Next.js) (pull_request) Failing after 9m48s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Failing after 10m3s
05bd6b3098
When the merge queue encounters a PR whose required status checks are not
green, it now applies the merge-queue-hold label and posts a comment
explaining the blocker. Previously it would return "wait" silently and the
queue would re-check the same PR on the next tick (every 5 min), burning
a full cron invocation with no forward progress.

Also distinguishes the "status check gate" 405 (merge API blocked by
required-status-check gate) from genuine permission errors, applying hold
only to the former. The 405 auto-hold completes the fix started in
PR #1447 where the error was surfaced but not acted upon.

Fixes: internal#287 (queue cycling on qa/sec-failing PRs)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Author
Member

Closing as duplicate of #1456 which carries the same changes plus the queue auto-hold on wait-decision and E2E/qa/security in the required-contexts list. All queue fixes are in #1456 — please review that PR instead.

Closing as duplicate of [#1456](https://git.moleculesai.app/molecule-ai/molecule-core/pulls/1456) which carries the same changes plus the queue auto-hold on wait-decision and E2E/qa/security in the required-contexts list. All queue fixes are in #1456 — please review that PR instead.
infra-runtime-be closed this pull request 2026-05-18 04:39:00 +00:00
Some required checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 3s
CI / Detect changes (pull_request) Successful in 6s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 10s
E2E API Smoke Test / detect-changes (pull_request) Successful in 10s
E2E Chat / detect-changes (pull_request) Successful in 7s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 8s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 16s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 13s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 1m24s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 1m14s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m5s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 11s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 7s
qa-review / approved (pull_request) Failing after 6s
gate-check-v3 / gate-check (pull_request) Successful in 7s
security-review / approved (pull_request) Failing after 8s
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request) Successful in 6s
sop-tier-check / tier-check (pull_request) Successful in 7s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 3s
Required
Details
E2E Chat / E2E Chat (pull_request) Successful in 5s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 3s
Required
Details
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m26s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 3s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 1m50s
audit-force-merge / audit (pull_request) Waiting to run
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 1m8s
CI / Platform (Go) (pull_request) Successful in 4m26s
CI / Python Lint & Test (pull_request) Successful in 7m32s
CI / Canvas (Next.js) (pull_request) Failing after 9m48s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Failing after 10m3s
Required
Details

Pull request closed

Sign in to join this conversation.
No Reviewers
5 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#1449