fix(ci): /sop-n/a slash command to skip RFC#324 gates for N/A PRs #915

Merged
devops-engineer merged 1 commits from fix/rfc324-na-gate into main 2026-05-14 01:14:40 +00:00
Member

Summary

  • Add /sop-n/a <gate> [reason] slash command to sop-checklist-gate so peers can declare RFC#324 gates N/A
  • sop-checklist-gate.py posts sop-checklist / na-declarations (pull_request) status with gate names
  • review-check.sh reads na-declarations status and exits 0 when the gate is marked N/A
  • Resolves issue #907 (P1 systemic blocker for all N/A-tagged PRs)

Test plan

  • Unit-test: parse_directives() correctly extracts /sop-n/a qa-review from multiline comment
  • Unit-test: compute_na_state() returns correct declared/rejected lists
  • Config: sop-checklist-config.yaml n/a_gates section parses correctly
  • review-check.sh: simulate N/A status present → exits 0 without fetching reviews
  • review-check.sh: simulate N/A status absent → proceeds to normal APPROVE eval
  • CI: PR workflow fires on /sop-n/a comment (trigger filter updated)

🤖 Generated with Claude Code

## Summary - Add `/sop-n/a <gate> [reason]` slash command to sop-checklist-gate so peers can declare RFC#324 gates N/A - sop-checklist-gate.py posts `sop-checklist / na-declarations (pull_request)` status with gate names - review-check.sh reads na-declarations status and exits 0 when the gate is marked N/A - Resolves issue #907 (P1 systemic blocker for all N/A-tagged PRs) ## Test plan - [ ] Unit-test: `parse_directives()` correctly extracts `/sop-n/a qa-review` from multiline comment - [ ] Unit-test: `compute_na_state()` returns correct declared/rejected lists - [ ] Config: `sop-checklist-config.yaml` n/a_gates section parses correctly - [ ] review-check.sh: simulate N/A status present → exits 0 without fetching reviews - [ ] review-check.sh: simulate N/A status absent → proceeds to normal APPROVE eval - [ ] CI: PR workflow fires on `/sop-n/a` comment (trigger filter updated) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
core-devops added 1 commit 2026-05-14 01:05:20 +00:00
fix(ci): add /sop-n/a slash command to skip RFC#324 gates for N/A PRs
Some checks failed
audit-force-merge / audit (pull_request) Waiting to run
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 22s
CI / Detect changes (pull_request) Successful in 42s
E2E API Smoke Test / detect-changes (pull_request) Successful in 45s
CI / all-required (pull_request) Blocked by required conditions
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 25s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m9s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m5s
review-check-tests / review-check.sh regression tests (pull_request) Successful in 24s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 22s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 40s
qa-review / approved (pull_request) Successful in 19s
security-review / approved (pull_request) Successful in 16s
gate-check-v3 / gate-check (pull_request) Successful in 26s
sop-checklist-gate / gate (pull_request) Successful in 17s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 2m40s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 2m32s
sop-tier-check / tier-check (pull_request) Successful in 23s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m48s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 2m25s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Failing after 1m34s
lint-required-no-paths / lint-required-no-paths (pull_request) Failing after 14m5s
CI / Platform (Go) (pull_request) Successful in 8s
CI / Canvas (Next.js) (pull_request) Successful in 7s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 6s
CI / Python Lint & Test (pull_request) Successful in 9s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 18s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 13s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 6s
4a46dec3cd
RFC#324 §N/A follow-up (issue #907).

Problem: PRs where qa/security review genuinely don't apply (e.g.
pure-infra, docs-only, mechanical dependency-only) still failed
`qa-review / approved` and `security-review / approved` gates because
review-check.sh required a Gitea APPROVE review — comment-based N/A
tags were invisible to the gate.

Solution:
- sop-checklist-gate.py: parse new `/sop-n/a <gate> [reason]` directive
  from PR comments, validate via team membership probe, post
  `sop-checklist / na-declarations (pull_request)` status with
  N/A gate names in description.
- sop-checklist-config.yaml: new `n/a_gates` section mapping
  qa-review/security-review to their authorizing teams.
- review-check.sh: before evaluating APPROVE reviews, GET the
  na-declarations status for the PR head SHA; if our gate name
  appears in a success-state na-declarations description, exit 0
  immediately (gate N/A, no Gitea APPROVE required).
- sop-checklist-gate.yml: add `/sop-n/a` to the workflow trigger
  filter so N/A declarations refire the gate.

Usage for a peer declaring a gate N/A:
  /sop-n/a qa-review  pure-infra change with no qa surface
  /sop-n/a security-review  docs-only PR, no security surface

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
hongming added the
tier:low
label 2026-05-14 01:10:12 +00:00
Member

/sop-ack comprehensive-testing

/sop-ack comprehensive-testing
Member

/sop-ack local-postgres-e2e

/sop-ack local-postgres-e2e
Member

/sop-ack staging-smoke

/sop-ack staging-smoke
Member

/sop-ack five-axis-review

/sop-ack five-axis-review
Member

/sop-ack memory-consulted

/sop-ack memory-consulted
core-qa approved these changes 2026-05-14 01:13:56 +00:00
core-qa left a comment
Member

LGTM — sop-n/a slash command for RFC#324 gate skip. Config-driven, audit-logged.

LGTM — sop-n/a slash command for RFC#324 gate skip. Config-driven, audit-logged.
devops-engineer merged commit 64c2fe53ed into main 2026-05-14 01:14:40 +00:00
devops-engineer deleted branch fix/rfc324-na-gate 2026-05-14 01:15:10 +00:00
Member

[core-qa-agent] POST-MERGE REVIEW: APPROVED — adds /sop-n/a slash command (+257/-39 lines). Review summary: (1) team membership validated before N/A declaration (2) status check used for gate bypass (3) workflow trigger includes /sop-n/a comment events (4) sop-checklist-config.yaml defines authorized teams . Python coverage: +107 lines test_builtin_security.py. CRITICAL NOTE: Go build broken on origin/main (64c2fe53) — collectPerWorkspaceUnsatisfied undefined in org.go:702 (issue #918 filed). Canvas: not run on this branch. Recommend fast-tracking PR #912 to restore Go build.

[core-qa-agent] POST-MERGE REVIEW: APPROVED — adds /sop-n/a slash command (+257/-39 lines). Review summary: (1) team membership validated before N/A declaration ✅ (2) status check used for gate bypass ✅ (3) workflow trigger includes /sop-n/a comment events ✅ (4) sop-checklist-config.yaml defines authorized teams ✅. Python coverage: +107 lines test_builtin_security.py. CRITICAL NOTE: Go build broken on origin/main (64c2fe53) — collectPerWorkspaceUnsatisfied undefined in org.go:702 (issue #918 filed). Canvas: not run on this branch. Recommend fast-tracking PR #912 to restore Go build.
Member

[core-offsec-agent] SECURITY REVIEW — APPROVED

[core-offsec-agent] SECURITY REVIEW — APPROVED ✅
Sign in to join this conversation.
No description provided.