ci(platform): gate E2E tests behind ci-ready PR label - #12616
Conversation
The big-boi runner costs $1400/month. Gate E2E tests behind a `ci-ready` label so they only run when a PR is actually ready for full CI. A new `e2e-label-gate` job fails immediately on PRs without the label, preventing merge via the existing "Check PR Status" aggregator. Push and merge_group events bypass the gate so master/dev CI is unaffected. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughExpanded PR triggers to include Changes
Sequence Diagram(s)sequenceDiagram
participant Contributor as Contributor
participant GitHub as GitHub Actions
participant Gate as e2e-label-gate
participant E2E as e2e_test
Contributor->>GitHub: open/synchronize/reopen/label PR
GitHub->>Gate: start e2e-label-gate
alt PR has `ci-ready`
Gate->>GitHub: success
GitHub->>E2E: start e2e_test (depends on gate)
E2E->>GitHub: run E2E jobs
else PR missing `ci-ready`
Gate->>GitHub: fail (block E2E)
end
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
/review |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/workflows/platform-fullstack-ci.yml (1)
12-12: Consider limiting workflow triggers for thelabeledevent.Adding
labeledtriggers the workflow when any label is added to the PR, not justci-ready. This means applying unrelated labels (e.g.,documentation,bug, etc.) will trigger a workflow run that immediately fails at the gate ifci-readyis absent—consuming runner time and cluttering the checks list.Consider using a workflow-level condition or the
unlabeledevent to avoid redundant runs:Option: Add top-level condition to short-circuit on irrelevant labels
You could add a reusable condition or an early-exit job that checks if the label event is relevant:
# At workflow level, you cannot filter by label name directly, # but you can add a quick check in the e2e-label-gate job: - name: Skip if label event but not ci-ready label if: >- github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name != 'ci-ready' run: | echo "Skipping: labeled event was not for 'ci-ready'" exit 0🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/platform-fullstack-ci.yml at line 12, The workflow is firing on any PR label; modify the relevant job (e.g., the e2e-label-gate job) to short-circuit when the event is a pull_request 'labeled' action but the label is not 'ci-ready' by adding an if-condition that checks github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name != 'ci-ready' and exits early (returns success) so unrelated label additions don't run the full workflow.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In @.github/workflows/platform-fullstack-ci.yml:
- Line 12: The workflow is firing on any PR label; modify the relevant job
(e.g., the e2e-label-gate job) to short-circuit when the event is a pull_request
'labeled' action but the label is not 'ci-ready' by adding an if-condition that
checks github.event_name == 'pull_request' && github.event.action == 'labeled'
&& github.event.label.name != 'ci-ready' and exits early (returns success) so
unrelated label additions don't run the full workflow.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 39af8127-f9cb-49fa-963f-34b6a924da46
📒 Files selected for processing (2)
.github/workflows/platform-fullstack-ci.yml.github/workflows/repo-workflow-checker.yml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
- GitHub Check: check API types
- GitHub Check: Seer Code Review
- GitHub Check: Cursor Bugbot
- GitHub Check: conflicts
- GitHub Check: Analyze (python)
- GitHub Check: Check PR Status
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/src/tests/CLAUDE.md:0-0
Timestamp: 2026-01-28T18:29:34.362Z
Learning: Applies to autogpt_platform/frontend/src/tests/src/tests/**/*.spec.ts : Place E2E tests (Playwright) in a centralized location for critical user journeys
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/CLAUDE.md:0-0
Timestamp: 2026-03-25T06:58:59.806Z
Learning: Applies to autogpt_platform/.github/PULL_REQUEST_TEMPLATE.md : Fill out the .github/PULL_REQUEST_TEMPLATE.md template for all PR descriptions
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/src/tests/CLAUDE.md:0-0
Timestamp: 2026-01-28T18:29:34.362Z
Learning: Applies to autogpt_platform/frontend/src/tests/src/tests/**/*.spec.ts : Use E2E tests (Playwright) for authentication flows (login, signup, logout) that MUST work in a real browser
📚 Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Rely on pre-commit checks for linting and formatting in pull requests
Applied to files:
.github/workflows/repo-workflow-checker.yml
📚 Learning: 2026-03-23T06:51:32.535Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12440
File: autogpt_platform/backend/backend/api/features/workflow_import.py:0-0
Timestamp: 2026-03-23T06:51:32.535Z
Learning: In Significant-Gravitas/AutoGPT PR `#12440`, the dedicated REST endpoint `/api/import/workflow` (and its earlier form `/api/import/competitor-workflow`) for external workflow import was removed across commits 30f801a5e, 374c8cfdb, and 732960e2d. The final architecture is a frontend-only flow: file upload is handled client-side, and URL fetching (for n8n templates) uses a Next.js server action (`fetchWorkflowFromUrl`) — there is no dedicated backend HTTP endpoint and no CoPilot tool invocation for workflow import. Do not expect or require a standalone HTTP endpoint, route-level integration tests, or a CoPilot `import_workflow` tool for workflow import in this repository.
Applied to files:
.github/workflows/platform-fullstack-ci.yml
📚 Learning: 2026-02-26T17:02:34.195Z
Learnt from: Pwuts
Repo: Significant-Gravitas/AutoGPT PR: 12211
File: .pre-commit-config.yaml:160-179
Timestamp: 2026-02-26T17:02:34.195Z
Learning: In `.pre-commit-config.yaml`, the `sync-api-types` hook intentionally uses the broad file pattern `^autogpt_platform/backend/` (not narrowed to just `backend/api/`) because the OpenAPI schema is generated by importing the FastAPI app and depends on Pydantic models across many directories: `backend/data/`, `backend/blocks/`, `backend/copilot/`, `backend/integrations/`, and `backend/util/`. Narrowing would risk missing schema changes and causing frontend type desync.
Applied to files:
.github/workflows/platform-fullstack-ci.yml
🪛 actionlint (1.7.11)
.github/workflows/platform-fullstack-ci.yml
[error] 166-166: label "big-boi" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
🔇 Additional comments (3)
.github/workflows/repo-workflow-checker.yml (1)
4-4: LGTM!Adding the
labeledevent type ensures the PR status checker re-runs when theci-readylabel is applied, which is necessary to verify workflow status after the label gate is satisfied..github/workflows/platform-fullstack-ci.yml (2)
146-162: LGTM!The label gate logic is correct:
- PRs without
ci-ready→ fail with a clear error message- PRs with
ci-readyor non-PR events (push/merge_group) → passThe two conditions are mutually exclusive and exhaustive, ensuring exactly one step executes.
166-167: LGTM! Static analysis flag is a false positive.The dependency on
e2e-label-gatecorrectly gates the expensivebig-boirunner usage behind the label check.Regarding the actionlint warning about the
big-boilabel: this is a self-hosted runner label (as noted in the PR description regarding the $1400/month runner cost). To suppress this warning in future runs, you can configureactionlint.yamlwith custom runner labels:self-hosted-runner: labels: - big-boi
When a non-ci-ready label is added to a PR, skip the gate entirely (conclusion: skipped) instead of failing. This prevents irrelevant labels from blocking the PR via the "Check PR Status" aggregator. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
🤖 Addressed CodeRabbit nitpick in a87d95c: added job-level |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/workflows/platform-fullstack-ci.yml (1)
12-12: Consider addingunlabeledto keep gate state in sync after label removal.If
ci-readyis removed later, this workflow won’t retrigger today. Addingunlabeledkeeps enforcement aligned with the PR’s current labels.Suggested tweak
- types: [opened, synchronize, reopened, labeled] + types: [opened, synchronize, reopened, labeled, unlabeled]🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/platform-fullstack-ci.yml at line 12, The workflow's GitHub event types list (the array starting with "types: [opened, synchronize, reopened, labeled]") should include "unlabeled" so the job re-runs when labels like "ci-ready" are removed; update that array to ["opened", "synchronize", "reopened", "labeled", "unlabeled"] to keep gate state in sync with current PR labels.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In @.github/workflows/platform-fullstack-ci.yml:
- Line 12: The workflow's GitHub event types list (the array starting with
"types: [opened, synchronize, reopened, labeled]") should include "unlabeled" so
the job re-runs when labels like "ci-ready" are removed; update that array to
["opened", "synchronize", "reopened", "labeled", "unlabeled"] to keep gate state
in sync with current PR labels.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: deb87a32-bafc-4748-86ee-1df698538ac1
📒 Files selected for processing (1)
.github/workflows/platform-fullstack-ci.yml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
- GitHub Check: check API types
- GitHub Check: Seer Code Review
- GitHub Check: conflicts
- GitHub Check: Cursor Bugbot
- GitHub Check: Analyze (typescript)
- GitHub Check: Analyze (python)
- GitHub Check: Check PR Status
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12356
File: autogpt_platform/backend/backend/copilot/constants.py:9-12
Timestamp: 2026-03-10T08:39:22.025Z
Learning: In Significant-Gravitas/AutoGPT PR `#12356`, the `COPILOT_SYNTHETIC_ID_PREFIX = "copilot-"` check in `create_auto_approval_record` (human_review.py) is intentional and safe. The `graph_exec_id` passed to this function comes from server-side `PendingHumanReview` DB records (not from user input); the API only accepts `node_exec_id` from users. Synthetic `copilot-*` IDs are only ever created server-side in `run_block.py`. The prefix skip avoids a DB lookup for a `AgentGraphExecution` record that legitimately does not exist for CoPilot sessions, while `user_id` scoping is enforced at the auth layer and on the resulting auto-approval record.
Learnt from: ntindle
Repo: Significant-Gravitas/AutoGPT PR: 12536
File: autogpt_platform/frontend/src/app/api/openapi.json:5770-5790
Timestamp: 2026-03-24T21:25:15.983Z
Learning: Repo: Significant-Gravitas/AutoGPT — PR `#12536`
File: autogpt_platform/frontend/src/app/api/openapi.json
Learning: The OpenAPI spec file is auto-generated; per established convention, endpoints generally declare only 200/201, 401, and 422 responses. Do not suggest adding explicit 403/404 response entries for single operations unless planning a repo-wide spec update. Prefer clarifying such behaviors in endpoint descriptions/docstrings instead of altering response maps.
Learnt from: Pwuts
Repo: Significant-Gravitas/AutoGPT PR: 12284
File: autogpt_platform/frontend/src/app/api/openapi.json:11897-11900
Timestamp: 2026-03-04T23:58:18.476Z
Learning: Repo: Significant-Gravitas/AutoGPT — PR `#12284`
Backend/frontend OpenAPI codegen convention: In backend/api/features/store/model.py, the StoreSubmission and StoreSubmissionAdminView models define submitted_at: datetime | None, changes_summary: str | None, and instructions: str | None with no default. This is intentional to produce “required but nullable” fields in OpenAPI (properties appear in required[] and use anyOf [type, null]). This matches Prisma’s submittedAt DateTime? and changesSummary String?. Do not flag this as a required/nullable mismatch.
📚 Learning: 2026-03-23T06:51:32.535Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12440
File: autogpt_platform/backend/backend/api/features/workflow_import.py:0-0
Timestamp: 2026-03-23T06:51:32.535Z
Learning: In Significant-Gravitas/AutoGPT PR `#12440`, the dedicated REST endpoint `/api/import/workflow` (and its earlier form `/api/import/competitor-workflow`) for external workflow import was removed across commits 30f801a5e, 374c8cfdb, and 732960e2d. The final architecture is a frontend-only flow: file upload is handled client-side, and URL fetching (for n8n templates) uses a Next.js server action (`fetchWorkflowFromUrl`) — there is no dedicated backend HTTP endpoint and no CoPilot tool invocation for workflow import. Do not expect or require a standalone HTTP endpoint, route-level integration tests, or a CoPilot `import_workflow` tool for workflow import in this repository.
Applied to files:
.github/workflows/platform-fullstack-ci.yml
📚 Learning: 2026-02-26T17:02:34.195Z
Learnt from: Pwuts
Repo: Significant-Gravitas/AutoGPT PR: 12211
File: .pre-commit-config.yaml:160-179
Timestamp: 2026-02-26T17:02:34.195Z
Learning: In `.pre-commit-config.yaml`, the `sync-api-types` hook intentionally uses the broad file pattern `^autogpt_platform/backend/` (not narrowed to just `backend/api/`) because the OpenAPI schema is generated by importing the FastAPI app and depends on Pydantic models across many directories: `backend/data/`, `backend/blocks/`, `backend/copilot/`, `backend/integrations/`, and `backend/util/`. Narrowing would risk missing schema changes and causing frontend type desync.
Applied to files:
.github/workflows/platform-fullstack-ci.yml
🪛 actionlint (1.7.11)
.github/workflows/platform-fullstack-ci.yml
[error] 167-167: label "big-boi" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
🔇 Additional comments (2)
.github/workflows/platform-fullstack-ci.yml (2)
146-164: Gate logic is solid and aligns with intent.Good split between job-level skip logic and step-level fail/pass checks. This cleanly blocks unlabeled PRs while avoiding failures for unrelated
labeledevents.
168-168:needswiring is correct for cost control.Tying
e2e_testtoe2e-label-gateenforces the label gate before the expensive runner is consumed.
|
Labeled events share the same concurrency group as synchronize events. Without this fix, adding any label to a PR would cancel in-progress E2E tests on the big-boi runner. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The job-level `if` that skipped the gate on non-ci-ready label events created a bypass: skipped jobs produce a `skipped` conclusion, which the status checker treats as passing. Adding any random label would override a previous gate failure, unblocking the PR without ci-ready. Revert to always running the gate. Irrelevant labels will cause the gate to fail (cosmetic noise), but the alternative is a security bypass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
🔍 PR Overlap DetectionThis check compares your PR against all other open PRs targeting the same branch to detect potential merge conflicts early. 🔴 Merge Conflicts DetectedThe following PRs have been tested and will have merge conflicts if merged after this PR. Consider coordinating with the authors.
🟢 Low Risk — File Overlap OnlyThese PRs touch the same files but different sections (click to expand)
Summary: 6 conflict(s), 0 medium risk, 2 low risk (out of 8 PRs with file overlap) Auto-generated on push. Ignores: |
The workflow default working-directory is autogpt_platform/frontend, but the gate job doesn't check out the repo. Bash fails before running echo because the directory doesn't exist. Override to . for this job. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…cant-Gravitas/AutoGPT into ci/gate-e2e-behind-label
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/platform-fullstack-ci.yml:
- Around line 146-166: Update the e2e-label-gate job to only trigger on the PR
"labeled" action for the ci-ready label by adding a job-level if that allows the
job to run when the event is not a pull_request OR when github.event.action ==
'labeled' and github.event.label.name == 'ci-ready'; modify the job-level
condition for e2e-label-gate (instead of relying only on the steps) so the
existing steps "Check for ci-ready label" and "Label present or not a PR" only
run when the event is the ci-ready labeling event (keep the current step logic
unchanged).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: d0b163c7-2a23-4b72-bad8-d4407c6e7201
📒 Files selected for processing (1)
.github/workflows/platform-fullstack-ci.yml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
- GitHub Check: check API types
- GitHub Check: end-to-end tests
- GitHub Check: Seer Code Review
- GitHub Check: Cursor Bugbot
- GitHub Check: Check PR Status
- GitHub Check: Analyze (python)
- GitHub Check: Analyze (typescript)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12356
File: autogpt_platform/backend/backend/copilot/constants.py:9-12
Timestamp: 2026-03-10T08:39:22.025Z
Learning: In Significant-Gravitas/AutoGPT PR `#12356`, the `COPILOT_SYNTHETIC_ID_PREFIX = "copilot-"` check in `create_auto_approval_record` (human_review.py) is intentional and safe. The `graph_exec_id` passed to this function comes from server-side `PendingHumanReview` DB records (not from user input); the API only accepts `node_exec_id` from users. Synthetic `copilot-*` IDs are only ever created server-side in `run_block.py`. The prefix skip avoids a DB lookup for a `AgentGraphExecution` record that legitimately does not exist for CoPilot sessions, while `user_id` scoping is enforced at the auth layer and on the resulting auto-approval record.
📚 Learning: 2026-03-23T06:51:32.535Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12440
File: autogpt_platform/backend/backend/api/features/workflow_import.py:0-0
Timestamp: 2026-03-23T06:51:32.535Z
Learning: In Significant-Gravitas/AutoGPT PR `#12440`, the dedicated REST endpoint `/api/import/workflow` (and its earlier form `/api/import/competitor-workflow`) for external workflow import was removed across commits 30f801a5e, 374c8cfdb, and 732960e2d. The final architecture is a frontend-only flow: file upload is handled client-side, and URL fetching (for n8n templates) uses a Next.js server action (`fetchWorkflowFromUrl`) — there is no dedicated backend HTTP endpoint and no CoPilot tool invocation for workflow import. Do not expect or require a standalone HTTP endpoint, route-level integration tests, or a CoPilot `import_workflow` tool for workflow import in this repository.
Applied to files:
.github/workflows/platform-fullstack-ci.yml
📚 Learning: 2026-02-26T17:02:34.195Z
Learnt from: Pwuts
Repo: Significant-Gravitas/AutoGPT PR: 12211
File: .pre-commit-config.yaml:160-179
Timestamp: 2026-02-26T17:02:34.195Z
Learning: In `.pre-commit-config.yaml`, the `sync-api-types` hook intentionally uses the broad file pattern `^autogpt_platform/backend/` (not narrowed to just `backend/api/`) because the OpenAPI schema is generated by importing the FastAPI app and depends on Pydantic models across many directories: `backend/data/`, `backend/blocks/`, `backend/copilot/`, `backend/integrations/`, and `backend/util/`. Narrowing would risk missing schema changes and causing frontend type desync.
Applied to files:
.github/workflows/platform-fullstack-ci.yml
🪛 actionlint (1.7.11)
.github/workflows/platform-fullstack-ci.yml
[error] 169-169: label "big-boi" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
🔇 Additional comments (2)
.github/workflows/platform-fullstack-ci.yml (2)
12-22: Good trigger/concurrency update for label-driven reruns.Including
pull_request:labeledand exempting labeled events from cancellation is the right setup for re-triggering without killing in-flight runs.
170-170:e2e_testdependency on the label gate is correctly wired.This ensures the expensive runner is only used after gate authorization.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit bc91295. Configure here.
- Add `unlabeled` to pull_request triggers in both platform-fullstack-ci and repo-workflow-checker so removing `ci-ready` re-runs the gate (which fails) and Check PR Status, closing the label-removal bypass. - Exclude `unlabeled` from cancel-in-progress for consistency with `labeled` (label churn shouldn't cancel in-progress big-boi runs). - Rename the awkward "Label present or not a PR" step to "Authorize E2E tests". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MpEMRAqCLxxbPA5EAv7MRQ
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #12616 +/- ##
==========================================
- Coverage 74.71% 74.69% -0.03%
==========================================
Files 2537 2537
Lines 192315 192311 -4
Branches 18925 18926 +1
==========================================
- Hits 143697 143647 -50
- Misses 44493 44535 +42
- Partials 4125 4129 +4
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
Ready for re-review @Pwuts — addressed your three comments and rebased on latest
Also closed the bot-flagged label-removal bypass: added CI is green (31 passing) and all review threads are resolved. |
…carryforward)" This reverts commit fd3d6d6.
|
This pull request has conflicts with the base branch, please resolve those so we can evaluate the pull request. |

Summary
ci-readylabel gate to avoid running expensive Playwright E2E tests on thebig-boirunner ($1400/month) until a PR is actually readye2e-label-gatejob fails immediately on PRs missing the label, blocking merge via the existing "Check PR Status" aggregatorlabeled/unlabeledtriggers to bothplatform-fullstack-ci.ymlandrepo-workflow-checker.ymlso adding the label re-triggers CI without a new commit — and removingci-readyre-runs the gate (which then fails) and re-blocks the PRTest plan
autogpt_platform/withoutci-readylabel — "E2E label gate" fails, "end-to-end tests" is skipped, "Check PR Status" failsci-readylabel — both workflows re-trigger, gate passes, E2E runs on big-boici-readyfrom a previously-passing PR — gate re-runs, fails, and "Check PR Status" blocks merge again🤖 Generated with Claude Code
Note
Low Risk
Changes are limited to GitHub Actions workflow configuration; no application, auth, or data-path code is modified.
Overview
Platform full-stack CI now requires a
ci-readylabel on pull requests before expensive Playwright E2E runs on thebig-boirunner. A newe2e-label-gatejob fails fast when the label is missing;e2e_testdepends on it so E2E is skipped/blocked until the label is present. Push tomaster/devand merge queue runs bypass the label check.Workflow triggers and concurrency were updated so
labeled/unlabeledevents re-run CI when the label is added or removed, without canceling in-progress runs for those events. The repo PR Status Checker workflow listens for the same label events so aggregate status updates whenci-readytoggles.A trivial backend README title line was added (unrelated to CI behavior).
Reviewed by Cursor Bugbot for commit 122d30a. Bugbot is set up for automated code reviews on this repo. Configure here.