Skip to content

cleanup(backend/data): drop pre-cluster REDIS_HOST/RABBITMQ_HOST env fallbacks - #12949

Closed
majdyz wants to merge 2 commits into
devfrom
cleanup/drop-pre-cluster-redis-rabbitmq-host-fallback
Closed

cleanup(backend/data): drop pre-cluster REDIS_HOST/RABBITMQ_HOST env fallbacks#12949
majdyz wants to merge 2 commits into
devfrom
cleanup/drop-pre-cluster-redis-rabbitmq-host-fallback

Conversation

@majdyz

@majdyz majdyz commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

Background

The Redis Cluster migration (#12900) shipped dual-read fallbacks so old-image pods could keep reading the unsuffixed REDIS_HOST / RABBITMQ_HOST while we rolled out the cluster-image. That rolling-deploy window has long closed:

The fallback path is dead surface — kept around it would just rot and confuse future readers (and trip the next address_remap change, since it can silently grab a stale REDIS_HOST if something puts one back).

Changes

  • backend/data/redis_client.py — drop the os.getenv("REDIS_CLUSTER_HOST") or os.getenv("REDIS_HOST", ...) chain; cluster envs only.
  • backend/util/settings.py — replace AliasChoices("RABBITMQ_CLUSTER_HOST", "RABBITMQ_HOST") (and the redis equivalent) with single-string aliases on rabbitmq_host/port and redis_host/port. AliasChoices import removed (no other call sites).
  • backend/.env.defaultREDIS_HOST / REDIS_PORT -> REDIS_CLUSTER_HOST / REDIS_CLUSTER_PORT so contributors set the canonical name.
  • docker-compose.platform.yml — same rename in the shared x-backend-env block (REDIS_HOST: redis-0 -> REDIS_CLUSTER_HOST: redis-0, RABBITMQ_HOST: rabbitmq -> RABBITMQ_CLUSTER_HOST: rabbitmq).
  • .github/workflows/platform-backend-ci.yml — same rename in the unit-test job env block.
  • backend/data/e2e_redis_restart_test.pymonkeypatch.setenv only sets the cluster envs now.
  • backend/copilot/bot/README.md — env-var docs updated to REDIS_CLUSTER_HOST / REDIS_CLUSTER_PORT.

Behaviour

No production behaviour change. Every caller already reads *_CLUSTER_HOST first; this PR just deletes the never-hit fallback.

Test plan

  • poetry run ruff check + ruff format --check clean on all touched .py files.
  • CI: platform-backend-ci runs the focused redis/rabbit unit tests + e2e_redis_restart_test against the new env names. (Local pytest collection currently blocked by sibling agents holding the shared .venv; relying on CI here.)
  • Dev preview deploy lands on a cluster-image stack and the rest_server connects to redis-cluster + rabbit-cluster via *_CLUSTER_HOST only.

…fallbacks

The Redis Cluster migration (#12900) shipped dual-read fallbacks so old-image
pods could keep reading the unsuffixed REDIS_HOST/RABBITMQ_HOST during the
rolling deploy. The rollout window has long closed: shared-config no longer
exposes those vars and every pod is on the cluster image.

This removes the now-dead surface:
- backend/data/redis_client.py: drop the REDIS_HOST/PORT `or` fallback.
- backend/util/settings.py: drop the AliasChoices(_HOST, _CLUSTER_HOST)
  multi-alias on rabbitmq_host/port and redis_host/port.
- backend/.env.default: rename REDIS_HOST/PORT -> REDIS_CLUSTER_HOST/PORT so
  local dev uses the canonical names.
- docker-compose.platform.yml: same rename for the in-network backend env.
- .github/workflows/platform-backend-ci.yml: same rename for the test job env.
- backend/data/e2e_redis_restart_test.py: stop monkeypatching the legacy
  REDIS_HOST/PORT alongside REDIS_CLUSTER_HOST/PORT.
- backend/copilot/bot/README.md: update the env-var doc to the cluster names.

No runtime behaviour change for anything currently in production — every
caller already routes through *_CLUSTER_HOST.
@majdyz
majdyz requested review from a team as code owners April 30, 2026 04:59
@majdyz
majdyz requested review from Swiftyos and kcze and removed request for a team April 30, 2026 04:59
@github-project-automation github-project-automation Bot moved this to 🆕 Needs initial review in AutoGPT development kanban Apr 30, 2026
@github-actions github-actions Bot added platform/backend AutoGPT Platform - Back end size/m labels Apr 30, 2026
@coderabbitai

coderabbitai Bot commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 428c6a4e-f412-4449-8602-fe3cd9744902

📥 Commits

Reviewing files that changed from the base of the PR and between d7a0c8b and 8edc366.

📒 Files selected for processing (1)
  • autogpt_platform/backend/backend/util/settings.py
📜 Recent 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). (8)
  • GitHub Check: check API types
  • GitHub Check: integration_test
  • GitHub Check: end-to-end tests
  • GitHub Check: test (3.11)
  • GitHub Check: test (3.13)
  • GitHub Check: test (3.12)
  • GitHub Check: Check PR Status
  • GitHub Check: Analyze (python)
🧰 Additional context used
📓 Path-based instructions (2)
autogpt_platform/backend/**/*.py

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

autogpt_platform/backend/**/*.py: Use Python 3.11 (required; managed by Poetry via pyproject.toml) for backend development
Always run 'poetry run format' (Black + isort) before linting in backend development
Always run 'poetry run lint' (ruff) after formatting in backend development

autogpt_platform/backend/**/*.py: Use poetry run ... command for executing Python package dependencies
Use top-level imports only — avoid local/inner imports except for lazy imports of heavy optional dependencies like openpyxl
Use absolute imports with from backend.module import ... for cross-package imports; single-dot relative imports are acceptable for sibling modules within the same package; avoid double-dot relative imports
Do not use duck typing — avoid hasattr/getattr/isinstance for type dispatch; use typed interfaces/unions/protocols instead
Use Pydantic models over dataclass/namedtuple/dict for structured data
Do not use linter suppressors — no # type: ignore, # noqa, # pyright: ignore; fix the type/code instead
Prefer list comprehensions over manual loop-and-append patterns
Use early return with guard clauses first to avoid deep nesting
Use %s for deferred interpolation in debug log statements for efficiency; use f-strings elsewhere for readability (e.g., logger.debug("Processing %s items", count) vs logger.info(f"Processing {count} items"))
Sanitize error paths by using os.path.basename() in error messages to avoid leaking directory structure
Be aware of TOCTOU (Time-Of-Check-Time-Of-Use) issues — avoid check-then-act patterns for file access and credit charging
Use transaction=True for Redis pipelines to ensure atomicity on multi-step operations
Use max(0, value) guards for computed values that should never be negative
Keep files under ~300 lines; if a file grows beyond this, split by responsibility (extract helpers, models, or a sub-module into a new file)
Keep functions under ~40 lines; extract named helpers when a function grows longer
...

Files:

  • autogpt_platform/backend/backend/util/settings.py
autogpt_platform/{backend,autogpt_libs}/**/*.py

📄 CodeRabbit inference engine (AGENTS.md)

Format Python code with poetry run format

Files:

  • autogpt_platform/backend/backend/util/settings.py
🧠 Learnings (8)
📓 Common learnings
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.
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12900
File: autogpt_platform/docker-compose.platform.yml:153-182
Timestamp: 2026-04-23T18:41:41.361Z
Learning: In `autogpt_platform/docker-compose.platform.yml` (PR `#12900`, commit 459c8f7f9): the local Redis Cluster for dev uses a 2-master setup bootstrapped via raw `CLUSTER ADDSLOTSRANGE 0 8191` / `CLUSTER ADDSLOTSRANGE 8192 16383` + `CLUSTER MEET` in a `redis-init` sidecar. `redis-cli --cluster create` is intentionally avoided because it enforces a 3-master minimum. Do NOT suggest using `--cluster create` for the local compose setup.
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 0
File: :0-0
Timestamp: 2026-04-25T02:53:53.964Z
Learning: In `autogpt_platform/backend/backend/copilot/sdk/service.py` (PR `#12918`, commit 6576bf561):
- `_flush_unresolved_tool_calls` was renamed to `flush_unresolved_tool_calls` (public); all call sites updated, `# noqa: SLF001` suppressor removed.
- `_flush_orphan_tool_uses_to_session` and `_InterruptedAttempt.finalize` both return `list[StreamBaseResponse]`; the post-loop caller yields those events directly to avoid double-flush and skipped UI cleanup events.
- The three former post-loop blocks (partial restore + redundant re-flush + two separate `yield StreamError` sites) are collapsed into a single block driven by `_classify_final_failure` returning a `_FinalFailure(display_msg, code, retryable)` dataclass, so history marker and SSE yield share one source of truth.
Do NOT flag double-flush risk or mismatched history/SSE marker as issues in the post-loop section of `stream_chat_completion_sdk`.
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12773
File: autogpt_platform/backend/backend/copilot/pending_messages.py:52-64
Timestamp: 2026-04-14T14:36:25.545Z
Learning: In `autogpt_platform/backend/backend/copilot` (PR `#12773`, commit d7bced0c6): when draining pending messages into `session.messages`, each message's text is sanitized via `strip_user_context_tags` before persistence to prevent user-controlled `<user_context>` injection from bypassing the trusted server-side context prefix. Additionally, if `upsert_chat_session` fails after draining, the drained `PendingMessage` objects are requeued back to Redis to avoid silent message loss. Do NOT flag the drain-then-requeue pattern as redundant — it is the intentional failure-resilience strategy for the pending buffer.
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 0
File: :0-0
Timestamp: 2026-04-28T03:31:29.696Z
Learning: In Significant-Gravitas/AutoGPT PR `#12933` (`fix/stripe-checkout-link-auth-loop`), the initial approach of pinning `payment_method_types=["card"]` in `top_up_intent` and `create_subscription_checkout` (in `autogpt_platform/backend/backend/data/credit.py`) was reverted in commit `584b43a71` as it patched a symptom. The true root cause was in `update_subscription_tier()` in `v1.py`: a `current_tier_price_id is not None` guard was gating admin-granted DB-tier flips and short-circuiting them when the BUSINESS tier was pruned from the price-id LaunchDarkly flag. Do NOT flag `payment_method_types` absence in these checkout helpers as a Stripe Link bypass issue; the fix lives in the subscription tier update guard logic.
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12213
File: autogpt_platform/frontend/src/app/api/openapi.json:9983-9995
Timestamp: 2026-02-27T15:59:00.370Z
Learning: Repo: Significant-Gravitas/AutoGPT PR: 12213 — Backend/frontend OpenAPI codegen
Learning: For MCP schema models, required OpenAPI fields must have no defaults in Pydantic. Specifically, MCPToolInfo.input_schema must be required (no Field(default_factory=dict)) so openapi.json emits it in "required", ensuring generated TS types treat input_schema as non-optional.
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12440
File: autogpt_platform/backend/backend/copilot/workflow_import/converter.py:0-0
Timestamp: 2026-03-17T10:57:12.953Z
Learning: In Significant-Gravitas/AutoGPT PR `#12440`, `autogpt_platform/backend/backend/copilot/workflow_import/converter.py` was fully rewritten (commit 732960e2d) to no longer make direct LLM/OpenAI API calls. The converter now builds a structured text prompt for AutoPilot/CoPilot instead. There is no `response.choices` access or any direct LLM client usage in this file. Do not flag `response.choices` access or LLM client initialization patterns as issues in this file.
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: ntindle
Repo: Significant-Gravitas/AutoGPT PR: 12536
File: autogpt_platform/frontend/src/app/api/openapi.json:5732-5752
Timestamp: 2026-03-24T21:27:22.326Z
Learning: Repo: Significant-Gravitas/AutoGPT — Preference: Do not add explicit 403/404 entries to FastAPI route decorators for admin endpoints just to influence OpenAPI. Keep openapi.json autogenerated and use route docstrings to document admin-only (403) and not-found (404) behavior; rely on tests for enforcement. File context: autogpt_platform/backend/backend/api/features/admin/store_admin_routes.py. PR `#12536`.
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12213
File: autogpt_platform/frontend/src/app/api/openapi.json:9983-9995
Timestamp: 2026-02-27T15:59:00.370Z
Learning: Repo: Significant-Gravitas/AutoGPT PR: 12213 — OpenAPI/codegen
Learning: Ensuring a field is required in generated TS types needs two sides: (1) no default value on the Pydantic field, and (2) the OpenAPI model's "required" array must list it. For MCPToolInfo, making input_schema required in OpenAPI and removing Field(default_factory=dict) in the backend prevents optional typing drift.
📚 Learning: 2026-02-26T17:02:22.448Z
Learnt from: Pwuts
Repo: Significant-Gravitas/AutoGPT PR: 12211
File: .pre-commit-config.yaml:160-179
Timestamp: 2026-02-26T17:02:22.448Z
Learning: Keep the pre-commit hook pattern broad for autogpt_platform/backend to ensure OpenAPI schema changes are captured. Do not narrow to backend/api/ alone, since the generated schema depends on Pydantic models across multiple directories (backend/data/, backend/blocks/, backend/copilot/, backend/integrations/, backend/util/). Narrowing could miss schema changes and cause frontend type desynchronization.

Applied to files:

  • autogpt_platform/backend/backend/util/settings.py
📚 Learning: 2026-03-05T15:42:08.207Z
Learnt from: ntindle
Repo: Significant-Gravitas/AutoGPT PR: 12297
File: .claude/skills/backend-check/SKILL.md:14-16
Timestamp: 2026-03-05T15:42:08.207Z
Learning: In Python files under autogpt_platform/backend (recursively), rely on poetry run format to perform formatting (Black + isort) and linting (ruff). Do not run poetry run lint as a separate step after poetry run format, since format already includes linting checks.

Applied to files:

  • autogpt_platform/backend/backend/util/settings.py
📚 Learning: 2026-03-16T16:35:40.236Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12440
File: autogpt_platform/backend/backend/api/features/workflow_import.py:54-63
Timestamp: 2026-03-16T16:35:40.236Z
Learning: Avoid using the word 'competitor' in public-facing identifiers and text. Use neutral naming for API paths, model names, function names, and UI text. Examples: rename 'CompetitorFormat' to 'SourcePlatform', 'convert_competitor_workflow' to 'convert_workflow', '/competitor-workflow' to '/workflow'. Apply this guideline to files under autogpt_platform/backend and autogpt_platform/frontend.

Applied to files:

  • autogpt_platform/backend/backend/util/settings.py
📚 Learning: 2026-03-31T15:37:38.626Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12623
File: autogpt_platform/backend/backend/copilot/tools/agent_generator/fixer.py:37-47
Timestamp: 2026-03-31T15:37:38.626Z
Learning: When validating/constructing Anthropic API model IDs in Significant-Gravitas/AutoGPT, allow the hyphen-separated Claude Opus 4.6 model ID `claude-opus-4-6` (it corresponds to `LlmModel.CLAUDE_4_6_OPUS` in `autogpt_platform/backend/backend/blocks/llm.py`). Do NOT require the dot-separated form in Anthropic contexts. Only OpenRouter routing variants should use the dot separator (e.g., `anthropic/claude-opus-4.6`); `claude-opus-4-6` should be treated as correct when passed to Anthropic, and flagged only if it’s used in the OpenRouter path where the dot form is expected.

Applied to files:

  • autogpt_platform/backend/backend/util/settings.py
📚 Learning: 2026-04-15T02:43:36.890Z
Learnt from: ntindle
Repo: Significant-Gravitas/AutoGPT PR: 12780
File: autogpt_platform/backend/backend/copilot/tools/workspace_files.py:0-0
Timestamp: 2026-04-15T02:43:36.890Z
Learning: When reviewing Python exception handlers, do not flag `isinstance(e, X)` checks as dead/unreachable if the caught exception `X` is a subclass of the exception type being handled. For example, if `X` (e.g., `VirusScanError`) inherits from `ValueError` (directly or via an intermediate class) and it can be raised within an `except ValueError:` block, then `isinstance(e, X)` inside that handler is reachable and should not be treated as dead code.

Applied to files:

  • autogpt_platform/backend/backend/util/settings.py
📚 Learning: 2026-04-22T11:46:04.431Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12881
File: autogpt_platform/backend/backend/copilot/config.py:0-0
Timestamp: 2026-04-22T11:46:04.431Z
Learning: Do not flag the Claude Sonnet 4.6 model ID as incorrect when it uses the project’s established hyphenated convention: `anthropic/claude-sonnet-4-6`. This hyphen form is the intentional, production convention and should be treated as valid (including in files like llm.py, blocks tests, reasoning.py, `_is_anthropic_model` tests, and config defaults). Note that OpenRouter also accepts the dot variant `anthropic/claude-sonnet-4.6`, so either form may be tolerated, but `anthropic/claude-sonnet-4-6` should be considered the standard to match project usage.

Applied to files:

  • autogpt_platform/backend/backend/util/settings.py
📚 Learning: 2026-04-22T11:46:12.892Z
Learnt from: majdyz
Repo: Significant-Gravitas/AutoGPT PR: 12881
File: autogpt_platform/backend/backend/copilot/baseline/service.py:322-332
Timestamp: 2026-04-22T11:46:12.892Z
Learning: In this codebase (Significant-Gravitas/AutoGPT), OpenRouter-routed Anthropic model IDs should use the hyphen-separated convention (e.g., `anthropic/claude-sonnet-4-6`, `anthropic/claude-opus-4-6`). Although OpenRouter may accept both hyphen and dot variants, treat the hyphen-separated form as the intended, correct codebase-wide convention and do not flag it as an error. Only flag the dot-separated variant (e.g., `anthropic/claude-sonnet-4.6`) as incorrect when reviewing/validating model ID strings for OpenRouter-routed Anthropic models.

Applied to files:

  • autogpt_platform/backend/backend/util/settings.py
🔇 Additional comments (2)
autogpt_platform/backend/backend/util/settings.py (2)

7-7: Import cleanup looks good.

Dropping AliasChoices matches the simplified settings surface and keeps the import list tighter.


311-337: Cluster-only env binding looks good.

The new single validation_alias values match the intent of removing the legacy Redis/RabbitMQ fallback names.


Walkthrough

The PR renames environment variables used for Redis and RabbitMQ across the backend from legacy names (e.g., REDIS_HOST, REDIS_PORT, RABBITMQ_HOST) to cluster-specific names (e.g., REDIS_CLUSTER_HOST, REDIS_CLUSTER_PORT, RABBITMQ_CLUSTER_HOST) in CI, env templates, client code, tests, docs, and Docker Compose.

Changes

Cohort / File(s) Summary
CI & Environment Templates
\.github/workflows/platform-backend-ci.yml, autogpt_platform/backend/.env.default
CI job and default env template now set REDIS_CLUSTER_HOST / REDIS_CLUSTER_PORT instead of REDIS_HOST / REDIS_PORT.
Docker Compose
autogpt_platform/docker-compose.platform.yml
Compose env updated to use REDIS_CLUSTER_HOST / REDIS_CLUSTER_PORT and RABBITMQ_CLUSTER_HOST replacing legacy names.
Backend runtime & config
autogpt_platform/backend/backend/data/redis_client.py, autogpt_platform/backend/backend/util/settings.py
Redis client and settings removed fallbacks to legacy env vars; config fields now bind exclusively to _CLUSTER_ environment variable names and related alias/comment cleanup performed.
Tests & Docs
autogpt_platform/backend/backend/data/e2e_redis_restart_test.py, autogpt_platform/backend/backend/copilot/bot/README.md
Tests and README updated to reference cluster-specific Redis env variable names and adjusted test monkeypatch/cleanup comments accordingly.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

size/l

Suggested reviewers

  • Bentlybro
  • ntindle
  • Swiftyos

Poem

🐰 I hopped through envs both near and far,
Swapped hosts and ports for a cluster star.
No legacy nests in my tidy burrow —
_CLUSTER_ now leads the config furrow. 🎩✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: removing legacy fallback environment variables (pre-cluster REDIS_HOST/RABBITMQ_HOST) from the backend codebase.
Description check ✅ Passed The description provides comprehensive context and justification for the changes, clearly relating to the changeset with background, specific file changes, and behaviour implications.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cleanup/drop-pre-cluster-redis-rabbitmq-host-fallback

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.

❤️ Share
Review rate limit: 6/8 reviews remaining, refill in 11 minutes and 32 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

🔍 PR Overlap Detection

This check compares your PR against all other open PRs targeting the same branch to detect potential merge conflicts early.

🔴 Merge Conflicts Detected

The following PRs have been tested and will have merge conflicts if merged after this PR. Consider coordinating with the authors.

🟢 Low Risk — File Overlap Only

These PRs touch the same files but different sections (click to expand)

Summary: 1 conflict(s), 0 medium risk, 5 low risk (out of 6 PRs with file overlap)


Auto-generated on push. Ignores: openapi.json, lock files.

…e line

isort/black wants the 5-item pydantic import on one line; CI lint failed on
the multi-line form left over from removing AliasChoices.
@codecov

codecov Bot commented Apr 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.54%. Comparing base (4a1741c) to head (8edc366).
⚠️ Report is 1 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev   #12949      +/-   ##
==========================================
- Coverage   69.55%   69.54%   -0.01%     
==========================================
  Files        2114     2114              
  Lines      157457   157456       -1     
  Branches    16230    16229       -1     
==========================================
- Hits       109515   109507       -8     
- Misses      44718    44723       +5     
- Partials     3224     3226       +2     
Flag Coverage Δ
platform-backend 78.58% <100.00%> (+<0.01%) ⬆️
platform-frontend 30.91% <ø> (-0.02%) ⬇️
platform-frontend-e2e 30.62% <ø> (-0.06%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
Platform Backend 78.58% <100.00%> (+<0.01%) ⬆️
Platform Frontend 37.19% <ø> (-0.04%) ⬇️
AutoGPT Libs ∅ <ø> (∅)
Classic AutoGPT 28.43% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@majdyz majdyz closed this Apr 30, 2026
@github-project-automation github-project-automation Bot moved this from 🆕 Needs initial review to ✅ Done in AutoGPT development kanban Apr 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

platform/backend AutoGPT Platform - Back end size/m

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

1 participant