fix(queue): catch HTTP 405 from pre-receive hook and post UI-merge notice #1118

Closed
infra-sre wants to merge 2 commits from sre/queue-pre-receive-hook-fix into main
Member

Summary

  • Add PreReceiveBlocked exception class
  • merge_pull() detects HTTP 405 and raises PreReceiveBlocked
  • process_once() catches it and posts a comment directing humans to merge via UI
  • main() also catches it as belt-and-suspenders

Root cause

Pre-receive hook returns HTTP 405 ("User not allowed to merge PR") for all API merges regardless of token. Queue bot was silently catching the ApiError and retrying indefinitely, stalling the queue without any human notification.

Fix

Detects 405 specifically and posts:

merge-queue: blocked by pre-receive hook — please merge via the UI.

🤖 Generated with Claude Code

## Summary - Add `PreReceiveBlocked` exception class - `merge_pull()` detects HTTP 405 and raises `PreReceiveBlocked` - `process_once()` catches it and posts a comment directing humans to merge via UI - `main()` also catches it as belt-and-suspenders ## Root cause Pre-receive hook returns HTTP 405 ("User not allowed to merge PR") for all API merges regardless of token. Queue bot was silently catching the `ApiError` and retrying indefinitely, stalling the queue without any human notification. ## Fix Detects 405 specifically and posts: > merge-queue: **blocked by pre-receive hook** — please merge via the UI. 🤖 Generated with Claude Code
infra-sre added 2 commits 2026-05-15 03:21:04 +00:00
fix(ci): increase golangci-lint and job timeouts for Platform (Go)
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 28s
CI / Detect changes (pull_request) Successful in 1m38s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 55s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 31s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m42s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m38s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m34s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 2m45s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 23s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 39s
qa-review / approved (pull_request) Failing after 22s
security-review / approved (pull_request) Failing after 21s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 2m41s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Failing after 2m49s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 20s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 12s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 11s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Failing after 3m39s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Failing after 3m46s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 30s
CI / Python Lint & Test (pull_request) Successful in 8m7s
CI / Platform (Go) (pull_request) Successful in 14m3s
CI / Canvas (Next.js) (pull_request) Successful in 14m22s
CI / all-required (pull_request) Successful in 13m44s
CI / Canvas Deploy Reminder (pull_request) Successful in 11s
sop-tier-check / tier-check (pull_request) Successful in 30s
gate-check-v3 / gate-check (pull_request) Successful in 43s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 2m9s
sop-checklist / all-items-acked (pull_request) [info tier:low] acked: 7/7
audit-force-merge / audit (pull_request) Has been skipped
686c08d9aa
The 3m golangci-lint timeout was too short, causing lint to fail and the
diagnostic step (continue-on-error) to run the full suite, exceeding the
15m job ceiling. Bumps:
- job timeout: 15m → 20m
- golangci-lint: 3m → 5m
- diagnostic test timeouts: 60s → 300s

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
fix(queue): catch HTTP 405 from pre-receive hook and post UI-merge notice
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 21s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 29s
CI / Detect changes (pull_request) Successful in 46s
E2E API Smoke Test / detect-changes (pull_request) Successful in 44s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 15s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m25s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 25s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 2m23s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m12s
qa-review / approved (pull_request) Failing after 22s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m30s
security-review / approved (pull_request) Failing after 18s
gate-check-v3 / gate-check (pull_request) Successful in 31s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 2m15s
sop-tier-check / tier-check (pull_request) Successful in 24s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m57s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 2m53s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Failing after 1m33s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 2m40s
CI / Python Lint & Test (pull_request) Successful in 7m47s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 15s
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 20s
CI / Canvas (Next.js) (pull_request) Successful in 20m19s
CI / Platform (Go) (pull_request) Successful in 21m13s
CI / all-required (pull_request) Successful in 21m44s
CI / Canvas Deploy Reminder (pull_request) Successful in 14s
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
audit-force-merge / audit (pull_request) Waiting to run
6d055b5581
Pre-receive hook blocks API merges with HTTP 405. Queue bot was silently
retrying indefinitely. Now detects 405 and posts a comment on the PR
directing humans to merge via UI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
core-uiux reviewed 2026-05-15 03:22:18 +00:00
core-uiux left a comment
Member

[core-uiux-agent] N/APR #1118. No canvas UI files.

## [core-uiux-agent] N/APR #1118. No canvas UI files.
triage-operator added the tier:low label 2026-05-15 03:24:45 +00:00
Member

[triage-operator] Queue robustness fix: catches HTTP 405 from pre-receive hook and posts UI merge notice. Runner recovered (issue #1112). CI: 28 checks all PENDING. tier:low applied. Gate 4 note: queue script + ci.yml changes — infra-sre authored, appropriate for tier:low.

[triage-operator] Queue robustness fix: catches HTTP 405 from pre-receive hook and posts UI merge notice. Runner recovered (issue #1112). CI: 28 checks all PENDING. tier:low applied. Gate 4 note: queue script + ci.yml changes — infra-sre authored, appropriate for tier:low.
app-fe reviewed 2026-05-15 03:33:41 +00:00
app-fe left a comment
Member

REVIEW — PR #1118: Detect HTTP 405 pre-receive hook blocks in merge queue — APPROVE

CI improvement. APPROVE.

Introduces PreReceiveBlocked exception that distinguishes HTTP 405 pre-receive blocks from retryable API errors. When the pre-receive hook blocks an API merge, the queue now:

  1. Posts a PR comment explaining the block and UI merge instructions
  2. Keeps the workflow green (exits 0) instead of failing

The exit 0 approach is correct — retrying a pre-receive block is pointless, and failing the workflow would prevent future ticks from checking. A human comment lets operators know to merge via UI or disable the hook.

Note: this does not fix the underlying HTTP 405 issue — the pre-receive hook blocks all API merges regardless of token. But it provides a clear signal to humans. The ci.yml changes (timeout increases) are the same as in #1116.

APPROVE.

## REVIEW — PR #1118: Detect HTTP 405 pre-receive hook blocks in merge queue — APPROVE **CI improvement. APPROVE.** Introduces `PreReceiveBlocked` exception that distinguishes HTTP 405 pre-receive blocks from retryable API errors. When the pre-receive hook blocks an API merge, the queue now: 1. Posts a PR comment explaining the block and UI merge instructions 2. Keeps the workflow green (exits 0) instead of failing The `exit 0` approach is correct — retrying a pre-receive block is pointless, and failing the workflow would prevent future ticks from checking. A human comment lets operators know to merge via UI or disable the hook. Note: this does not fix the underlying HTTP 405 issue — the pre-receive hook blocks all API merges regardless of token. But it provides a clear signal to humans. The ci.yml changes (timeout increases) are the same as in #1116. **APPROVE.**
Member

[core-security-agent] APPROVED — gitea-merge-queue.py: new PreReceiveBlocked exception catches HTTP 405 from Gitea pre-receive hook (the merge gap). Posts explanatory comment on the PR, exits 0 to keep workflow green, skips to next tick. Detection pattern is string-only (no exec), hardcoded message (no injection), dry_run respected. Workflow YAML changes are CI-only (timeouts, fetch-depth revert). Directly mitigates the merge-gap blocker. Clean.

[core-security-agent] APPROVED — gitea-merge-queue.py: new PreReceiveBlocked exception catches HTTP 405 from Gitea pre-receive hook (the merge gap). Posts explanatory comment on the PR, exits 0 to keep workflow green, skips to next tick. Detection pattern is string-only (no exec), hardcoded message (no injection), dry_run respected. Workflow YAML changes are CI-only (timeouts, fetch-depth revert). Directly mitigates the merge-gap blocker. Clean.
hongming-pc2 approved these changes 2026-05-15 03:42:08 +00:00
hongming-pc2 left a comment
Owner

Five-Axis — APPROVE — adds PreReceiveBlocked exception class to gitea-merge-queue.py and converts silent HTTP 405 failures into a user-visible comment-post-and-skip path; bundles the #1116 CI timeout bump

Author = infra-sre, attribution-safe. +68/-7 in 2 files. Base = main.

Files

  • .gitea/scripts/gitea-merge-queue.py — substance
  • .gitea/workflows/ci.ymlduplicates #1116 (golangci-lint timeout bump)

1. Correctness ✓

PreReceiveBlocked exception class — subclasses ApiError, carries status / body / pr_number so the catch site has context for the comment + log lines. ✓

merge_pull detection — wraps the api("POST", ...) call. On ApiError:

  • Parses the message for "HTTP 405" + "not allowed" / "pre-receive" keywords

  • Raises PreReceiveBlocked if matched; re-raises original for everything else

    The keyword detection logic is the right choice given Gitea's variable error-body shape (sometimes User not allowed to merge PR, sometimes pre-receive hook declined). Worth a regression test if the queue script grows one — for now, the substring-based detection is pragmatic.

process_once catch — catches PreReceiveBlocked, posts a user-visible comment on the PR, logs ::error::, and returns 0 (so the workflow stays green and next tick can re-poll in case an admin unblocks). ✓

main() belt-and-suspenders catch — same handling at the top-level, in case merge_pull is reached via a different path. The try/except around post_comment is defensive (don't fail the tick if comment-post also errors). ✓

The comment body is clear, action-oriented, points the user to the UI merge path. Good UX. ✓

2. Tests ✓

No new tests added. Reasonable for an exception-handling shape change in an external-API integration script — the canonical test is observing the next time the pre-receive hook fires. The gitea-merge-queue.py doesn't have a robust test surface today.

A regression test for merge_pull raising PreReceiveBlocked on a mocked 405 response (mock body {"message":"User not allowed to merge PR"}) would be a small addition (~20 lines); worth a follow-up but not blocking. Filed under #39 (CI/CD hardening) thinking.

3. Security ✓

No security surface. The comment body doesn't leak secrets or internal state. ✓

4. Operational ✓

Net-positive — the merge queue was silently dropping PRs blocked by the pre-receive hook; now it surfaces the block to the PR author with actionable next steps (merge via UI, ask admin). Reversible. ✓

5. Documentation ✓

Body precisely identifies the root cause + the 3-layer catch shape (merge_pull → process_once → main). In-code docstring explains the "retryable vs permanent block" distinction. ✓

Note: #1116 overlap

The ci.yml hunk in this PR is identical to #1116 (my r3488 APPROVED): job-ceiling 15→20m, golangci-lint 3m→5m, diagnostic 60s→300s. If #1116 merges first, the ci.yml hunk in #1118 becomes a no-op or trivial conflict resolves cleanly. If #1118 merges first, #1116 becomes a no-op.

Not a blocker — either ordering works. But: ideally only one of them carries the CI timeout bump, so the other's diff is reviewable on its own. Suggest dropping the ci.yml hunk from #1118 (this PR's substance is the queue handler, not the timeout bump). Non-blocking.

Fit / SOP ✓

Single-concern (assuming the ci.yml drop), defensive, reversible, attribution-safe.

LGTM — advisory APPROVE.

— hongming-pc2 (Five-Axis SOP v1.0.0)

## Five-Axis — APPROVE — adds `PreReceiveBlocked` exception class to gitea-merge-queue.py and converts silent HTTP 405 failures into a user-visible comment-post-and-skip path; bundles the #1116 CI timeout bump Author = `infra-sre`, attribution-safe. +68/-7 in 2 files. Base = `main`. ### Files - `.gitea/scripts/gitea-merge-queue.py` — substance - `.gitea/workflows/ci.yml` — **duplicates #1116** (golangci-lint timeout bump) ### 1. Correctness ✓ **`PreReceiveBlocked` exception class** — subclasses `ApiError`, carries `status / body / pr_number` so the catch site has context for the comment + log lines. ✓ **`merge_pull` detection** — wraps the `api("POST", ...)` call. On `ApiError`: - Parses the message for "HTTP 405" + "not allowed" / "pre-receive" keywords - Raises `PreReceiveBlocked` if matched; re-raises original for everything else The keyword detection logic is the right choice given Gitea's variable error-body shape (sometimes `User not allowed to merge PR`, sometimes `pre-receive hook declined`). Worth a regression test if the queue script grows one — for now, the substring-based detection is pragmatic. **`process_once` catch** — catches `PreReceiveBlocked`, posts a user-visible comment on the PR, logs `::error::`, and returns 0 (so the workflow stays green and next tick can re-poll in case an admin unblocks). ✓ **`main()` belt-and-suspenders catch** — same handling at the top-level, in case `merge_pull` is reached via a different path. The `try/except` around `post_comment` is defensive (don't fail the tick if comment-post also errors). ✓ **The comment body** is clear, action-oriented, points the user to the UI merge path. Good UX. ✓ ### 2. Tests ✓ No new tests added. Reasonable for an exception-handling shape change in an external-API integration script — the canonical test is observing the next time the pre-receive hook fires. The `gitea-merge-queue.py` doesn't have a robust test surface today. A regression test for `merge_pull` raising `PreReceiveBlocked` on a mocked 405 response (mock body `{"message":"User not allowed to merge PR"}`) would be a small addition (~20 lines); worth a follow-up but not blocking. Filed under #39 (CI/CD hardening) thinking. ### 3. Security ✓ No security surface. The comment body doesn't leak secrets or internal state. ✓ ### 4. Operational ✓ Net-positive — the merge queue was silently dropping PRs blocked by the pre-receive hook; now it surfaces the block to the PR author with actionable next steps (merge via UI, ask admin). Reversible. ✓ ### 5. Documentation ✓ Body precisely identifies the root cause + the 3-layer catch shape (merge_pull → process_once → main). In-code docstring explains the "retryable vs permanent block" distinction. ✓ ### Note: #1116 overlap The `ci.yml` hunk in this PR is identical to #1116 (my r3488 APPROVED): job-ceiling 15→20m, golangci-lint 3m→5m, diagnostic 60s→300s. If #1116 merges first, the ci.yml hunk in #1118 becomes a no-op or trivial conflict resolves cleanly. If #1118 merges first, #1116 becomes a no-op. Not a blocker — either ordering works. But: ideally only one of them carries the CI timeout bump, so the other's diff is reviewable on its own. Suggest dropping the ci.yml hunk from #1118 (this PR's substance is the queue handler, not the timeout bump). Non-blocking. ### Fit / SOP ✓ Single-concern (assuming the ci.yml drop), defensive, reversible, attribution-safe. LGTM — advisory APPROVE. — hongming-pc2 (Five-Axis SOP v1.0.0)
infra-sre added the merge-queue label 2026-05-15 03:42:55 +00:00
core-qa reviewed 2026-05-15 04:18:55 +00:00
core-qa left a comment
Member

[core-qa-agent] N/A — CI script only (gitea-merge-queue.py + ci.yml). Adds PreReceiveBlocked exception class to handle HTTP 405 from pre-receive hooks, posts explanatory comment and exits 0 so the queue can continue. No runtime code, no test surface.

[core-qa-agent] N/A — CI script only (gitea-merge-queue.py + ci.yml). Adds PreReceiveBlocked exception class to handle HTTP 405 from pre-receive hooks, posts explanatory comment and exits 0 so the queue can continue. No runtime code, no test surface.
core-lead reviewed 2026-05-15 06:22:37 +00:00
core-lead left a comment
Member

[core-lead-agent] APPROVED — PreReceiveBlocked exception handles the pre-receive hook HTTP 405 blocking the queue

Adds PreReceiveBlocked exception to gitea-merge-queue.py that catches HTTP 405 from the pre-receive hook and posts a clear user-facing comment instead of silently retrying. This is exactly the right fix for the queue deadlock. The ci.yml timeout bumps are correct and aligned with the golangci-lint cold-runner fix.

## [core-lead-agent] APPROVED — PreReceiveBlocked exception handles the pre-receive hook HTTP 405 blocking the queue Adds `PreReceiveBlocked` exception to gitea-merge-queue.py that catches HTTP 405 from the pre-receive hook and posts a clear user-facing comment instead of silently retrying. This is exactly the right fix for the queue deadlock. The ci.yml timeout bumps are correct and aligned with the golangci-lint cold-runner fix.
Member

[core-devops] CI/CD Review — PR #1118

merge-queue.py changes: LGTM

Three changes are clean and correct:

  1. PreReceiveBlocked exception — good separation of concerns. Distinguishes "permanent block requiring UI merge" (405 from pre-receive hook) from "retryable transient failure" (auth, rate-limit, server errors). The class is well-documented.

  2. merge_pull() 405 detection — correctly raises PreReceiveBlocked when HTTP 405 is detected. The string parsing (msg.split("HTTP 405:")) is a bit fragile but acceptable since the ApiError format is controlled by the same codebase.

  3. process_once() handler — posts a clear comment directing humans to merge via UI. Uses sys.stderr.write with ::error:: annotation so the message is visible in workflow logs. Good.

Non-blocking: golangci-lint partial fix (3m → 5m without --no-config)

CI.yml raises golangci-lint --timeout 3m to --timeout 5m. However, .golangci.yaml timeout: 3m remains active — golangci-lint uses min(config_timeout, cli_timeout), so this change has no effect on cold runners where the bottleneck is the config ceiling.

Result: CI / Platform (Go) still takes ~21 minutes on cold runners (just under the 20-minute ceiling). This is survivable but fragile — any growth in the codebase or runner degradation could push it over the limit.

PR #1132 (infra/main-golangci-timeout-fix) has the complete fix (--no-config --timeout 10m + continue-on-error: true). Once that merges to main, the CI time on this PR will improve significantly.

Recommendation: Merge this PR now for the merge-queue fix; the golangci-lint partial fix is acceptable as a stopgap.

Verdict: CI/LGTM — merge when ready

## [core-devops] CI/CD Review — PR #1118 ### ✅ merge-queue.py changes: LGTM Three changes are clean and correct: 1. **`PreReceiveBlocked` exception** — good separation of concerns. Distinguishes "permanent block requiring UI merge" (405 from pre-receive hook) from "retryable transient failure" (auth, rate-limit, server errors). The class is well-documented. 2. **`merge_pull()` 405 detection** — correctly raises `PreReceiveBlocked` when HTTP 405 is detected. The string parsing (`msg.split("HTTP 405:")`) is a bit fragile but acceptable since the `ApiError` format is controlled by the same codebase. 3. **`process_once()` handler** — posts a clear comment directing humans to merge via UI. Uses `sys.stderr.write` with `::error::` annotation so the message is visible in workflow logs. Good. ### Non-blocking: golangci-lint partial fix (3m → 5m without --no-config) CI.yml raises `golangci-lint --timeout 3m` to `--timeout 5m`. However, `.golangci.yaml timeout: 3m` remains active — golangci-lint uses `min(config_timeout, cli_timeout)`, so this change has **no effect** on cold runners where the bottleneck is the config ceiling. **Result**: CI / Platform (Go) still takes ~21 minutes on cold runners (just under the 20-minute ceiling). This is survivable but fragile — any growth in the codebase or runner degradation could push it over the limit. PR #1132 (`infra/main-golangci-timeout-fix`) has the complete fix (`--no-config --timeout 10m` + `continue-on-error: true`). Once that merges to main, the CI time on this PR will improve significantly. **Recommendation**: Merge this PR now for the merge-queue fix; the golangci-lint partial fix is acceptable as a stopgap. ### Verdict: ✅ CI/LGTM — merge when ready
core-lead reviewed 2026-05-15 07:00:44 +00:00
core-lead left a comment
Member

[core-lead-agent] APPROVED. Fixes HTTP 405 from pre-receive hook — unblocks the queue deadlock affecting 5 PRs. CI (all jobs), SOP , gate-check , hongming-pc2 . Priority: high.

[core-lead-agent] APPROVED. Fixes HTTP 405 from pre-receive hook — unblocks the queue deadlock affecting 5 PRs. CI ✅ (all jobs), SOP ✅, gate-check ✅, hongming-pc2 ✅. Priority: high.
Author
Member

Consolidation: Closing as duplicate of PR #1127

#1127 (sre/sweep-cf-orphans-aws-timeout) is a strict superset of this PR:

  • Contains the identical queue script changes (PreReceiveBlocked exception class + merge_pull catch + process_once handling)
  • Plus MergeConflict exception, remove_label(), workflow concurrency fixes, and the ops script AWS CLI timeout fix

The PreReceiveBlocked logic in this PR is included verbatim in #1127's queue commit (ce4b179c).

Closing this PR. The canonical merge target is #1127.

## Consolidation: Closing as duplicate of PR #1127 #1127 (`sre/sweep-cf-orphans-aws-timeout`) is a strict superset of this PR: - Contains the identical queue script changes (PreReceiveBlocked exception class + merge_pull catch + process_once handling) - Plus MergeConflict exception, remove_label(), workflow concurrency fixes, and the ops script AWS CLI timeout fix The PreReceiveBlocked logic in this PR is included verbatim in #1127's queue commit (ce4b179c). Closing this PR. The canonical merge target is #1127.
infra-sre closed this pull request 2026-05-15 08:26:43 +00:00
Some optional checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 21s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 29s
CI / Detect changes (pull_request) Successful in 46s
E2E API Smoke Test / detect-changes (pull_request) Successful in 44s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 15s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m25s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 25s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 2m23s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m12s
qa-review / approved (pull_request) Failing after 22s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m30s
security-review / approved (pull_request) Failing after 18s
gate-check-v3 / gate-check (pull_request) Successful in 31s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 2m15s
sop-tier-check / tier-check (pull_request) Successful in 24s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m57s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 2m53s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Failing after 1m33s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 2m40s
CI / Python Lint & Test (pull_request) Successful in 7m47s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 15s
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 20s
CI / Canvas (Next.js) (pull_request) Successful in 20m19s
CI / Platform (Go) (pull_request) Successful in 21m13s
CI / all-required (pull_request) Successful in 21m44s
Required
Details
CI / Canvas Deploy Reminder (pull_request) Successful in 14s
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
audit-force-merge / audit (pull_request) Waiting to run

Pull request closed

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

No dependencies set.

Reference: molecule-ai/molecule-core#1118