Skip to content

Conversation

@AlexSkrypnyk
Copy link
Member

@AlexSkrypnyk AlexSkrypnyk commented Nov 10, 2025

Changelogs summary:

 - drupal/core-composer-scaffold updated from 11.2.4 to 11.2.7 patch
   See changes: https://github.com/drupal/core-composer-scaffold/compare/11.2.4...11.2.7
   Release notes: https://github.com/drupal/core-composer-scaffold/releases/tag/11.2.7

 - behat/gherkin updated from v4.14.0 to v4.15.0 minor
   See changes: https://github.com/Behat/Gherkin/compare/v4.14.0...v4.15.0
   Release notes: https://github.com/Behat/Gherkin/releases/tag/v4.15.0

 - composer/ca-bundle updated from 1.5.8 to 1.5.9 patch
   See changes: https://github.com/composer/ca-bundle/compare/1.5.8...1.5.9
   Release notes: https://github.com/composer/ca-bundle/releases/tag/1.5.9

 - symfony/finder updated from v7.3.2 to v7.3.5 patch
   See changes: https://github.com/symfony/finder/compare/v7.3.2...v7.3.5
   Release notes: https://github.com/symfony/finder/releases/tag/v7.3.5

 - symfony/string updated from v7.3.3 to v7.3.4 patch
   See changes: https://github.com/symfony/string/compare/v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/string/releases/tag/v7.3.4

 - symfony/service-contracts updated from v3.6.0 to v3.6.1 patch
   See changes: https://github.com/symfony/service-contracts/compare/v3.6.0...v3.6.1
   Release notes: https://github.com/symfony/service-contracts/releases/tag/v3.6.1

 - symfony/console updated from v7.3.3 to v7.3.6 patch
   See changes: https://github.com/symfony/console/compare/v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/console/releases/tag/v7.3.6

 - symfony/filesystem updated from v7.3.2 to v7.3.6 patch
   See changes: https://github.com/symfony/filesystem/compare/v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/filesystem/releases/tag/v7.3.6

 - doctrine/persistence updated from 4.1.0 to 4.1.1 patch
   See changes: https://github.com/doctrine/persistence/compare/4.1.0...4.1.1
   Release notes: https://github.com/doctrine/persistence/releases/tag/4.1.1

 - symfony/yaml updated from v7.3.3 to v7.3.5 patch
   See changes: https://github.com/symfony/yaml/compare/v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/yaml/releases/tag/v7.3.5

 - symfony/translation-contracts updated from v3.6.0 to v3.6.1 patch
   See changes: https://github.com/symfony/translation-contracts/compare/v3.6.0...v3.6.1
   Release notes: https://github.com/symfony/translation-contracts/releases/tag/v3.6.1

 - symfony/translation updated from v7.3.3 to v7.3.4 patch
   See changes: https://github.com/symfony/translation/compare/v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/translation/releases/tag/v7.3.4

 - symfony/var-exporter updated from v7.3.3 to v7.3.4 patch
   See changes: https://github.com/symfony/var-exporter/compare/v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/var-exporter/releases/tag/v7.3.4

 - symfony/dependency-injection updated from v7.3.3 to v7.3.6 patch
   See changes: https://github.com/symfony/dependency-injection/compare/v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/dependency-injection/releases/tag/v7.3.6

 - symfony/config updated from v7.3.2 to v7.3.6 patch
   See changes: https://github.com/symfony/config/compare/v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/config/releases/tag/v7.3.6

 - nikic/php-parser updated from v5.6.1 to v5.6.2 patch
   See changes: https://github.com/nikic/PHP-Parser/compare/v5.6.1...v5.6.2
   Release notes: https://github.com/nikic/PHP-Parser/releases/tag/v5.6.2

 - behat/behat updated from v3.23.0 to v3.26.0 minor
   See changes: https://github.com/Behat/Behat/compare/v3.23.0...v3.26.0
   Release notes: https://github.com/Behat/Behat/releases/tag/v3.26.0

 - symfony/http-client updated from v6.4.25 to v6.4.28 patch
   See changes: https://github.com/symfony/http-client/compare/v6.4.25...v6.4.28
   Release notes: https://github.com/symfony/http-client/releases/tag/v6.4.28

 - symfony/css-selector updated from v7.3.0 to v7.3.6 patch
   See changes: https://github.com/symfony/css-selector/compare/v7.3.0...v7.3.6
   Release notes: https://github.com/symfony/css-selector/releases/tag/v7.3.6

 - drevops/behat-screenshot updated from 2.1.1 to 2.2.0 minor
   See changes: https://github.com/drevops/behat-screenshot/compare/2.1.1...2.2.0
   Release notes: https://github.com/drevops/behat-screenshot/releases/tag/2.2.0

 - symfony/process updated from v7.3.3 to v7.3.4 patch
   See changes: https://github.com/symfony/process/compare/v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/process/releases/tag/v7.3.4

 - symfony/validator updated from v7.3.3 to v7.3.6 patch
   See changes: https://github.com/symfony/validator/compare/v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/validator/releases/tag/v7.3.6

 - symfony/serializer updated from v7.3.3 to v7.3.5 patch
   See changes: https://github.com/symfony/serializer/compare/v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/serializer/releases/tag/v7.3.5

 - symfony/routing updated from v7.3.2 to v7.3.6 patch
   See changes: https://github.com/symfony/routing/compare/v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/routing/releases/tag/v7.3.6

 - symfony/http-foundation updated from v7.3.3 to v7.3.6 patch
   See changes: https://github.com/symfony/http-foundation/compare/v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/http-foundation/releases/tag/v7.3.6

 - symfony/mime updated from v7.3.2 to v7.3.4 patch
   See changes: https://github.com/symfony/mime/compare/v7.3.2...v7.3.4
   Release notes: https://github.com/symfony/mime/releases/tag/v7.3.4

 - symfony/mailer updated from v7.3.3 to v7.3.5 patch
   See changes: https://github.com/symfony/mailer/compare/v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/mailer/releases/tag/v7.3.5

 - symfony/var-dumper updated from v7.3.3 to v7.3.5 patch
   See changes: https://github.com/symfony/var-dumper/compare/v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/var-dumper/releases/tag/v7.3.5

 - symfony/error-handler updated from v7.3.2 to v7.3.6 patch
   See changes: https://github.com/symfony/error-handler/compare/v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/error-handler/releases/tag/v7.3.6

 - symfony/http-kernel updated from v7.3.3 to v7.3.6 patch
   See changes: https://github.com/symfony/http-kernel/compare/v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/http-kernel/releases/tag/v7.3.6

 - mck89/peast updated from v1.17.2 to v1.17.4 patch
   See changes: https://github.com/mck89/peast/compare/v1.17.2...v1.17.4
   Release notes: https://github.com/mck89/peast/releases/tag/v1.17.4

 - drupal/core updated from 11.2.4 to 11.2.7 patch
   See changes: https://github.com/drupal/core/compare/11.2.4...11.2.7
   Release notes: https://github.com/drupal/core/releases/tag/11.2.7

 - symfony/browser-kit updated from v7.3.2 to v7.3.6 patch
   See changes: https://github.com/symfony/browser-kit/compare/v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/browser-kit/releases/tag/v7.3.6

 - drevops/behat-steps updated from 3.1.0 to 3.3.1 minor
   See changes: https://github.com/drevops/behat-steps/compare/3.1.0...3.3.1
   Release notes: https://github.com/drevops/behat-steps/releases/tag/3.3.1

 - openai-php/client updated from v0.16.1 to v0.18.0 minor
   See changes: https://github.com/openai-php/client/compare/v0.16.1...v0.18.0
   Release notes: https://github.com/openai-php/client/releases/tag/v0.18.0

 - drupal/ai updated from 1.1.3 to 1.2.2 minor

 - drupal/ai_provider_openai updated from 1.1.0 to 1.2.0 minor

 - drupal/webform updated from 6.3.0-beta4 to 6.3.0-beta5 patch

 - drupal/pathauto updated from 1.13.0 to 1.14.0 minor

 - drupal/linkit updated from 7.0.8 to 7.0.11 patch

 - symfony/lock updated from v7.3.2 to v7.3.4 patch
   See changes: https://github.com/symfony/lock/compare/v7.3.2...v7.3.4
   Release notes: https://github.com/symfony/lock/releases/tag/v7.3.4

 - sebastian/exporter updated from 6.3.0 to 6.3.2 patch
   See changes: https://github.com/sebastianbergmann/exporter/compare/6.3.0...6.3.2
   Release notes: https://github.com/sebastianbergmann/exporter/releases/tag/6.3.2

 - phpunit/phpunit updated from 11.5.36 to 11.5.43 patch
   See changes: https://github.com/sebastianbergmann/phpunit/compare/11.5.36...11.5.43
   Release notes: https://github.com/sebastianbergmann/phpunit/releases/tag/11.5.43

 - phpstan/phpstan updated from 2.1.22 to 2.1.31 patch

 - webmozart/assert updated from 1.11.0 to 1.12.1 minor
   See changes: https://github.com/webmozarts/assert/compare/1.11.0...1.12.1
   Release notes: https://github.com/webmozarts/assert/releases/tag/1.12.1

 - phpspec/prophecy updated from v1.22.0 to v1.23.1 minor
   See changes: https://github.com/phpspec/prophecy/compare/v1.22.0...v1.23.1
   Release notes: https://github.com/phpspec/prophecy/releases/tag/v1.23.1

 - open-telemetry/context updated from 1.3.1 to 1.4.0 minor
   See changes: https://github.com/opentelemetry-php/context/compare/1.3.1...1.4.0
   Release notes: https://github.com/opentelemetry-php/context/releases/tag/1.4.0

 - open-telemetry/api updated from 1.5.0 to 1.7.0 minor
   See changes: https://github.com/opentelemetry-php/api/compare/1.5.0...1.7.0
   Release notes: https://github.com/opentelemetry-php/api/releases/tag/1.7.0

 - open-telemetry/sdk updated from 1.7.1 to 1.9.0 minor
   See changes: https://github.com/opentelemetry-php/sdk/compare/1.7.1...1.9.0
   Release notes: https://github.com/opentelemetry-php/sdk/releases/tag/1.9.0

 - google/protobuf updated from v4.32.0 to v4.33.0 minor
   See changes: https://github.com/protocolbuffers/protobuf-php/compare/v4.32.0...v4.33.0
   Release notes: https://github.com/protocolbuffers/protobuf-php/releases/tag/v4.33.0

 - open-telemetry/gen-otlp-protobuf updated from 1.5.0 to 1.8.0 minor
   See changes: https://github.com/opentelemetry-php/gen-otlp-protobuf/compare/1.5.0...1.8.0
   Release notes: https://github.com/opentelemetry-php/gen-otlp-protobuf/releases/tag/1.8.0

 - micheh/phpcs-gitlab updated from 2.0.0 to 2.1.0 minor
   See changes: https://github.com/micheh/phpcs-gitlab/compare/2.0.0...2.1.0
   Release notes: https://github.com/micheh/phpcs-gitlab/releases/tag/2.1.0

 - mglaman/phpstan-drupal updated from 2.0.9 to 2.0.10 patch
   See changes: https://github.com/mglaman/phpstan-drupal/compare/2.0.9...2.0.10
   Release notes: https://github.com/mglaman/phpstan-drupal/releases/tag/2.0.10

 - marc-mabe/php-enum updated from v4.7.1 to v4.7.2 patch
   See changes: https://github.com/marc-mabe/php-enum/compare/v4.7.1...v4.7.2
   Release notes: https://github.com/marc-mabe/php-enum/releases/tag/v4.7.2

 - justinrainbow/json-schema updated from 6.5.1 to 6.6.1 minor
   See changes: https://github.com/jsonrainbow/json-schema/compare/6.5.1...6.6.1
   Release notes: https://github.com/jsonrainbow/json-schema/releases/tag/6.6.1

 - squizlabs/php_codesniffer updated from 3.13.4 to 3.13.5 patch
   See changes: https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.13.4...3.13.5
   Release notes: https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/tag/3.13.5

 - slevomat/coding-standard updated from 8.22.0 to 8.22.1 patch
   See changes: https://github.com/slevomat/coding-standard/compare/8.22.0...8.22.1
   Release notes: https://github.com/slevomat/coding-standard/releases/tag/8.22.1

 - sirbrillig/phpcs-variable-analysis updated from v2.12.0 to v2.13.0 minor
   See changes: https://github.com/sirbrillig/phpcs-variable-analysis/compare/v2.12.0...v2.13.0
   Release notes: https://github.com/sirbrillig/phpcs-variable-analysis/releases/tag/v2.13.0

 - drupal/coder updated from 8.3.30 to 8.3.31 patch
   See changes: https://github.com/pfrenssen/coder/compare/8.3.30...8.3.31
   Release notes: https://github.com/pfrenssen/coder/releases/tag/8.3.31

 - composer/composer updated from 2.8.11 to 2.8.12 patch
   See changes: https://github.com/composer/composer/compare/2.8.11...2.8.12
   Release notes: https://github.com/composer/composer/releases/tag/2.8.12

 - colinodell/psr-testlogger updated from v1.3.0 to v1.3.1 patch
   See changes: https://github.com/colinodell/psr-testlogger/compare/v1.3.0...v1.3.1
   Release notes: https://github.com/colinodell/psr-testlogger/releases/tag/v1.3.1

 - drupal/core-dev updated from 11.2.4 to 11.2.7 patch
   See changes: https://github.com/drupal/core-dev/compare/11.2.4...11.2.7
   Release notes: https://github.com/drupal/core-dev/releases/tag/11.2.7

 - drupal/core-recommended updated from 11.2.4 to 11.2.7 patch
   See changes: https://github.com/drupal/core-recommended/compare/11.2.4...11.2.7
   Release notes: https://github.com/drupal/core-recommended/releases/tag/11.2.7

 - ezyang/htmlpurifier updated from v4.18.0 to v4.19.0 minor
   See changes: https://github.com/ezyang/htmlpurifier/compare/v4.18.0...v4.19.0
   Release notes: https://github.com/ezyang/htmlpurifier/releases/tag/v4.19.0

 - drupal/entity_usage updated from 2.0.0-beta24 to 2.0.0-beta25 patch

 - drupal/metatag updated from 2.1.2 to 2.2.0 minor

 - drupal/redis updated from 1.10.0 to 1.11.0 minor

 - solarium/solarium updated from 6.3.7 to 6.4.1 minor
   See changes: https://github.com/solariumphp/solarium/compare/6.3.7...6.4.1
   Release notes: https://github.com/solariumphp/solarium/releases/tag/6.4.1

 - laminas/laminas-stdlib updated from 3.20.0 to 3.21.0 minor
   See changes: https://github.com/laminas/laminas-stdlib/compare/3.20.0...3.21.0
   Release notes: https://github.com/laminas/laminas-stdlib/releases/tag/3.21.0

 - drupal/search_api updated from 1.38.0 to 1.40.0 minor

 - drupal/stage_file_proxy updated from 3.1.5 to 3.1.6 patch

 - drupal/views_bulk_operations updated from 4.3.4 to 4.4.4 minor

 - psy/psysh updated from v0.12.10 to v0.12.14 patch
   See changes: https://github.com/bobthecow/psysh/compare/v0.12.10...v0.12.14
   Release notes: https://github.com/bobthecow/psysh/releases/tag/v0.12.14

 - laravel/prompts updated from v0.3.6 to v0.3.7 patch
   See changes: https://github.com/laravel/prompts/compare/v0.3.6...v0.3.7
   Release notes: https://github.com/laravel/prompts/releases/tag/v0.3.7

 - rector/rector updated from 2.1.6 to 2.2.7 minor
   See changes: https://github.com/rectorphp/rector/compare/2.1.6...2.2.7
   Release notes: https://github.com/rectorphp/rector/releases/tag/2.2.7

 - palantirnet/drupal-rector updated from 0.21.0 to 0.21.1 patch
   See changes: https://github.com/palantirnet/drupal-rector/compare/0.21.0...0.21.1
   Release notes: https://github.com/palantirnet/drupal-rector/releases/tag/0.21.1

 - vincentlanglet/twig-cs-fixer updated from 3.9.0 to 3.10.0 minor
   See changes: https://github.com/VincentLanglet/Twig-CS-Fixer/compare/3.9.0...3.10.0
   Release notes: https://github.com/VincentLanglet/Twig-CS-Fixer/releases/tag/3.10.0

Checklist before requesting a review

  • Subject includes ticket number as [#123] Verb in past tense.
  • Ticket number #123 added to description
  • Added context in Changed section
  • Self-reviewed code and commented in commented complex areas.
  • Added tests for fix/feature.
  • Relevant tests run and passed locally.

Changed

Screenshots

Summary by CodeRabbit

  • New Features

    • Redis integration and new flush-redis command; database image provisioning for faster environment setup.
    • Artifact-based CI/CD deploys and improved deploy/export workflow.
    • Added comprehensive patching guide for contributed modules.
  • Bug Fixes

    • Adjusted trusted hosts handling and related configuration to align with Redis naming.
  • Chores

    • Bumped container images and many dependencies; linting/tools updates and assorted test improvements.

@coderabbitai
Copy link

coderabbitai bot commented Nov 10, 2025

📝 Walkthrough

Walkthrough

Replaces Valkey with Redis across infra and tests, bumps many container and package versions, refactors build/provision/reload flows and Ahoy commands (adds flush-redis, changes provision/login gating), updates CI artifact handling, and modernizes linting/tooling configs and Rector setup.

Changes

Cohort / File(s) Change Summary
Ahoy commands & workflows
.ahoy.yml
Added flush-redis, removed flush-valkey; build, provision, reload-db, down, debug, and lint commands updated to new sequencing, conditional reload, gated provision (VORTEX_SHOW_LOGIN env), and tolerant failure handling.
Dockerfiles & container images
.docker/clamav.dockerfile, .docker/cli.dockerfile, .docker/database.dockerfile, .docker/nginx-drupal.dockerfile, .docker/php.dockerfile, .../solr.dockerfile
Bumped base image tags (25.8.x → 25.9/25.10.x), removed solr multi-stage CLI stage, changed CLI hadolint and permissions handling, added fix-permissions for nginx.
Docker compose & wait checks
docker-compose.yml, .dockerignore
Renamed valkeyredis, updated DB/cli/chrome image tags, renamed wait_dependencieswait-for-dependencies with expanded service checks (clamav, db, redis, solr), removed phpmd whitelist in .dockerignore, adjusted service depends_on.
Provisioning scripts
scripts/vortex/provision.sh, scripts/vortex/*.sh
Added VORTEX_DB_IMAGE handling and messaging, conditional reload behavior, safer variable expansions; minor doc/@see updates and message wording tweaks across scripts.
CI/CD workflow
.github/workflows/build-test-deploy.yml
Adds tag triggers, updates runner images to 25.10.0, changes artifact export to tar-based flow, adds unpack step in deploy, updates cache/action versions and conditional logic.
Tooling & lint configs
rector.php, phpstan.neon, phpunit.xml, phpcs.xml, .prettierrc.json, .stylelintrc.js, phpmd.xml
rector.php migrated to fluent RectorConfig::configure() and expanded rule sets; phpstan/phpunit versions bumped; PHPCS naming rules added; Prettier plugin added; removed phpmd.xml.
Dependency bumps
composer.json, package.json
Numerous Drupal/core and dev dependency version bumps; added prettier-plugin-jsdoc; updated eslint/stylelint/dev deps.
Application settings
web/sites/default/settings.php, .../settings.redis.php, .../settings.trusted_hosts.php
settings.php refactored null-coalescing/grouped fallbacks; settings.redis.php renamed Valkey → Redis defaults and simplified extension check; settings.trusted_hosts.php changed trim callback (introduces invalid trim(...) call).
Tests & Behat
tests/behat/bootstrap/FeatureContext.php, tests/behat/features/login.feature, tests/phpunit/.../SettingsTestCase.php, tests/phpunit/.../SwitchableSettingsTest.php
FeatureContext adds JavascriptTrait; login.feature adds path assertion before screenshots; tests renamed/migrated from VALKEY_* → REDIS_* and reorganized/removed some tests.
Config & content changes
config/default/*.yml, config/local/purge_control.settings.yml
Added cloneable ai_prompt_type/ai_prompt; webform and role/config tweaks; removed some local purge flags and default config hash.
Docs & minor files
CLAUDE.md, README.md, docs/*.md, .env, .editorconfig, .gitignore, .eslintignore, scripts
Renamed Valkey references to Redis, added patching documentation (CLAUDE.md), badge/version bumps, editorconfig rule for package.json, minor comment and wording updates.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer
  participant Ahoy as ahoy CLI
  participant Docker as Docker Compose
  participant Provision as provision.sh
  rect rgb(220,235,255)
    Note right of Ahoy: Build -> gated provision flow
  end
  Dev->>Ahoy: ahoy build
  Ahoy->>Ahoy: VORTEX_SHOW_LOGIN=0 ahoy provision
  Ahoy->>Provision: run provision.sh (with env)
  Provision->>Docker: [if VORTEX_DB_IMAGE set] ahoy reload-db
  Docker->>Docker: docker compose rm --force --stop --volumes database
  Docker->>Docker: docker compose build database
  Docker->>Ahoy: ahoy up
  Provision->>Ahoy: [if VORTEX_SHOW_LOGIN=1] ahoy login || true
  Ahoy->>Dev: Build/provision complete (shows login if enabled)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Areas needing extra attention:

  • web/sites/default/includes/modules/settings.trusted_hosts.php — introduces invalid PHP callback (trim(...)) and likely breaks runtime.
  • docker-compose.yml & wait-for-dependencies — verify updated health checks and service ordering (redis, solr, cli).
  • rector.php — large API migration and expanded rule set; confirm skip lists and autoload paths.
  • .github workflow — artifact tar/unpack flow and conditional logic; ensure secrets/cache keys still valid.
  • scripts/vortex/provision.sh & Ahoy command changes — verify VORTEX_DB_IMAGE, gated provision, and reload-db interplay.

Possibly related PRs

Suggested labels

PR: Dependencies, PR: Needs review

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Updated to Vortex 25.10.0 and updated packages.' clearly and concisely summarizes the main changes: upgrading to Vortex 25.10.0 and updating dependencies. It is specific, directly related to the primary changeset objectives, and avoids vague terminology.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/vortex-update-25.10.0

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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 515e0fb and f5bf7ce.

⛔ Files ignored due to path filters (2)
  • composer.lock is excluded by !**/*.lock
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (41)
  • .ahoy.yml (7 hunks)
  • .docker/clamav.dockerfile (1 hunks)
  • .docker/cli.dockerfile (2 hunks)
  • .docker/database.dockerfile (1 hunks)
  • .docker/nginx-drupal.dockerfile (2 hunks)
  • .docker/php.dockerfile (1 hunks)
  • .docker/solr.dockerfile (1 hunks)
  • .dockerignore (0 hunks)
  • .editorconfig (1 hunks)
  • .env (1 hunks)
  • .eslintignore (1 hunks)
  • .github/workflows/build-test-deploy.yml (13 hunks)
  • .gitignore (1 hunks)
  • .prettierrc.json (1 hunks)
  • .stylelintrc.js (1 hunks)
  • CLAUDE.md (2 hunks)
  • README.md (1 hunks)
  • behat.yml (1 hunks)
  • composer.json (1 hunks)
  • docker-compose.yml (7 hunks)
  • docs/ci.md (1 hunks)
  • docs/faqs.md (4 hunks)
  • package.json (1 hunks)
  • phpcs.xml (1 hunks)
  • phpmd.xml (0 hunks)
  • phpstan.neon (1 hunks)
  • phpunit.xml (1 hunks)
  • rector.php (1 hunks)
  • scripts/vortex/deploy-lagoon.sh (1 hunks)
  • scripts/vortex/export-db-file.sh (0 hunks)
  • scripts/vortex/export-db-image.sh (1 hunks)
  • scripts/vortex/notify-github.sh (1 hunks)
  • scripts/vortex/provision.sh (4 hunks)
  • scripts/vortex/task-custom-lagoon.sh (1 hunks)
  • tests/behat/bootstrap/FeatureContext.php (2 hunks)
  • tests/behat/features/login.feature (1 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (1 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (20 hunks)
  • web/sites/default/includes/modules/settings.redis.php (3 hunks)
  • web/sites/default/includes/modules/settings.trusted_hosts.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
💤 Files with no reviewable changes (3)
  • scripts/vortex/export-db-file.sh
  • .dockerignore
  • phpmd.xml
🧰 Additional context used
📓 Path-based instructions (4)
scripts/vortex/**

📄 CodeRabbit inference engine (CLAUDE.md)

Do not modify files under scripts/vortex (core Vortex scripts)

Files:

  • scripts/vortex/deploy-lagoon.sh
  • scripts/vortex/export-db-image.sh
  • scripts/vortex/task-custom-lagoon.sh
  • scripts/vortex/notify-github.sh
  • scripts/vortex/provision.sh
tests/phpunit/**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

Store unit/integration tests for PHPUnit under tests/phpunit/

Files:

  • tests/phpunit/Drupal/SwitchableSettingsTest.php
  • tests/phpunit/Drupal/SettingsTestCase.php
tests/behat/features/**/*.feature

📄 CodeRabbit inference engine (CLAUDE.md)

tests/behat/features/**/*.feature: All Behat feature files must start with the required user story format (Feature title, As a [user type], I want to…, So that…)
Use only the standard user types in Behat user stories: 'As a site visitor', 'As a site administrator', 'As a content editor', 'As a authenticated user'
Test data in Behat scenarios must use the [TEST] prefix and follow conventions (use numbered patterns like [TEST] Topic 1/2, avoid real names like 'Workshop' or 'Training', be descriptive)

Files:

  • tests/behat/features/login.feature
composer.json

📄 CodeRabbit inference engine (CLAUDE.md)

When adding JS/CSS libraries to Drupal as Composer packages, define them in composer.json repositories with type "drupal-library" and require them via Composer

Files:

  • composer.json
🧠 Learnings (8)
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: All local development and project commands should be executed via the ahoy task runner (use the `ahoy` prefix)

Applied to files:

  • docs/faqs.md
  • .ahoy.yml
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/behat.yml : Keep Behat configuration in tests/behat/behat.yml

Applied to files:

  • behat.yml
  • tests/behat/features/login.feature
📚 Learning: 2025-06-19T10:24:22.159Z
Learnt from: AlexSkrypnyk
Repo: drevops/website PR: 64
File: config/default/views.view.scheduled_transitions.yml:428-456
Timestamp: 2025-06-19T10:24:22.159Z
Learning: Valkey is a fork of Redis that maintains full API compatibility and has equivalent memory usage and performance characteristics. A Redis to Valkey migration does not impact memory pressure or performance.

Applied to files:

  • .env
  • tests/phpunit/Drupal/SwitchableSettingsTest.php
  • CLAUDE.md
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/phpunit/**/*.php : Store unit/integration tests for PHPUnit under tests/phpunit/

Applied to files:

  • phpunit.xml
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/features/**/*.feature : Use only the standard user types in Behat user stories: 'As a site visitor', 'As a site administrator', 'As a content editor', 'As a authenticated user'

Applied to files:

  • tests/behat/features/login.feature
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/features/**/*.feature : All Behat feature files must start with the required user story format (Feature title, As a [user type], I want to…, So that…)

Applied to files:

  • tests/behat/features/login.feature
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/features/**/*.feature : Test data in Behat scenarios must use the [TEST] prefix and follow conventions (use numbered patterns like [TEST] Topic 1/2, avoid real names like 'Workshop' or 'Training', be descriptive)

Applied to files:

  • tests/behat/features/login.feature
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to composer.json : When adding JS/CSS libraries to Drupal as Composer packages, define them in composer.json repositories with type "drupal-library" and require them via Composer

Applied to files:

  • CLAUDE.md
  • composer.json
🧬 Code graph analysis (3)
scripts/vortex/export-db-image.sh (1)
scripts/vortex/deploy-lagoon.sh (1)
  • note (79-79)
tests/phpunit/Drupal/SwitchableSettingsTest.php (1)
tests/phpunit/Drupal/SettingsTestCase.php (2)
  • setEnvVars (132-163)
  • requireSettingsFile (202-221)
scripts/vortex/provision.sh (1)
scripts/vortex/deploy-lagoon.sh (2)
  • note (79-79)
  • info (81-81)
🪛 LanguageTool
docs/faqs.md

[grammar] ~145-~145: Ensure spelling is correct
Context: ...ript` tag sometimes get stuck for about 10min then fail. The Chrome container randoml...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.18.1)
docs/faqs.md

59-59: Bare URL used

(MD034, no-bare-urls)

🪛 PHPMD (2.15.0)
tests/phpunit/Drupal/SwitchableSettingsTest.php

243-243: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


244-244: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


292-292: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


293-293: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


294-294: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)

🪛 YAMLlint (1.37.1)
docker-compose.yml

[warning] 160-160: too few spaces before comment: expected 2

(comments)


[warning] 172-172: too few spaces before comment: expected 2

(comments)

⏰ 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). (1)
  • GitHub Check: database
🔇 Additional comments (51)
.gitignore (1)

4-4: LGTM!

The comment improvement from "Ignore Drupal web" to "Ignore Drupal webroot." is a minor but welcome clarification that adds precision and consistency to the documentation.

phpcs.xml (1)

15-16: The original review comment is incorrect.

The DrevOps.NamingConventions.LocalVariableSnakeCase and DrevOps.NamingConventions.ParameterSnakeCase sniffs are defined in the external package drevops/phpcs-standard, a PHP_CodeSniffer standard enforcing snake_case for local variables and parameters. The package is properly declared in composer.json as "drevops/phpcs-standard": "^0.2.0", which matches the latest release: v0.2.0 (Nov 1, 2025). The dealerdirect/phpcodesniffer-composer-installer dependency is configured to auto-discover these standards. PHPCS will successfully load these rules without error. No verification or fixes are required.

Likely an incorrect or invalid review comment.

README.md (1)

17-17: LGTM!

The Vortex version badge correctly reflects the upgrade to 25.10.0 as stated in the PR objectives.

docs/ci.md (1)

15-16: LGTM!

Formatting adjustment with no impact on content or meaning.

phpstan.neon (1)

14-14: LGTM!

PHPStan PHP version updated to 8.3.27, aligning with the broader PHP ecosystem updates in this PR.

behat.yml (1)

102-106: LGTM!

The addition of info_types configuration enhances screenshot metadata with url, feature, step, and datetime information. This is a useful additive change that doesn't affect existing behavior.

Note: Retrieved learnings indicate Behat configuration should be in tests/behat/behat.yml, but this file is at the project root. If there's a specific preference for Behat config location, please verify this aligns with project conventions.

Based on learnings

.editorconfig (1)

28-29: Intent verified: package.json indentation is consistent with the new EditorConfig rule.

The package.json file uses 2-space indentation per level (2 spaces for top-level properties, 4 spaces for nested properties), which matches the new [package.json] section setting indent_size = 2. The override is intentional and the file is already properly formatted.

.docker/php.dockerfile (1)

15-15: ✓ Base image version bump looks good.

Straightforward patch-version update in line with the broader Vortex 25.10.0 migration described in the PR.

.docker/database.dockerfile (1)

8-8: ✓ Database image version bump looks good.

Straightforward patch-version update aligned with the Vortex 25.10.0 migration.

.docker/nginx-drupal.dockerfile (1)

14-14: Verify fix-permissions command exists in nginx-drupal:25.10.0.

The addition of RUN fix-permissions /etc/nginx on Line 24 assumes this utility exists in the base image. Ensure:

  • The fix-permissions command is available in uselagoon/nginx-drupal:25.10.0
  • This permission fix is necessary for the new base image version (may be required due to 25.8.0 → 25.10.0 changes)

Verify the command is compatible by checking the base image documentation or running a build validation.

Also applies to: 24-24

.env (1)

73-74: ✓ Redis terminology update is clear and appropriate.

Comment updated for clarity. Per learnings, Valkey and Redis maintain full API compatibility, so this documentation improvement has no functional impact. The variable DRUPAL_REDIS_ENABLED remains unchanged and functional.

.docker/cli.dockerfile (3)

5-5: ✓ Hadolint SC2174 directive is appropriate.

SC2174 is a shellcheck warning for mkdir -p potentially silencing failures. This ignore is consistent with the pattern of consolidating the mkdir command on Line 86.


10-10: ✓ Base image version bump looks good.

Straightforward patch-version update aligned with the Vortex 25.10.0 migration.


86-86: No changes needed; original review comment's premise is incorrect.

The verification found no evidence of a prior chmod 0770 operation. The current mkdir -p -m 2775 appears to be the original code design (as indicated by the "set correct permissions" comment), not a consolidation of two separate operations. The review comment incorrectly assumes a code change occurred that replaced a separate chmod 0770 call, but the file history and current state show only the mkdir -p -m 2775 command.

Likely an incorrect or invalid review comment.

.prettierrc.json (1)

6-6: No issues found — prettier-plugin-jsdoc is properly installed and compatible.

Verification confirms prettier-plugin-jsdoc ^1.5.0 and prettier ^3.6.2 are in devDependencies, satisfying the version requirements for this configuration change.

.docker/solr.dockerfile (1)

8-8: The review comment's core claim is incorrect: solr.dockerfile does not have a CLI stage to remove.

The solr.dockerfile has never contained the ARG CLI_IMAGE or intermediate CLI stage that the comment references. Comparison with other Dockerfiles shows php.dockerfile and nginx-drupal.dockerfile both define CLI stages, but solr.dockerfile's current structure (only a base image, config copy, and run commands) matches its original design, not a removal.

The one valid observation is the version divergence: Solr uses 25.9.0 while all other images (cli, nginx-drupal, php, clamav, database) use 25.10.0. Verify whether this version difference is intentional.

Likely an incorrect or invalid review comment.

phpunit.xml (1)

22-22: Now let me search for information about PHPUnit 11 breaking changes and migration requirements:


The review comment is based on outdated assumptions about this codebase's state. Framework support for testing with PHPUnit 10 is removed in Drupal 11.3.0-alpha1; both core and contrib can now only run tests with PHPUnit 11. The phpunit.xml already points to schema 11.5, which is the correct and required schema for Drupal 11.3+. The suggestion to test with PHPUnit 10.5 is no longer viable for this project.

If deprecation concerns exist, they would be caught by the existing configuration flags failOnPhpunitDeprecation="true" and displayDetailsOnPhpunitDeprecations="true" already set in the phpunit.xml. Verify your test suite passes with the current schema to confirm no breaking changes have affected your tests.

Likely an incorrect or invalid review comment.

.stylelintrc.js (1)

39-39: LGTM! Formatting adjustment only.

The trailing newline adjustment maintains consistent file formatting without affecting the stylelint configuration.

tests/behat/bootstrap/FeatureContext.php (1)

33-33: LGTM! Clean trait addition.

The JavascriptTrait import and usage follow the established pattern in this class, enabling JavaScript-related Behat steps for enhanced testing capabilities.

Also applies to: 59-59

tests/behat/features/login.feature (1)

12-13: LGTM! Enhanced test validation.

Adding path assertions before screenshots ensures successful navigation, strengthening test validation. The feature file correctly follows coding guidelines with proper user story format and standard user type.

Based on learnings

Also applies to: 19-20

.ahoy.yml (5)

25-26: LGTM! Improved build workflow UX.

Suppressing the login prompt during provision and showing it explicitly in the info command creates a cleaner build experience.


125-127: LGTM! Improved command readability.

Separating docker compose commands onto individual lines improves readability without changing functionality.


133-135: LGTM! Enhanced provision flexibility.

The conditional execution based on VORTEX_DB_IMAGE and VORTEX_SHOW_LOGIN (with sensible default) makes the provision command more flexible and resilient.


248-250: LGTM! Better Xdebug debug workflow.

The enhanced debug command checks for existing Xdebug configuration and provides clear status messages, improving the developer experience.


102-104: Redis service verified; flush-redis command is correctly configured.

The redis service is properly defined in docker-compose.yml (line 169), and the flush-redis command correctly references it. No issues found.

package.json (1)

22-27: LGTM! Standard dependency maintenance.

The dev dependency updates (eslint plugins, stylelint) and the addition of prettier-plugin-jsdoc are standard maintenance updates that enhance code quality tooling.

CLAUDE.md (2)

308-319: LGTM! Correct Redis terminology update.

The renaming from "Valkey/Redis" to "Redis" aligns with the repository-wide migration and maintains consistency across documentation.


350-531: Comprehensive patching documentation is well-structured and helpful.

The section provides clear, step-by-step guidance on module patching with proper best practices and troubleshooting. No duplication was found—the section appears only once in the file.

composer.json (1)

11-71: LGTM! Comprehensive dependency updates.

The dependency updates include:

  • Drupal core packages (11.2.4 → 11.2.7)
  • Drupal contrib modules (various minor/patch updates)
  • Development tooling (Behat, PHPStan, Rector, etc.)

All updates are appropriate for the Vortex 25.10.0 upgrade and follow semantic versioning.

docs/faqs.md (3)

68-68: LGTM! Improved Behat debugging command.

Using the --xdebug flag makes the debugging intent more explicit and aligns with Behat best practices.


79-81: LGTM! Clearer branch switching guidance.

The clarification that ahoy provision updates the environment without requiring a full rebuild improves user understanding.


111-112: LGTM! Clearer patch description labels.

The updated patch description labels ("Remote" vs "Local") make the examples more explicit and align with the expanded patching documentation.

tests/phpunit/Drupal/SwitchableSettingsTest.php (3)

231-252: LGTM! Consistent Redis naming migration.

The test method has been properly renamed from testValkey to testRedis, and the environment variables have been updated from VALKEY_* to REDIS_* to align with the broader Redis integration changes in this PR.

Based on learnings (Valkey maintains full API compatibility with Redis, so this renaming does not impact functionality).


279-301: LGTM! Test refactored to focus on custom Redis configuration.

The method has been appropriately renamed from testRedisValkeyPrecedence to testRedisCustomPort, and the test now validates custom Redis host and port configuration rather than precedence logic.


319-533: LGTM! Shield settings data provider simplified consistently.

The data provider has been updated to streamline the shield configuration structure across all test cases, maintaining consistency with the shield_enable boolean and credentials while removing extraneous keys.

web/sites/default/settings.php (2)

35-41: LGTM! Improved environment variable fallback chain.

The refactored syntax groups all getenv() calls together with explicit precedence, ensuring the final default value is only applied after all environment variable options are exhausted. This provides clearer evaluation order and safer defaults.

Note: The ?: operator treats empty strings as falsy, while ?? only checks for null/undefined. Ensure that environment variables are not set to empty strings if they should use the default value.


53-54: LGTM! Cleaner syntax with null coalescing assignment operator.

The change from $app_root = $app_root ?? DRUPAL_ROOT to $app_root ??= DRUPAL_ROOT is a cleaner, more idiomatic approach using PHP's null coalescing assignment operator with no functional change.

scripts/vortex/provision.sh (3)

64-66: LGTM! New variable for pre-built database container images.

The addition of VORTEX_DB_IMAGE enables support for database images with baked-in data, expanding deployment options.


125-127: LGTM! Conditional display of database image information.

The provisioning info block correctly displays the database image only when it's defined, using safe parameter expansion.


197-227: LGTM! Comprehensive logic for database image support.

The provisioning logic correctly handles multiple scenarios:

  • When a database image is provided with an existing site, it preserves content and marks the database as fresh (since container restarts bring a fresh DB).
  • When a database image is provided but no site exists, it correctly identifies this as a corrupted image scenario and exits with an error.
  • The precedence order (DB image → override flag → preserve) ensures container-baked databases take priority over dump files.
.github/workflows/build-test-deploy.yml (6)

18-20: LGTM! Tag-based workflow trigger added.

The addition of tag triggers enables the workflow to run on version tag pushes, supporting release automation workflows.


57-57: LGTM! Container image version updated consistently.

The CI runner image has been updated from 25.8.0 to 25.10.0 across all jobs, aligning with the broader Vortex upgrade in this PR.


119-123: LGTM! Database cache keys updated for new version.

The cache keys have been updated to v25.10.0-db11, which will force cache invalidation and ensure compatibility with the upgraded Vortex version. This is expected behavior for a major version upgrade.


244-250: LGTM! Tar-based artifact handling is more efficient.

The change from direct directory export to tar archive provides:

  • Single-file atomic transfer
  • Reduced storage and bandwidth usage
  • Preserved file permissions with the -p flag

This is a cleaner and more efficient approach for GitHub Actions artifacts.


406-410: LGTM! Unpack step complements tar-based artifact flow.

The unpack step correctly extracts the tar archive before deployment, maintaining the artifact-based deployment flow.


424-424: LGTM! Deploy mode distinguishes tags from branches.

The addition of VORTEX_DEPLOY_MODE enables different deployment strategies for version tags versus branch pushes, supporting proper release workflows.

docker-compose.yml (5)

46-46: LGTM! Sensible default theme value.

Setting DRUPAL_THEME to "olivero" (Drupal's default frontend theme) provides a sensible fallback when the environment variable is not explicitly set.


103-105: LGTM! Explicit dependency improves startup reliability.

Adding wait-for-dependencies as a dependency with service_completed_successfully ensures all required services (database, Redis, Solr, ClamAV) are fully available before the CLI container starts, preventing race conditions during provisioning.


160-160: LGTM! Database image updated with custom image support.

The database image has been updated to 25.10.0, and now supports custom database images via VORTEX_DB_IMAGE, aligning with the provisioning script changes.


169-172: LGTM! Service renamed to Redis for clarity.

The service has been renamed from valkey to redis while continuing to use the Valkey image (which maintains full Redis API compatibility). This provides clearer naming for developers while preserving the underlying implementation.

Based on learnings.


217-229: LGTM! Comprehensive service readiness checks.

The wait-for-dependencies service has been improved with:

  • Updated image version (25.9.0)
  • Removal of circular dependency (CLI no longer listed here since CLI depends on this service)
  • Explicit checks for all required services including Redis and Solr
  • Solr API readiness probe via curl, verifying actual query response rather than just port availability

This ensures all services are truly ready before dependent containers start.

web/sites/*/files/
*.min.js
*.min.css
*.min.css
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Verify unintentional change.

This line appears to be deleted and re-added with no actual change (a no-op), which adds unnecessary noise to the PR. Please verify if this was intentional or an artifact from automated tooling.

🤖 Prompt for AI Agents
In .eslintignore around line 10 the entry "*.min.css" was deleted and re-added
with no semantic change, creating a no-op diff; remove the redundant change so
the file remains identical to the base branch (either revert that line to the
original commit or drop the file from your staged changes) and verify with git
diff/git status that .eslintignore shows no modifications before pushing.


To disable, run `ahoy up`.

See https://www.vortextemplate.com/docs/tools/xdebug for more details.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix bare URL formatting.

The Xdebug documentation link should use proper markdown link formatting instead of a bare URL.

Apply this diff:

-See https://www.vortextemplate.com/docs/tools/xdebug for more details.
+See [Xdebug documentation](https://www.vortextemplate.com/docs/tools/xdebug) for more details.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
See https://www.vortextemplate.com/docs/tools/xdebug for more details.
See [Xdebug documentation](https://www.vortextemplate.com/docs/tools/xdebug) for more details.
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

59-59: Bare URL used

(MD034, no-bare-urls)

🤖 Prompt for AI Agents
In docs/faqs.md around line 59, the Xdebug link is a bare URL; replace it with
proper Markdown link formatting by changing the bare URL to a descriptive
markdown link such as [Xdebug
documentation](https://www.vortextemplate.com/docs/tools/xdebug) so the link is
rendered correctly and accessible.

Comment on lines +145 to +146
Behat tests with `@javascript` tag sometimes get stuck for about 10min then
fail.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix time unit spacing.

The formatting improvements are good, but "10min" should have proper spacing between the number and unit.

Apply this diff:

-Behat tests with `@javascript` tag sometimes get stuck for about 10min then
+Behat tests with `@javascript` tag sometimes get stuck for about 10 min then
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Behat tests with `@javascript` tag sometimes get stuck for about 10min then
fail.
Behat tests with `@javascript` tag sometimes get stuck for about 10 min then
fail.
🧰 Tools
🪛 LanguageTool

[grammar] ~145-~145: Ensure spelling is correct
Context: ...ript` tag sometimes get stuck for about 10min then fail. The Chrome container randoml...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
In docs/faqs.md around lines 145 to 146, the time unit "10min" lacks a space
between the number and unit; update the text to use "10 min" (i.e., insert a
space between "10" and "min") to correct the formatting.

# Deploy via Lagoon CLI.
#
# @see https://github.com/amazeeio/lagoon-cli
# @see https://github.com/uselagoon/lagoon-cli
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Modification of core Vortex script violates coding guidelines.

According to the coding guidelines, files under scripts/vortex should not be modified as they are core Vortex scripts. This file was modified to update the documentation URL reference.

As per coding guidelines

🤖 Prompt for AI Agents
In scripts/vortex/deploy-lagoon.sh around line 5, the change to the
documentation URL violates the rule that core Vortex scripts under
scripts/vortex must not be modified; revert the file to the upstream/original
version (undo the URL edit) and instead update documentation or add a non-core
script elsewhere if the URL must be changed, then commit the reverted file so
scripts/vortex remains pristine.

# Check that file was saved and output saved dump file name.
if [ -f "${archive_file}" ] && [ -s "${archive_file}" ]; then
note "Saved exported database image archive file ${archive_file}."
note "Exported database image saved to archive file ${archive_file}."
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Do not modify core Vortex scripts.

Per coding guidelines, files under scripts/vortex/ are core Vortex scripts and should not be modified. This PR appears to have introduced a change to the user-facing message. Please revert this change or remove this file from the PR.

🤖 Prompt for AI Agents
In scripts/vortex/export-db-image.sh around line 85, the user-facing message was
changed in a core Vortex script; per guidelines, core scripts under
scripts/vortex/ must not be modified — revert the change to restore the original
message (or remove this file from the PR if the revert isn't possible locally)
so the script remains identical to the upstream/core version and only non-core
files are included in the PR.


# Deployment GitHub token.
VORTEX_NOTIFY_GITHUB_TOKEN="${VORTEX_NOTIFY_GITHUB_TOKEN:-${GITHUB_TOKEN}}"
VORTEX_NOTIFY_GITHUB_TOKEN="${VORTEX_NOTIFY_GITHUB_TOKEN:-${GITHUB_TOKEN-}}"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Do not modify files under scripts/vortex/ — these are core Vortex scripts.

Per the coding guidelines, files under scripts/vortex/ should not be modified. This file is a core Vortex script and changes to it should be pushed upstream to the Vortex project instead of being maintained locally.

If this change is necessary for your deployment, consider:

  1. Submitting the improvement upstream to the Vortex project.
  2. Creating a local wrapper or override script outside the scripts/vortex/ directory if local customization is needed.
  3. Coordinating with the Vortex maintainers to incorporate the fix in a future release.
🤖 Prompt for AI Agents
In scripts/vortex/notify-github.sh around line 20, this core Vortex script must
not be edited locally; instead revert any local change to
VORTEX_NOTIFY_GITHUB_TOKEN and either submit the change upstream to the Vortex
project (create a PR with the token fallback logic), or implement a local
wrapper/override outside scripts/vortex/ that exports the desired
VORTEX_NOTIFY_GITHUB_TOKEN before calling the original script, or coordinate
with Vortex maintainers to adopt the change in a future release.

# Run custom Lagoon task.
#
# @see https://github.com/amazeeio/lagoon-cli
# @see https://github.com/uselagoon/lagoon-cli
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Modification of core Vortex script violates coding guidelines.

According to the coding guidelines, files under scripts/vortex should not be modified as they are core Vortex scripts. This file was modified to update the documentation URL reference.

As per coding guidelines

🤖 Prompt for AI Agents
In scripts/vortex/task-custom-lagoon.sh around line 5, the header comment was
changed to point to a different documentation URL which violates the rule that
core Vortex scripts must not be modified; revert this file to the
upstream/original version (restore the original comment exactly as it was) or
replace the file with the upstream copy, and if you need to update
documentation, add a separate docs file or README in the repo rather than
editing anything under scripts/vortex.

@codecov-commenter
Copy link

codecov-commenter commented Nov 10, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (515e0fb) to head (a770799).

Additional details and impacted files
@@           Coverage Diff           @@
##           develop    #119   +/-   ##
=======================================
  Coverage     0.00%   0.00%           
=======================================
  Files            1       1           
  Lines            8       8           
=======================================
  Misses           8       8           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

```
Changelogs summary:

 - drupal/core-composer-scaffold updated from 11.2.4 to 11.2.7 patch
   See changes: drupal/core-composer-scaffold@11.2.4...11.2.7
   Release notes: https://github.com/drupal/core-composer-scaffold/releases/tag/11.2.7

 - behat/gherkin updated from v4.14.0 to v4.15.0 minor
   See changes: Behat/Gherkin@v4.14.0...v4.15.0
   Release notes: https://github.com/Behat/Gherkin/releases/tag/v4.15.0

 - composer/ca-bundle updated from 1.5.8 to 1.5.9 patch
   See changes: composer/ca-bundle@1.5.8...1.5.9
   Release notes: https://github.com/composer/ca-bundle/releases/tag/1.5.9

 - symfony/finder updated from v7.3.2 to v7.3.5 patch
   See changes: symfony/finder@v7.3.2...v7.3.5
   Release notes: https://github.com/symfony/finder/releases/tag/v7.3.5

 - symfony/string updated from v7.3.3 to v7.3.4 patch
   See changes: symfony/string@v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/string/releases/tag/v7.3.4

 - symfony/service-contracts updated from v3.6.0 to v3.6.1 patch
   See changes: symfony/service-contracts@v3.6.0...v3.6.1
   Release notes: https://github.com/symfony/service-contracts/releases/tag/v3.6.1

 - symfony/console updated from v7.3.3 to v7.3.6 patch
   See changes: symfony/console@v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/console/releases/tag/v7.3.6

 - symfony/filesystem updated from v7.3.2 to v7.3.6 patch
   See changes: symfony/filesystem@v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/filesystem/releases/tag/v7.3.6

 - doctrine/persistence updated from 4.1.0 to 4.1.1 patch
   See changes: doctrine/persistence@4.1.0...4.1.1
   Release notes: https://github.com/doctrine/persistence/releases/tag/4.1.1

 - symfony/yaml updated from v7.3.3 to v7.3.5 patch
   See changes: symfony/yaml@v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/yaml/releases/tag/v7.3.5

 - symfony/translation-contracts updated from v3.6.0 to v3.6.1 patch
   See changes: symfony/translation-contracts@v3.6.0...v3.6.1
   Release notes: https://github.com/symfony/translation-contracts/releases/tag/v3.6.1

 - symfony/translation updated from v7.3.3 to v7.3.4 patch
   See changes: symfony/translation@v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/translation/releases/tag/v7.3.4

 - symfony/var-exporter updated from v7.3.3 to v7.3.4 patch
   See changes: symfony/var-exporter@v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/var-exporter/releases/tag/v7.3.4

 - symfony/dependency-injection updated from v7.3.3 to v7.3.6 patch
   See changes: symfony/dependency-injection@v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/dependency-injection/releases/tag/v7.3.6

 - symfony/config updated from v7.3.2 to v7.3.6 patch
   See changes: symfony/config@v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/config/releases/tag/v7.3.6

 - nikic/php-parser updated from v5.6.1 to v5.6.2 patch
   See changes: nikic/PHP-Parser@v5.6.1...v5.6.2
   Release notes: https://github.com/nikic/PHP-Parser/releases/tag/v5.6.2

 - behat/behat updated from v3.23.0 to v3.26.0 minor
   See changes: Behat/Behat@v3.23.0...v3.26.0
   Release notes: https://github.com/Behat/Behat/releases/tag/v3.26.0

 - symfony/http-client updated from v6.4.25 to v6.4.28 patch
   See changes: symfony/http-client@v6.4.25...v6.4.28
   Release notes: https://github.com/symfony/http-client/releases/tag/v6.4.28

 - symfony/css-selector updated from v7.3.0 to v7.3.6 patch
   See changes: symfony/css-selector@v7.3.0...v7.3.6
   Release notes: https://github.com/symfony/css-selector/releases/tag/v7.3.6

 - drevops/behat-screenshot updated from 2.1.1 to 2.2.0 minor
   See changes: drevops/behat-screenshot@2.1.1...2.2.0
   Release notes: https://github.com/drevops/behat-screenshot/releases/tag/2.2.0

 - symfony/process updated from v7.3.3 to v7.3.4 patch
   See changes: symfony/process@v7.3.3...v7.3.4
   Release notes: https://github.com/symfony/process/releases/tag/v7.3.4

 - symfony/validator updated from v7.3.3 to v7.3.6 patch
   See changes: symfony/validator@v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/validator/releases/tag/v7.3.6

 - symfony/serializer updated from v7.3.3 to v7.3.5 patch
   See changes: symfony/serializer@v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/serializer/releases/tag/v7.3.5

 - symfony/routing updated from v7.3.2 to v7.3.6 patch
   See changes: symfony/routing@v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/routing/releases/tag/v7.3.6

 - symfony/http-foundation updated from v7.3.3 to v7.3.6 patch
   See changes: symfony/http-foundation@v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/http-foundation/releases/tag/v7.3.6

 - symfony/mime updated from v7.3.2 to v7.3.4 patch
   See changes: symfony/mime@v7.3.2...v7.3.4
   Release notes: https://github.com/symfony/mime/releases/tag/v7.3.4

 - symfony/mailer updated from v7.3.3 to v7.3.5 patch
   See changes: symfony/mailer@v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/mailer/releases/tag/v7.3.5

 - symfony/var-dumper updated from v7.3.3 to v7.3.5 patch
   See changes: symfony/var-dumper@v7.3.3...v7.3.5
   Release notes: https://github.com/symfony/var-dumper/releases/tag/v7.3.5

 - symfony/error-handler updated from v7.3.2 to v7.3.6 patch
   See changes: symfony/error-handler@v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/error-handler/releases/tag/v7.3.6

 - symfony/http-kernel updated from v7.3.3 to v7.3.6 patch
   See changes: symfony/http-kernel@v7.3.3...v7.3.6
   Release notes: https://github.com/symfony/http-kernel/releases/tag/v7.3.6

 - mck89/peast updated from v1.17.2 to v1.17.4 patch
   See changes: mck89/peast@v1.17.2...v1.17.4
   Release notes: https://github.com/mck89/peast/releases/tag/v1.17.4

 - drupal/core updated from 11.2.4 to 11.2.7 patch
   See changes: drupal/core@11.2.4...11.2.7
   Release notes: https://github.com/drupal/core/releases/tag/11.2.7

 - symfony/browser-kit updated from v7.3.2 to v7.3.6 patch
   See changes: symfony/browser-kit@v7.3.2...v7.3.6
   Release notes: https://github.com/symfony/browser-kit/releases/tag/v7.3.6

 - drevops/behat-steps updated from 3.1.0 to 3.3.1 minor
   See changes: drevops/behat-steps@3.1.0...3.3.1
   Release notes: https://github.com/drevops/behat-steps/releases/tag/3.3.1

 - openai-php/client updated from v0.16.1 to v0.18.0 minor
   See changes: openai-php/client@v0.16.1...v0.18.0
   Release notes: https://github.com/openai-php/client/releases/tag/v0.18.0

 - drupal/ai updated from 1.1.3 to 1.2.2 minor

 - drupal/ai_provider_openai updated from 1.1.0 to 1.2.0 minor

 - drupal/webform updated from 6.3.0-beta4 to 6.3.0-beta5 patch

 - drupal/pathauto updated from 1.13.0 to 1.14.0 minor

 - drupal/linkit updated from 7.0.8 to 7.0.11 patch

 - symfony/lock updated from v7.3.2 to v7.3.4 patch
   See changes: symfony/lock@v7.3.2...v7.3.4
   Release notes: https://github.com/symfony/lock/releases/tag/v7.3.4

 - sebastian/exporter updated from 6.3.0 to 6.3.2 patch
   See changes: sebastianbergmann/exporter@6.3.0...6.3.2
   Release notes: https://github.com/sebastianbergmann/exporter/releases/tag/6.3.2

 - phpunit/phpunit updated from 11.5.36 to 11.5.43 patch
   See changes: sebastianbergmann/phpunit@11.5.36...11.5.43
   Release notes: https://github.com/sebastianbergmann/phpunit/releases/tag/11.5.43

 - phpstan/phpstan updated from 2.1.22 to 2.1.31 patch

 - webmozart/assert updated from 1.11.0 to 1.12.1 minor
   See changes: webmozarts/assert@1.11.0...1.12.1
   Release notes: https://github.com/webmozarts/assert/releases/tag/1.12.1

 - phpspec/prophecy updated from v1.22.0 to v1.23.1 minor
   See changes: phpspec/prophecy@v1.22.0...v1.23.1
   Release notes: https://github.com/phpspec/prophecy/releases/tag/v1.23.1

 - open-telemetry/context updated from 1.3.1 to 1.4.0 minor
   See changes: opentelemetry-php/context@1.3.1...1.4.0
   Release notes: https://github.com/opentelemetry-php/context/releases/tag/1.4.0

 - open-telemetry/api updated from 1.5.0 to 1.7.0 minor
   See changes: opentelemetry-php/api@1.5.0...1.7.0
   Release notes: https://github.com/opentelemetry-php/api/releases/tag/1.7.0

 - open-telemetry/sdk updated from 1.7.1 to 1.9.0 minor
   See changes: opentelemetry-php/sdk@1.7.1...1.9.0
   Release notes: https://github.com/opentelemetry-php/sdk/releases/tag/1.9.0

 - google/protobuf updated from v4.32.0 to v4.33.0 minor
   See changes: protocolbuffers/protobuf-php@v4.32.0...v4.33.0
   Release notes: https://github.com/protocolbuffers/protobuf-php/releases/tag/v4.33.0

 - open-telemetry/gen-otlp-protobuf updated from 1.5.0 to 1.8.0 minor
   See changes: opentelemetry-php/gen-otlp-protobuf@1.5.0...1.8.0
   Release notes: https://github.com/opentelemetry-php/gen-otlp-protobuf/releases/tag/1.8.0

 - micheh/phpcs-gitlab updated from 2.0.0 to 2.1.0 minor
   See changes: micheh/phpcs-gitlab@2.0.0...2.1.0
   Release notes: https://github.com/micheh/phpcs-gitlab/releases/tag/2.1.0

 - mglaman/phpstan-drupal updated from 2.0.9 to 2.0.10 patch
   See changes: mglaman/phpstan-drupal@2.0.9...2.0.10
   Release notes: https://github.com/mglaman/phpstan-drupal/releases/tag/2.0.10

 - marc-mabe/php-enum updated from v4.7.1 to v4.7.2 patch
   See changes: marc-mabe/php-enum@v4.7.1...v4.7.2
   Release notes: https://github.com/marc-mabe/php-enum/releases/tag/v4.7.2

 - justinrainbow/json-schema updated from 6.5.1 to 6.6.1 minor
   See changes: jsonrainbow/json-schema@6.5.1...6.6.1
   Release notes: https://github.com/jsonrainbow/json-schema/releases/tag/6.6.1

 - squizlabs/php_codesniffer updated from 3.13.4 to 3.13.5 patch
   See changes: PHPCSStandards/PHP_CodeSniffer@3.13.4...3.13.5
   Release notes: https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/tag/3.13.5

 - slevomat/coding-standard updated from 8.22.0 to 8.22.1 patch
   See changes: slevomat/coding-standard@8.22.0...8.22.1
   Release notes: https://github.com/slevomat/coding-standard/releases/tag/8.22.1

 - sirbrillig/phpcs-variable-analysis updated from v2.12.0 to v2.13.0 minor
   See changes: sirbrillig/phpcs-variable-analysis@v2.12.0...v2.13.0
   Release notes: https://github.com/sirbrillig/phpcs-variable-analysis/releases/tag/v2.13.0

 - drupal/coder updated from 8.3.30 to 8.3.31 patch
   See changes: pfrenssen/coder@8.3.30...8.3.31
   Release notes: https://github.com/pfrenssen/coder/releases/tag/8.3.31

 - composer/composer updated from 2.8.11 to 2.8.12 patch
   See changes: composer/composer@2.8.11...2.8.12
   Release notes: https://github.com/composer/composer/releases/tag/2.8.12

 - colinodell/psr-testlogger updated from v1.3.0 to v1.3.1 patch
   See changes: colinodell/psr-testlogger@v1.3.0...v1.3.1
   Release notes: https://github.com/colinodell/psr-testlogger/releases/tag/v1.3.1

 - drupal/core-dev updated from 11.2.4 to 11.2.7 patch
   See changes: drupal/core-dev@11.2.4...11.2.7
   Release notes: https://github.com/drupal/core-dev/releases/tag/11.2.7

 - drupal/core-recommended updated from 11.2.4 to 11.2.7 patch
   See changes: drupal/core-recommended@11.2.4...11.2.7
   Release notes: https://github.com/drupal/core-recommended/releases/tag/11.2.7

 - ezyang/htmlpurifier updated from v4.18.0 to v4.19.0 minor
   See changes: ezyang/htmlpurifier@v4.18.0...v4.19.0
   Release notes: https://github.com/ezyang/htmlpurifier/releases/tag/v4.19.0

 - drupal/entity_usage updated from 2.0.0-beta24 to 2.0.0-beta25 patch

 - drupal/metatag updated from 2.1.2 to 2.2.0 minor

 - drupal/redis updated from 1.10.0 to 1.11.0 minor

 - solarium/solarium updated from 6.3.7 to 6.4.1 minor
   See changes: solariumphp/solarium@6.3.7...6.4.1
   Release notes: https://github.com/solariumphp/solarium/releases/tag/6.4.1

 - laminas/laminas-stdlib updated from 3.20.0 to 3.21.0 minor
   See changes: laminas/laminas-stdlib@3.20.0...3.21.0
   Release notes: https://github.com/laminas/laminas-stdlib/releases/tag/3.21.0

 - drupal/search_api updated from 1.38.0 to 1.40.0 minor

 - drupal/stage_file_proxy updated from 3.1.5 to 3.1.6 patch

 - drupal/views_bulk_operations updated from 4.3.4 to 4.4.4 minor

 - psy/psysh updated from v0.12.10 to v0.12.14 patch
   See changes: bobthecow/psysh@v0.12.10...v0.12.14
   Release notes: https://github.com/bobthecow/psysh/releases/tag/v0.12.14

 - laravel/prompts updated from v0.3.6 to v0.3.7 patch
   See changes: laravel/prompts@v0.3.6...v0.3.7
   Release notes: https://github.com/laravel/prompts/releases/tag/v0.3.7

 - rector/rector updated from 2.1.6 to 2.2.7 minor
   See changes: rectorphp/rector@2.1.6...2.2.7
   Release notes: https://github.com/rectorphp/rector/releases/tag/2.2.7

 - palantirnet/drupal-rector updated from 0.21.0 to 0.21.1 patch
   See changes: palantirnet/drupal-rector@0.21.0...0.21.1
   Release notes: https://github.com/palantirnet/drupal-rector/releases/tag/0.21.1

 - vincentlanglet/twig-cs-fixer updated from 3.9.0 to 3.10.0 minor
   See changes: VincentLanglet/Twig-CS-Fixer@3.9.0...3.10.0
   Release notes: https://github.com/VincentLanglet/Twig-CS-Fixer/releases/tag/3.10.0
```
@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/vortex-update-25.10.0 branch from f5bf7ce to a770799 Compare November 10, 2025 01:03
@AlexSkrypnyk AlexSkrypnyk temporarily deployed to PR-119 November 10, 2025 01:08 Inactive
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
scripts/vortex/provision.sh (1)

196-227: Verify database provisioning logic handles all cases correctly.

The conditional logic for database provisioning with VORTEX_DB_IMAGE is complex. Let me trace through the scenarios:

  1. Existing site + DB image: Preserves site, marks DB as fresh (line 204)
  2. No site + DB image: Errors out as corrupted image (lines 216-221)
  3. Existing site + dump + override: Imports dump (line 207)
  4. No site + dump: Imports dump, marks as fresh (lines 223-226)

The logic for scenario 2 (lines 216-221) seems incorrect. If there's a DB image but no site detected, this could be the first provision with a pre-built image, not necessarily a corrupted image. Consider allowing the container to start with the baked-in database.

Consider revising lines 216-221:

     if [ -n "${VORTEX_DB_IMAGE-}" ]; then
       note "Database is baked into the container image."
-      note "Looks like the database in the container image is corrupted."
-      note "Site content was not changed."
-      exit 1
+      note "Site will be provisioned from the container image."
+      # Let the downstream scripts know that the database is fresh.
+      export VORTEX_PROVISION_OVERRIDE_DB=1
     fi

Or if this truly is an error condition, add more context about why this combination is invalid.

tests/phpunit/Drupal/SwitchableSettingsTest.php (1)

319-533: Update test data to include missing Shield configuration keys.

Verification confirms the test expectations are incomplete. The actual settings file unconditionally sets method and paths keys (lines 45-46 in web/sites/default/includes/modules/settings.shield.php):

$config['shield.settings']['method'] = 0;
$config['shield.settings']['paths'] = '/.well-known/acme-challenge/*';

All test cases in dataProviderShield() must include these keys in their expected configuration arrays to match the actual Shield module settings structure. Without them, the test data does not accurately reflect the real configuration behavior.

♻️ Duplicate comments (7)
scripts/vortex/deploy-lagoon.sh (1)

5-5: Modification of core Vortex script violates coding guidelines.

This file is under scripts/vortex/ and must not be modified, per coding guidelines. Even documentation-only changes compromise the integrity of core Vortex scripts. Revert this file to the upstream version and maintain pristine core Vortex scripts.

As per coding guidelines.

scripts/vortex/task-custom-lagoon.sh (1)

5-5: Modification of core Vortex script violates coding guidelines.

This file is under scripts/vortex/ and must not be modified, per coding guidelines. Even documentation-only changes compromise the integrity of core Vortex scripts. Revert this file to the upstream version and maintain pristine core Vortex scripts.

As per coding guidelines.

.eslintignore (1)

10-10: Unnecessary no-op change adds noise to the PR.

The *.min.css entry has been deleted and immediately re-added with no actual change, creating a confusing diff. Remove this redundant modification so the file remains identical to the base branch.

scripts/vortex/notify-github.sh (1)

20-20: Do not modify files under scripts/vortex/ — these are core Vortex scripts.

Per the coding guidelines, files under scripts/vortex/ should not be modified. This file is a core Vortex script and changes to it should be pushed upstream to the Vortex project instead of being maintained locally.

If this change is necessary for your deployment, consider:

  1. Submitting the improvement upstream to the Vortex project
  2. Creating a local wrapper or override script outside the scripts/vortex/ directory if local customization is needed
  3. Coordinating with the Vortex maintainers to incorporate the fix in a future release

As per coding guidelines.

scripts/vortex/export-db-image.sh (1)

85-85: Do not modify core Vortex scripts.

Per coding guidelines, files under scripts/vortex/ are core Vortex scripts and should not be modified. This change to the user-facing message should be reverted.

docs/faqs.md (2)

59-59: Fix bare URL formatting.

The Xdebug documentation link should use proper markdown link formatting instead of a bare URL.

Apply this diff:

-See https://www.vortextemplate.com/docs/tools/xdebug for more details.
+See [Xdebug documentation](https://www.vortextemplate.com/docs/tools/xdebug) for more details.

145-146: Fix time unit spacing.

The time unit "10min" should have proper spacing between the number and unit.

Apply this diff:

-Behat tests with `@javascript` tag sometimes get stuck for about 10min then
+Behat tests with `@javascript` tag sometimes get stuck for about 10 min then
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f5bf7ce and a770799.

⛔ Files ignored due to path filters (2)
  • composer.lock is excluded by !**/*.lock
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (47)
  • .ahoy.yml (7 hunks)
  • .docker/clamav.dockerfile (1 hunks)
  • .docker/cli.dockerfile (2 hunks)
  • .docker/database.dockerfile (1 hunks)
  • .docker/nginx-drupal.dockerfile (2 hunks)
  • .docker/php.dockerfile (1 hunks)
  • .docker/solr.dockerfile (1 hunks)
  • .dockerignore (0 hunks)
  • .editorconfig (1 hunks)
  • .env (1 hunks)
  • .eslintignore (1 hunks)
  • .github/workflows/build-test-deploy.yml (13 hunks)
  • .gitignore (1 hunks)
  • .prettierrc.json (1 hunks)
  • .stylelintrc.js (1 hunks)
  • CLAUDE.md (2 hunks)
  • README.md (1 hunks)
  • behat.yml (1 hunks)
  • composer.json (1 hunks)
  • config/default/entity_clone.cloneable_entities.yml (1 hunks)
  • config/default/filter.format.webform_default.yml (1 hunks)
  • config/default/user.role.civictheme_site_administrator.yml (1 hunks)
  • config/default/webform.settings.yml (1 hunks)
  • config/default/webform.webform.contact.yml (1 hunks)
  • config/local/purge_control.settings.yml (0 hunks)
  • docker-compose.yml (7 hunks)
  • docs/ci.md (1 hunks)
  • docs/faqs.md (4 hunks)
  • package.json (1 hunks)
  • phpcs.xml (1 hunks)
  • phpmd.xml (0 hunks)
  • phpstan.neon (1 hunks)
  • phpunit.xml (1 hunks)
  • rector.php (1 hunks)
  • scripts/vortex/deploy-lagoon.sh (1 hunks)
  • scripts/vortex/export-db-file.sh (0 hunks)
  • scripts/vortex/export-db-image.sh (1 hunks)
  • scripts/vortex/notify-github.sh (1 hunks)
  • scripts/vortex/provision.sh (4 hunks)
  • scripts/vortex/task-custom-lagoon.sh (1 hunks)
  • tests/behat/bootstrap/FeatureContext.php (2 hunks)
  • tests/behat/features/login.feature (1 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (1 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (20 hunks)
  • web/sites/default/includes/modules/settings.redis.php (3 hunks)
  • web/sites/default/includes/modules/settings.trusted_hosts.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
💤 Files with no reviewable changes (4)
  • scripts/vortex/export-db-file.sh
  • .dockerignore
  • config/local/purge_control.settings.yml
  • phpmd.xml
🧰 Additional context used
📓 Path-based instructions (5)
scripts/vortex/**

📄 CodeRabbit inference engine (CLAUDE.md)

Do not modify files under scripts/vortex (core Vortex scripts)

Files:

  • scripts/vortex/task-custom-lagoon.sh
  • scripts/vortex/deploy-lagoon.sh
  • scripts/vortex/export-db-image.sh
  • scripts/vortex/notify-github.sh
  • scripts/vortex/provision.sh
tests/behat/features/**/*.feature

📄 CodeRabbit inference engine (CLAUDE.md)

tests/behat/features/**/*.feature: All Behat feature files must start with the required user story format (Feature title, As a [user type], I want to…, So that…)
Use only the standard user types in Behat user stories: 'As a site visitor', 'As a site administrator', 'As a content editor', 'As a authenticated user'
Test data in Behat scenarios must use the [TEST] prefix and follow conventions (use numbered patterns like [TEST] Topic 1/2, avoid real names like 'Workshop' or 'Training', be descriptive)

Files:

  • tests/behat/features/login.feature
config/**

📄 CodeRabbit inference engine (CLAUDE.md)

All Drupal configuration changes must be exported to code and committed under the config/ directories (default/dev/stage/ci)

Files:

  • config/default/entity_clone.cloneable_entities.yml
  • config/default/webform.settings.yml
  • config/default/user.role.civictheme_site_administrator.yml
  • config/default/webform.webform.contact.yml
  • config/default/filter.format.webform_default.yml
tests/phpunit/**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

Store unit/integration tests for PHPUnit under tests/phpunit/

Files:

  • tests/phpunit/Drupal/SwitchableSettingsTest.php
  • tests/phpunit/Drupal/SettingsTestCase.php
composer.json

📄 CodeRabbit inference engine (CLAUDE.md)

When adding JS/CSS libraries to Drupal as Composer packages, define them in composer.json repositories with type "drupal-library" and require them via Composer

Files:

  • composer.json
🧠 Learnings (10)
📓 Common learnings
Learnt from: AlexSkrypnyk
Repo: drevops/website PR: 64
File: config/default/views.view.scheduled_transitions.yml:428-456
Timestamp: 2025-06-19T10:24:22.159Z
Learning: Valkey is a fork of Redis that maintains full API compatibility and has equivalent memory usage and performance characteristics. A Redis to Valkey migration does not impact memory pressure or performance.
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to scripts/vortex/** : Do not modify files under scripts/vortex (core Vortex scripts)

Applied to files:

  • scripts/vortex/task-custom-lagoon.sh
  • scripts/vortex/deploy-lagoon.sh
  • scripts/vortex/export-db-image.sh
  • scripts/vortex/notify-github.sh
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/features/**/*.feature : All Behat feature files must start with the required user story format (Feature title, As a [user type], I want to…, So that…)

Applied to files:

  • tests/behat/features/login.feature
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/features/**/*.feature : Use only the standard user types in Behat user stories: 'As a site visitor', 'As a site administrator', 'As a content editor', 'As a authenticated user'

Applied to files:

  • tests/behat/features/login.feature
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/features/**/*.feature : Test data in Behat scenarios must use the [TEST] prefix and follow conventions (use numbered patterns like [TEST] Topic 1/2, avoid real names like 'Workshop' or 'Training', be descriptive)

Applied to files:

  • tests/behat/features/login.feature
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/behat/behat.yml : Keep Behat configuration in tests/behat/behat.yml

Applied to files:

  • tests/behat/features/login.feature
  • behat.yml
📚 Learning: 2025-06-19T10:24:22.159Z
Learnt from: AlexSkrypnyk
Repo: drevops/website PR: 64
File: config/default/views.view.scheduled_transitions.yml:428-456
Timestamp: 2025-06-19T10:24:22.159Z
Learning: Valkey is a fork of Redis that maintains full API compatibility and has equivalent memory usage and performance characteristics. A Redis to Valkey migration does not impact memory pressure or performance.

Applied to files:

  • tests/phpunit/Drupal/SwitchableSettingsTest.php
  • CLAUDE.md
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: All local development and project commands should be executed via the ahoy task runner (use the `ahoy` prefix)

Applied to files:

  • docs/faqs.md
  • .ahoy.yml
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to tests/phpunit/**/*.php : Store unit/integration tests for PHPUnit under tests/phpunit/

Applied to files:

  • phpunit.xml
📚 Learning: 2025-09-09T03:52:28.058Z
Learnt from: CR
Repo: drevops/website PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-09-09T03:52:28.058Z
Learning: Applies to composer.json : When adding JS/CSS libraries to Drupal as Composer packages, define them in composer.json repositories with type "drupal-library" and require them via Composer

Applied to files:

  • CLAUDE.md
  • composer.json
🧬 Code graph analysis (3)
scripts/vortex/export-db-image.sh (1)
scripts/vortex/export-db.sh (1)
  • note (24-24)
tests/phpunit/Drupal/SwitchableSettingsTest.php (1)
tests/phpunit/Drupal/SettingsTestCase.php (2)
  • setEnvVars (132-163)
  • requireSettingsFile (202-221)
scripts/vortex/provision.sh (1)
scripts/vortex/export-db-image.sh (2)
  • note (32-32)
  • info (34-34)
🪛 LanguageTool
docs/faqs.md

[grammar] ~145-~145: Ensure spelling is correct
Context: ...ript` tag sometimes get stuck for about 10min then fail. The Chrome container randoml...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.18.1)
docs/ci.md

15-15: Bare URL used

(MD034, no-bare-urls)

docs/faqs.md

59-59: Bare URL used

(MD034, no-bare-urls)

🪛 PHPMD (2.15.0)
tests/phpunit/Drupal/SwitchableSettingsTest.php

243-243: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


244-244: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


292-292: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


293-293: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)


294-294: Avoid using undefined variables such as '$settings' which will lead to PHP notices. (undefined)

(UndefinedVariable)

🪛 YAMLlint (1.37.1)
docker-compose.yml

[warning] 160-160: too few spaces before comment: expected 2

(comments)


[warning] 172-172: too few spaces before comment: expected 2

(comments)

⏰ 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). (2)
  • GitHub Check: build (0)
  • GitHub Check: build (1)
🔇 Additional comments (72)
.gitignore (1)

4-4: Nice documentation clarity improvement.

The updated terminology "webroot" is more precise than "web" and aligns with standard terminology for the web root directory.

config/default/user.role.civictheme_site_administrator.yml (1)

87-90: Permission addition aligns with webform module updates.

The addition of "administer webform overview" permission is properly positioned alphabetically and consistent with the expanded webform permissions already assigned to the Site Administrator role. The change aligns with the drupal/webform package update included in this PR.

Please verify that "administer webform overview" is a valid permission provided by the updated webform module and that its inclusion is necessary for Site Administrator functionality.

config/default/filter.format.webform_default.yml (2)

11-12: Confirm the roles restriction is intentional.

The configuration now restricts the webform default filter format to authenticated users only. Verify that this access control change is intentional and aligns with the PR objectives. If this restriction was unintended, remove the roles section.


1-1: No issues found — changes are expected Drupal config export behavior.

The uuid: null in exported Drupal config is valid and occurs during standard config import/export operations. The _core.default_config_hash removal is expected for exported config files, as this property is only present for extension-provided configuration, not for UI-created or imported config. The roles: - authenticated addition is a standard Drupal text format access control configuration that grants authenticated users access to the webform_default filter format. All changes align with the git commit "Updated to Vortex 25.10.0 and updated packages."

config/default/webform.webform.contact.yml (1)

264-264: Drupal configuration properly exported and committed.

The addition of the langcode: '' field under the email notification handler is a standard configuration export. The file is correctly placed under config/default/ per coding guidelines.

.editorconfig (1)

28-29: Reasonable editor configuration specificity.

The new [package.json] rule with indent_size = 2 correctly takes precedence over the broader [*.{json,lock}] rule. This allows package.json to use 2-space indentation while maintaining 4-space indentation for other JSON files.

.docker/solr.dockerfile (1)

8-8: Version bump appropriate for Vortex update.

Base image updated from 25.8.0 to 25.9.0 as part of the broader Vortex upgrade. The simplification to a single-stage build is reasonable.

README.md (1)

17-17: Badge update correctly reflects Vortex version upgrade.

The README Vortex badge has been properly updated from 25.8.1 to 25.10.0 and points to the correct tree reference. This aligns with the PR's primary objective.

.docker/php.dockerfile (1)

15-15: Base image version update aligned with Vortex upgrade.

PHP FPM base image updated from 25.8.0 to 25.10.0 as part of the coordinated Vortex infrastructure upgrade across the PR.

config/default/webform.settings.yml (1)

32-32: LGTM! Clear user-facing message for file upload quota.

The new configuration setting provides clear feedback when form file upload quotas are exceeded. The message format with the %quota placeholder follows Drupal conventions.

.docker/cli.dockerfile (3)

5-5: Appropriate shellcheck exclusion for consolidated directory creation.

Adding SC2174 to the ignore list is appropriate for the consolidated mkdir -p -m command at line 86, which creates multiple directories with explicit permissions.


10-10: Base image upgrade to Vortex 25.10.0.

The base image upgrade aligns with the PR objectives and is consistent with version bumps across other Dockerfiles in this PR.


86-86: Verify that the permission change from 0770 to 2775 was intentional and aligns with security requirements.

The diff shows a change from separate mkdir and chmod 0770 commands to consolidated mkdir -p -m 2775. The hadolint ignore line was updated to include SC2174, suggesting this structural change was deliberate.

However, the commit message does not document why the permission mode changed. The security implications are material:

  • 0770 = drwxrwx--- (owner+group full access, others denied) — conservative approach for private data.
  • 2775 = drwxrwsr-x with setgid bit (owner/group rwx, others can read/execute) — enables collaborative workflows but allows non-group users to traverse and read directories.

Running as root in containers reduces the protective value of restrictive modes; conversely, non-root processes benefit from controlled group membership and setgid sharing.

This change allows other users (beyond owner/group) to list and access both the public and private files directories. Confirm this is intentional and aligns with your container's security posture and user isolation model.

phpcs.xml (1)

15-16: LGTM! Enforces consistent snake_case naming conventions.

Adding these DrevOps naming convention rules ensures consistent snake_case formatting for local variables and function parameters across the codebase.

.docker/clamav.dockerfile (2)

13-13: Base image upgrade to 25.10.0.

The commons base image upgrade aligns with the PR objectives and is consistent with other Dockerfile updates.


15-15: ClamAV minor version update.

Upgrading from 1.4.3 to 1.5.1 brings in bug fixes and potential security updates for the ClamAV antivirus engine.

.docker/nginx-drupal.dockerfile (2)

14-14: Base image upgrade to 25.10.0.

Consistent with the Vortex 25.10.0 upgrade across all Dockerfiles in this PR.


24-25: Added nginx permissions fix.

The fix-permissions call ensures that nginx configuration files have appropriate ownership and permissions, which is particularly important in containerized environments with varying user/group IDs.

.stylelintrc.js (1)

39-39: LGTM! Cosmetic formatting improvement.

Added trailing newline follows standard file formatting conventions.

web/sites/default/includes/modules/settings.trusted_hosts.php (1)

16-16: PHP version requirement is already documented—no action needed.

The verification confirms that composer.json specifies PHP 8.3.24 as the minimum platform requirement, which exceeds the 8.1+ threshold needed for first-class callable syntax. The code change is compatible with the project's documented PHP version constraint.

.docker/database.dockerfile (1)

8-8: LGTM!

The database image version bump to 25.10.0 is consistent with the PR's objective to upgrade to Vortex 25.10.0.

tests/behat/features/login.feature (2)

12-13: Good addition of path verification.

Adding the path assertion before the screenshot capture improves test reliability by ensuring navigation completed successfully before visual capture.


19-20: Good addition of path verification.

Adding the path assertion before the screenshot capture improves test reliability by ensuring navigation completed successfully before visual capture.

behat.yml (1)

102-106: LGTM!

Adding screenshot metadata capture (url, feature, step, datetime) provides valuable debugging context when tests fail. This complements the path verification steps added to test scenarios.

docs/faqs.md (3)

68-68: LGTM!

The updated Behat debugging command with the --xdebug flag provides clearer guidance for developers debugging Behat tests.


79-81: LGTM!

This clarification helps developers understand that ahoy provision is sufficient when switching branches, avoiding unnecessary full rebuilds with ahoy build.


111-112: LGTM!

The distinction between "Remote patch description" and "Local patch description" improves clarity in the composer patches documentation.

web/sites/default/settings.php (7)

35-41: LGTM!

The refactored database settings using grouped evaluations with explicit final defaults improves code readability and makes the fallback hierarchy clearer.


53-54: LGTM!

Using the ??= null coalescing assignment operator is more idiomatic and concise for PHP 7.4+.


64-64: LGTM!

The grouped evaluation pattern for temporary files path is consistent with other refactoring in this file and improves clarity.


76-77: LGTM!

Consistent grouped evaluation pattern for timezone settings improves code maintainability.


80-80: LGTM!

The maintenance theme resolution using grouped evaluation is consistent with the broader refactoring pattern in this file.


138-139: LGTM!

Renaming the variable from $filename to $file is more accurate since glob() returns full paths, not just filenames.


157-158: LGTM!

Consistent variable naming using $file improves code clarity.

rector.php (1)

45-125: LGTM!

The migration from closure-based configuration to Rector's modern fluent API (RectorConfig::configure()) improves maintainability and follows current best practices. The configuration includes:

  • Explicit path handling with __DIR__
  • Comprehensive rule sets (PHP 8.3, code quality, Drupal 9/10)
  • Proper Drupal autoloading via DrupalFinderComposerRuntime
  • Drupal-specific file extensions
phpstan.neon (1)

14-14: LGTM! PHP version updated to 8.3.27.

The PHPStan configuration now targets PHP 8.3.27, aligning with the broader PHP ecosystem updates in this PR.

.prettierrc.json (1)

6-6: LGTM! JSDoc plugin configured.

The prettier-plugin-jsdoc plugin is now enabled, matching the new dependency added in package.json. This will ensure consistent JSDoc formatting across the project.

phpunit.xml (1)

22-22: LGTM! PHPUnit schema updated to 11.5.

The schema reference now points to PHPUnit 11.5, consistent with the PHPUnit upgrade to 11.5.43 mentioned in the PR objectives.

tests/phpunit/Drupal/SettingsTestCase.php (1)

65-65: LGTM! Environment variable prefix updated from Valkey to Redis.

The allowed environment variables list now uses REDIS_ instead of VALKEY_, aligning with the broader Redis migration in this PR. Based on learnings, Valkey maintains full API compatibility with Redis, so this change preserves existing functionality while standardizing on Redis terminology.

.env (1)

73-74: LGTM! Documentation updated for Redis integration.

The comment now clearly indicates Redis integration, consistent with the project's migration away from Valkey terminology. The removed documentation reference simplifies the configuration comment.

tests/behat/bootstrap/FeatureContext.php (2)

33-33: LGTM! JavascriptTrait imported.

The import enables JavaScript-related step definitions in the Behat test context.


59-59: LGTM! JavascriptTrait applied.

The trait usage activates JavaScript testing capabilities for Behat scenarios, complementing the existing test step traits.

package.json (4)

22-22: LGTM! ESLint import plugin updated.

Minor version bump for eslint-plugin-import (2.31.0 → 2.32.0).


24-24: LGTM! ESLint YAML plugin updated.

Minor version bump for eslint-plugin-yml (1.16.0 → 1.19.0).


26-26: LGTM! JSDoc Prettier plugin added.

The prettier-plugin-jsdoc dependency aligns with the plugin configuration added in .prettierrc.json.


27-27: LGTM! Stylelint updated.

Minor version bump for stylelint (16.11.0 → 16.25.0).

web/sites/default/includes/modules/settings.redis.php (4)

7-9: LGTM! Documentation updated for Redis.

The file header now correctly describes Redis module integration and the use of DRUPAL_REDIS_ environment variables.


20-21: LGTM! Comments updated to reference Redis service.

The deployment workflow comments now correctly reference the Redis service provisioning.


31-32: LGTM! Redis environment variables updated.

The host and port configuration now uses REDIS_HOST and REDIS_SERVICE_PORT environment variables with appropriate fallback values, consistent with the Valkey to Redis migration across the codebase.


38-40: LGTM! Redis extension loading condition updated.

The condition now checks for the redis PHP extension and references the VORTEX_REDIS_EXTENSION_LOADED environment variable, aligning with the Redis-focused configuration throughout this PR.

tests/phpunit/Drupal/SwitchableSettingsTest.php (2)

231-252: LGTM! Redis migration aligns with codebase changes.

The rename from testValkey() to testRedis() and the corresponding environment variable updates (VALKEY_* → REDIS_*) are consistent with the broader migration documented in the PR. As per learnings, Valkey is a Redis fork with full API compatibility, so this terminology update is purely cosmetic.

Note on static analysis: The PHPMD warnings about undefined $settings variables (lines 243-244) are false positives. The $settings array is populated by requireSettingsFile() at line 241, which includes the Drupal settings.php file that defines this variable.


279-301: Clear test name reflects the actual behavior.

The rename from testRedisValkeyPrecedence() to testRedisCustomPort() better describes what this test actually validates: Redis configuration with custom host and port settings.

composer.json (1)

6-72: Dependency updates look good.

The version updates follow semantic versioning and include:

  • Drupal core patch update (11.2.4 → 11.2.7)
  • Testing framework updates (Behat 3.23 → 3.26)
  • PHP tooling updates (PHPStan, Rector, PHPSpec, etc.)
  • Drupal contrib module updates (minor/patch bumps)

All changes are appropriate for a routine maintenance update.

CLAUDE.md (2)

308-319: LGTM! Documentation updated for Redis.

The section header and comments correctly reflect the Redis caching service, consistent with the Valkey→Redis migration across the project.


350-531: ---

Comprehensive patching guide is valuable.

The new "Patching Contributed Modules" section provides detailed, step-by-step instructions covering patch storage and configuration, creating patches from git repositories, testing patch application, best practices, and troubleshooting. This is excellent documentation that will help developers maintain the project. The emphasis on using git repositories (not tarballs) and testing patch application is particularly good.

scripts/vortex/provision.sh (1)

64-66: New database image support is a useful optimization.

The VORTEX_DB_IMAGE variable enables using pre-built database container images, which can significantly speed up provisioning in CI/CD pipelines.

.github/workflows/build-test-deploy.yml (4)

18-20: Tag-based workflow triggers enable release automation.

Adding tag triggers allows the workflow to run on version releases, enabling automated deployment for tagged releases.


55-57: Container image version updates are consistent.

All three job containers updated from drevops/ci-runner:25.8.0 to 25.10.0, consistent with the Vortex version upgrade in this PR.

Also applies to: 163-165, 373-375


244-250: Artifact handling improved with tar-based approach.

The workflow now:

  1. Exports built codebase to a tar archive (line 249)
  2. Uploads the tar file as an artifact (lines 351-359)
  3. Downloads and unpacks the tar during deployment (lines 399-410)

This is more robust than direct directory copying and follows CI/CD best practices.

Also applies to: 351-359, 399-410


424-424: Deploy mode correctly distinguishes tags from branches.

Line 424 sets VORTEX_DEPLOY_MODE based on whether the trigger is a tag (refs/tags/) or a branch, enabling different deployment strategies for releases vs. branch deployments.

docker-compose.yml (6)

46-46: Default theme set to Olivero is practical.

Setting DRUPAL_THEME default to "olivero" (Drupal's default theme) provides a sensible fallback for new projects.


56-57: Redis service updates align with project-wide migration.

The service name change from valkey to redis and comment updates are consistent with the Valkey→Redis migration across the codebase. The image used (uselagoon/valkey-8:25.10.0) is still Valkey under the hood, maintaining full compatibility. Based on learnings, this has no performance impact.

Based on learnings

Also applies to: 169-172


103-105: CLI dependency on wait-for-dependencies improves reliability.

Adding an explicit dependency ensures that services (database, Redis, Solr, ClamAV) are ready before the CLI container starts, reducing startup race conditions.


160-160: Database image override enables pre-built database optimization.

The VORTEX_DB_IMAGE variable allows overriding the default database image with a pre-built one containing seeded data, which can significantly speed up CI/CD pipelines.

Note: YAMLlint warning about comment spacing on this line is a style nitpick and can be safely ignored.


217-229: Enhanced wait-for-dependencies service with robust health checks.

The renamed service (wait-for-dependencies) now:

  • Checks multiple services: clamav, database, redis, solr
  • Includes a Solr HTTP health check (line 229)
  • Uses updated image version (25.9.0)

This provides more comprehensive startup coordination.


204-204: Chrome container updated to latest Selenium version.

The Selenium Chromium image bump from 139.0 to 142.0 provides the latest browser version for Behat testing.

.ahoy.yml (6)

25-26: Login prompt control prevents duplicate output.

Setting VORTEX_SHOW_LOGIN=0 during build and showing it separately with ahoy info (line 26) prevents duplicate login links in the output.


102-104: Flush-redis command replaces flush-valkey.

Consistent with the Redis migration, the command name and implementation now reference Redis instead of Valkey.


125-127: Simplified reload-db command is cleaner.

The streamlined approach directly removes, rebuilds, and restarts the database container without intermediate dependencies.


133-135: Provision command integrates database image support.

The updated logic:

  1. Conditionally reloads the database if VORTEX_DB_IMAGE is set (line 133)
  2. Runs provisioning (line 134)
  3. Conditionally shows login only if VORTEX_SHOW_LOGIN=1 (line 135)

This integrates the new pre-built database image feature and provides better control over login prompt display.


188-188: Rector command simplification—verify this is intentional.

The --clear-cache flag was removed from both lint and fix commands:

  • Line 188: rector --dry-run (was rector --clear-cache --dry-run)
  • Line 211: rector (was rector --clear-cache)

Rector typically caches parse results for performance. Removing --clear-cache means cached results will be used across runs. This is fine if you want faster linting, but may miss issues if cached data becomes stale.

Confirm whether removing --clear-cache is intentional. If Rector should always use fresh analysis, restore the flag:

-      ahoy cli vendor/bin/rector --dry-run
+      ahoy cli vendor/bin/rector --clear-cache --dry-run
-      ahoy cli vendor/bin/rector
+      ahoy cli vendor/bin/rector --clear-cache

Also applies to: 211-211


248-250: Improved Xdebug debug command with better UX.

The rewritten command:

  1. Checks if Xdebug is already enabled
  2. Enables it if needed
  3. Provides clear enable/disable instructions

This is more user-friendly than the previous implementation.

Comment on lines +66 to +67
- ai_prompt_type
- ai_prompt
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Configuration properly exported and aligns with package updates.

The new cloneable entity types ai_prompt_type and ai_prompt are properly formatted and consistent with existing entries. This change aligns with the drupal/ai and drupal/ai_provider_openai package updates mentioned in the PR.

Verify that the entity types ai_prompt_type and ai_prompt actually exist in the drupal/ai module:


🏁 Script executed:

#!/bin/bash
# Description: Verify that ai_prompt_type and ai_prompt entity types exist in drupal/ai module

# Search for entity definitions or handlers in the ai module
fd -e php -x grep -l "ai_prompt" {} \; | head -20

# Alternative: Check if there are entity type declarations
rg -i "entity_type.*ai_prompt" --type=php

Length of output: 0



---

🏁 Script executed:

```shell
#!/bin/bash
# Check for drupal/ai module presence and look for entity definitions using broader patterns

# Search for ai module files anywhere in the repo
fd "ai" --type f | grep -i "module\|entity" | head -20

# Search for references to ai_prompt in all files (not just PHP)
rg -i "ai_prompt" -A2 -B2 | head -40

# Check for composer.json to see if drupal/ai is listed
cat composer.json 2>/dev/null | grep -i "drupal/ai" -A2 -B2

Length of output: 686



Once I see the full dependency list, I'll search for documentation on the drupal/ai module and its entity types.

---

🏁 Script executed:

```shell
#!/bin/bash
# Get full composer.json to see all drupal dependencies
cat composer.json 2>/dev/null | grep -i "drupal/" | head -30

Length of output: 1190



---

🏁 Script executed:

```shell
#!/bin/bash
# Search complete composer.json for drupal/ai (not just truncated output)
grep -i '"drupal/ai' composer.json

Length of output: 90



---

🌐 Web query:

```web
drupal/ai module entity types ai_prompt

💡 Result:

Short answer: In Drupal's AI contrib ecosystem, ai_prompt is a configuration "Prompt" entity (with accompanying ai_prompt_type bundles) used to store reusable prompt templates, their variables/tokens, metadata and status. Prompts are saved as config (ai.ai_prompt.) and prompt types define required variables/tokens; there is also an ai_prompt Form API element for selecting/creating prompts in forms. Use cases include centralizing prompts for AI Automators, ECA triggers, or other AI integrations. [1][2][3]

Sources

  • AI Prompt Management (developer docs). [1]
  • Drupal.org issue proposing a Prompt entity (discussion of ai_prompt reuse). [2]
  • Prompt/Prompt AI module overview (example contrib module using prompts). [3]

Add drupal/ai to composer.json dependencies before committing this configuration.

The configuration file references ai_prompt_type and ai_prompt entities that belong to the drupal/ai module. However, drupal/ai is not listed in composer.json dependencies—only drupal/ai_image_alt_text and drupal/ai_provider_openai are present. The ai_prompt entity is a configuration entity used to store reusable prompt templates, and without the drupal/ai module installed, these cloneable entity declarations will be invalid. Either add drupal/ai to composer.json or remove these entries from the configuration.

🤖 Prompt for AI Agents
In config/default/entity_clone.cloneable_entities.yml around lines 66 to 67, the
entries "ai_prompt_type" and "ai_prompt" reference entities provided by the
drupal/ai module but that module is not declared in composer.json; add
"drupal/ai" to composer.json require (matching your project version constraints)
and run composer update/install so the module is present, or alternatively
remove these two entries from the YAML if you do not intend to add the module —
ensure the composer.json change is committed alongside this configuration to
keep dependencies consistent.

@AlexSkrypnyk AlexSkrypnyk merged commit bfbc608 into develop Nov 10, 2025
7 checks passed
@AlexSkrypnyk AlexSkrypnyk deleted the feature/vortex-update-25.10.0 branch November 10, 2025 01:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants