Skip to content

Refactored documentation to make it AI and human friendly.#2248

Draft
AlexSkrypnyk wants to merge 1 commit intomainfrom
feature/claude-testing-details
Draft

Refactored documentation to make it AI and human friendly.#2248
AlexSkrypnyk wants to merge 1 commit intomainfrom
feature/claude-testing-details

Conversation

@AlexSkrypnyk
Copy link
Member

@AlexSkrypnyk AlexSkrypnyk commented Feb 5, 2026

Summary by CodeRabbit

  • Documentation
    • Overhauled workflow docs with a streamlined daily development guide and condensed task-focused commands.
    • Added dedicated pages for Development, Database, Debugging, Composer, Testing (PHPUnit/Behat), Releasing (GitFlow/versioning), and Notifications (Email, GitHub, JIRA, NewRelic, Slack, Webhook).
    • Updated site navigation to surface workflow sections.
    • Retained and expanded authenticated Drupal page testing via curl with cookie/session guidance.

@github-project-automation github-project-automation bot moved this to BACKLOG in Vortex Feb 5, 2026
@AlexSkrypnyk AlexSkrypnyk added this to the 1.36.0 milestone Feb 5, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 5, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 🔍 Trigger a full review

Walkthrough

Large documentation restructure: CLAUDE.md rewritten and many workflow docs under .vortex/docs/content/workflows/ added, moved, or deleted (development, testing, releasing, notifications, etc.), and sidebar navigation updated (.vortex/docs/sidebars.js). No runtime code changes.

Changes

Cohort / File(s) Summary
Top-level project doc
CLAUDE.md
Major rewrite: header/context refactor (CLAUDE_CONTEXT), replace detailed step-by-step workflows with task-oriented command groups, add .claude/artifacts fetch workflow, condense/replace historical setup and troubleshooting content.
Workflows root & nav
.vortex/docs/content/workflows/README.mdx, .vortex/docs/sidebars.js
Reworked workflows README content and reorganized sidebar navigation to a multi-section Workflows structure (README, Development, Testing, Releasing, Notifications, etc.). Added export default sidebars.
Development docs
.vortex/docs/content/workflows/development/README.mdx, .../composer.mdx, .../database.mdx, .../debugging.mdx
Added a new Development README and new database/debugging pages; composer doc pruned/restructured; commands unified around ahoy wrappers and concise workflows.
Testing docs
.vortex/docs/content/workflows/testing/README.mdx, .../behat.mdx, .../phpunit.mdx
Large additions/reorg: separate PHPUnit and Behat pages; testing README with tabbed Ahoy/Docker Compose instructions; expanded Behat guidance and examples.
Notifications (new group)
.vortex/docs/content/workflows/notifications/README.mdx, email.mdx, github.mdx, jira.mdx, newrelic.mdx, slack.mdx, webhook.mdx
Replaced deleted notifications doc with a Notifications section made of multiple channel-specific MDX pages documenting env vars, examples, and payloads (pure docs).
Releasing and versioning
.vortex/docs/content/workflows/releasing/README.mdx, .../gitflow.mdx, .../versioning.mdx
Deleted old releasing.mdx; added a releasing README plus GitFlow and versioning pages describing release flow, branching, and version scheme options (CalVer/SemVer).
Removed files
.vortex/docs/content/workflows/notifications.mdx, .vortex/docs/content/workflows/releasing.mdx
Legacy consolidated notifications and releasing docs deleted and replaced by new, more granular pages.
Minor front-matter shifts
.../deployment.mdx, .../updating-vortex.mdx, .../variables.mdx
Small sidebar_position/front-matter adjustments.

Sequence Diagram(s)

(Skipped — changes are documentation-only and do not introduce new runtime control flow requiring sequence diagrams.)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I hopped through docs with a tiny quill,
Rearranged workflows and polished the sill.
Commands neatly lined in tidy stacks,
Fetch your db, then bounce right back—
A carrot for clarity, tucked in the mill.

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Refactored documentation to make it AI and human friendly' is vague and generic, lacking specificity about the actual changes made across the documentation structure. Consider a more specific title that highlights the main changes, such as 'Restructure documentation workflows and add task-oriented guides' or 'Reorganize development docs with task-based workflow sections'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/claude-testing-details

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: 2

🤖 Fix all issues with AI agents
In `@CLAUDE.md`:
- Around line 803-819: Add a preparatory step to ensure the .data directory
exists before the curl cookie save in Step 3: check for or create the .data
directory (mkdir -p .data) immediately before the curl -k -c .data/cookies.txt
-L "LOGIN_URL" command so that saving to .data/cookies.txt cannot fail if the
directory is missing; update the Step 3 text to include this directory creation
instruction and mention .data/cookies.txt explicitly.
- Around line 833-841: Add a short cleanup recommendation to the "Important
Notes" section: instruct users to delete the .data/cookies.txt file after use to
reduce the risk of stale authenticated sessions, and mention when (e.g., after
completing one-time login or when session is no longer needed) and how (simple
rm or manual delete) to perform the cleanup; reference the existing items
"Cookie storage" and "One-time use" so readers see the relation to .data/ and
`ahoy login`.

CLAUDE.md Outdated
Comment on lines 803 to 819
```bash
# Step 1: Get the site URL from project info
ahoy info
# Note the URL (e.g., http://your-project.docker.amazee.io)

# Step 2: Get a one-time login URL
ahoy login
# Output example: http://your-project.docker.amazee.io/user/reset/1/1234567890/abc123/login

# Step 3: Authenticate and save session cookies
# Replace LOGIN_URL with the full URL from Step 2
curl -k -c .data/cookies.txt -L "LOGIN_URL"

# Step 4: Access any authenticated page using saved cookies
# Replace SITE_URL with your site URL from Step 1
curl -k -b .data/cookies.txt "SITE_URL/admin/content"

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

Ensure .data/ exists before saving cookies.
If the directory doesn’t exist, curl -c .data/cookies.txt will fail. Add an explicit mkdir -p .data step before Step 3.

🔧 Suggested doc tweak
 # Step 2: Get a one-time login URL
 ahoy login
 # Output example: http://your-project.docker.amazee.io/user/reset/1/1234567890/abc123/login
 
 # Step 3: Authenticate and save session cookies
+# Ensure cookie directory exists
+mkdir -p .data
 # Replace LOGIN_URL with the full URL from Step 2
 curl -k -c .data/cookies.txt -L "LOGIN_URL"
🤖 Prompt for AI Agents
In `@CLAUDE.md` around lines 803 - 819, Add a preparatory step to ensure the .data
directory exists before the curl cookie save in Step 3: check for or create the
.data directory (mkdir -p .data) immediately before the curl -k -c
.data/cookies.txt -L "LOGIN_URL" command so that saving to .data/cookies.txt
cannot fail if the directory is missing; update the Step 3 text to include this
directory creation instruction and mention .data/cookies.txt explicitly.

CLAUDE.md Outdated
Comment on lines 833 to 841
#### Important Notes

- **Cookie storage**: Always use `.data/` directory - it is gitignored and won't
be committed
- **Session expiry**: Cookies expire after session timeout; regenerate with
Steps 2-3 as needed
- **Login URL format**: `http://SITE/user/reset/UID/TIMESTAMP/HASH/login`
- **One-time use**: Login URLs from `ahoy login` can only be used once; run
`ahoy login` again if needed
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

Add cleanup guidance for stored session cookies.
Given these cookies grant authenticated access, recommend deleting .data/cookies.txt after use to reduce risk of stale sessions.

🔧 Suggested doc tweak
 - **One-time use**: Login URLs from `ahoy login` can only be used once; run
   `ahoy login` again if needed
+- **Cleanup**: Remove `.data/cookies.txt` after troubleshooting to avoid leaving
+  authenticated sessions on disk
🤖 Prompt for AI Agents
In `@CLAUDE.md` around lines 833 - 841, Add a short cleanup recommendation to the
"Important Notes" section: instruct users to delete the .data/cookies.txt file
after use to reduce the risk of stale authenticated sessions, and mention when
(e.g., after completing one-time login or when session is no longer needed) and
how (simple rm or manual delete) to perform the cleanup; reference the existing
items "Cookie storage" and "One-time use" so readers see the relation to .data/
and `ahoy login`.

@github-actions

This comment has been minimized.

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 01:43:59

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 01:46:57

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 01:47:02

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@codecov
Copy link

codecov bot commented Feb 5, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (7cf277d) to head (fdbec38).

❗ There is a different number of reports uploaded between BASE (7cf277d) and HEAD (fdbec38). Click for more details.

HEAD has 9 uploads less than BASE
Flag BASE (7cf277d) HEAD (fdbec38)
17 8
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #2248       +/-   ##
==========================================
- Coverage   76.85%   0.00%   -76.86%     
==========================================
  Files         112       1      -111     
  Lines        5846      10     -5836     
  Branches       44       0       -44     
==========================================
- Hits         4493       0     -4493     
+ Misses       1353      10     -1343     

☔ 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.

@AlexSkrypnyk AlexSkrypnyk changed the title Added curl-based authenticated page testing instructions to CLAUDE.md. Refactored documentation to make it AI and human friendly. Feb 5, 2026
@AlexSkrypnyk AlexSkrypnyk marked this pull request as draft February 5, 2026 11:24
@github-actions

This comment has been minimized.

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 11:31:19

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

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: 13

🤖 Fix all issues with AI agents
In @.vortex/docs/content/workflows/development/composer.mdx:
- Around line 207-211: The documentation incorrectly states "Composer 2.9.0
introduced automatic security auditing"; update that phrase to "Composer 2.4.0
introduced automatic security auditing" in the Security auditing section
(replace the text string "Composer 2.9.0 introduced automatic security auditing"
with "Composer 2.4.0 introduced automatic security auditing") so the document
correctly cites the version that added the feature.

In @.vortex/docs/content/workflows/development/README.mdx:
- Line 144: Replace the legacy Docker v1 CLI usage in the example command
"docker-compose logs --tail=50 web" with the Docker v2 syntax "docker compose
logs --tail=50 web"; update that exact command string (and any other occurrences
of "docker-compose" in the same README) so examples consistently use "docker
compose".
- Line 119: The documentation uses the old docker-compose v1 syntax string
"docker-compose ps" on the line shown; update that command to the modern v2
syntax "docker compose ps" to match other docs and maintain consistency across
the PR, ensuring any occurrences of the hyphenated form (e.g., "docker-compose")
in this README.mdx are replaced with the space-separated "docker compose".
- Around line 155-157: The import statement for the CodeLifecycle component is
placed inside a <details> block; move the import line "import CodeLifecycle from
'../_code-lifecycle.mdx';" to the module top-level immediately after the
frontmatter (near the top of the file) so imports are valid for Docusaurus, and
leave only the JSX tag "<CodeLifecycle />" inside the existing details block to
render the component.

In @.vortex/docs/content/workflows/notifications/github.mdx:
- Line 25: The doc shows a mismatch in case for the environment type: the
variable VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE lists default `PR` but the
allowed value `pr` is lowercase; update the documentation to be consistent by
either normalizing the displayed values (e.g., use lowercase `pr` in the default
and options) or explicitly state the case sensitivity (e.g., "values are
case-insensitive; accepted values: production/staging/uat/dev/pr (default:
PR)"). Ensure the variable name VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE and the
set of allowed values are consistent and unambiguous.

In @.vortex/docs/content/workflows/notifications/README.mdx:
- Around line 24-26: Update the channel list display to use the official
capitalization "GitHub": replace the backticked display text `github` with
`GitHub` in the "Available channels" list (the entry currently written as
[`github`](github)), and also search the document for any other occurrences of
the backticked `github` display text and change them to `GitHub` to keep
capitalization consistent.

In @.vortex/docs/content/workflows/notifications/slack.mdx:
- Line 8: Replace the incorrect sentence "Post deployment notification to Slack
a channel." with the corrected phrase "Post deployment notification to a Slack
channel." in the Slack notification doc (look for the exact string "Post
deployment notification to Slack a channel." in slack.mdx) so the word order and
article usage are fixed.

In @.vortex/docs/content/workflows/releasing/README.mdx:
- Around line 37-38: The Development bullet contains a sentence fragment ("not
yet released. May be unstable, but CI tests should pass."); update the
"**Development**" line so it is a single complete sentence (e.g., "Latest
development code, not yet released and may be unstable, but CI tests should
pass.") ensuring the "**Development**" label and the "**Stage**" bullet remain
unchanged.
- Line 113: The link target "notifications/newrelic" in the README (the arrowed
link line) is incorrect for the current document location; update the Markdown
link target from "notifications/newrelic" to "../notifications/newrelic" so it
points to the correct New Relic notification page.

In @.vortex/docs/content/workflows/testing/behat.mdx:
- Around line 165-170: Replace the incorrect article in the Gherkin example:
find the line "As a authenticated user" in the Behat example block and change it
to "As an authenticated user" (update the text inside the fenced gherkin snippet
so the four lines read As a site visitor, As a site administrator, As a content
editor, As an authenticated user).
- Around line 46-53: The example showing tagged scenarios uses an unnecessary
end-of-options separator; locate the line containing "docker compose exec cli
vendor/bin/behat -- --tags=@smoke" and remove the extra "--" so the Behat option
is passed directly to vendor/bin/behat (i.e., invoke vendor/bin/behat with the
--tags option rather than placing it after an end-of-options marker).

In `@CLAUDE.md`:
- Around line 34-38: The Drush task list is missing the database update command;
add "ahoy drush updatedb" into the list and place it before the existing "ahoy
drush cim" entry so the recommended deployment order runs database updates prior
to importing configuration (update the block that currently contains "ahoy drush
cr", "ahoy drush cex", "ahoy drush cim", "ahoy drush uli" to include "ahoy drush
updatedb" immediately before "ahoy drush cim").
- Around line 49-55: The documented PHPUnit command in CLAUDE.md uses the wrong
flag; replace the incorrect token "--filters=TestClassName" with the correct
PHPUnit flag "--filter=TestClassName" so the example command "ahoy test --
--filters=TestClassName" becomes "ahoy test -- --filter=TestClassName"; update
the single occurrence of "--filters=TestClassName" to "--filter=TestClassName"
(search for the string "--filters" or the example "ahoy test --
--filters=TestClassName" to locate the line).

Comment on lines +207 to +331
## Security auditing

Composer 2.9.0 introduced automatic security auditing that checks your dependencies for known security vulnerabilities and abandoned packages. This feature helps you maintain a secure codebase by alerting you to potential issues during package installation and updates.

#### Configuration Options
### Configuration options
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

🧩 Analysis chain

🌐 Web query:

Composer automatic security auditing version history when introduced

💡 Result:

Composer’s built‑in automatic security auditing (checking installed/updated dependencies against known vulnerability advisories) was introduced in the Composer 2.4 line:

  • Introduced (first available): 2.4.0-RC1 — released July 21, 2022
    Added the new composer audit command, automatic auditing after composer update, and --audit for composer install (plus --no-audit to disable). [1]

  • First stable release including it: 2.4.0 — released August 16, 2022 [2]
    Packagist’s release post describes the feature as warnings about insecure dependency versions out of the box as part of composer update, with --audit available for composer install. [3]

Practical behavior since 2.4:

  • Runs automatically after composer update (and generally when changing dependencies), unless you pass --no-audit. [1][3]
  • On composer install, auditing is opt-in via --audit (performance reasons). [1][3]

Sources:
[1] Composer 2.4.0-RC1 changelog (getcomposer.org)
[2] Composer 2.4.0 changelog (getcomposer.org)
[3] “Composer 2.4 Release” (blog.packagist.com)


Update Composer version in security auditing section.

The claim "Composer 2.9.0 introduced automatic security auditing" is incorrect. Automatic security auditing was introduced in Composer 2.4.0 (released August 16, 2022), not 2.9.0. Update line 209 to reflect the correct version.

🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/development/composer.mdx around lines 207 -
211, The documentation incorrectly states "Composer 2.9.0 introduced automatic
security auditing"; update that phrase to "Composer 2.4.0 introduced automatic
security auditing" in the Security auditing section (replace the text string
"Composer 2.9.0 introduced automatic security auditing" with "Composer 2.4.0
introduced automatic security auditing") so the document correctly cites the
version that added the feature.

### Database connection errors

```bash
docker-compose ps # Check if database container is running
Copy link

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Inconsistent Docker Compose command syntax.

Line 119 uses docker-compose (v1 syntax), while other documentation files in this PR use docker compose (v2 syntax without hyphen). Consider using the modern docker compose syntax consistently throughout the documentation.

Suggested fix
-docker-compose ps      # Check if database container is running
+docker compose ps      # Check if database container is running
📝 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
docker-compose ps # Check if database container is running
docker compose ps # Check if database container is running
🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/development/README.mdx at line 119, The
documentation uses the old docker-compose v1 syntax string "docker-compose ps"
on the line shown; update that command to the modern v2 syntax "docker compose
ps" to match other docs and maintain consistency across the PR, ensuring any
occurrences of the hyphenated form (e.g., "docker-compose") in this README.mdx
are replaced with the space-separated "docker compose".

ahoy logs

# Check container logs
docker-compose logs --tail=50 web
Copy link

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Same inconsistency: use docker compose (v2 syntax).

Suggested fix
-docker-compose logs --tail=50 web
+docker compose logs --tail=50 web
📝 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
docker-compose logs --tail=50 web
docker compose logs --tail=50 web
🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/development/README.mdx at line 144, Replace
the legacy Docker v1 CLI usage in the example command "docker-compose logs
--tail=50 web" with the Docker v2 syntax "docker compose logs --tail=50 web";
update that exact command string (and any other occurrences of "docker-compose"
in the same README) so examples consistently use "docker compose".

Comment on lines +155 to +288
import CodeLifecycle from '../_code-lifecycle.mdx';

<CodeLifecycle />
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

🏁 Script executed:

cat -n ".vortex/docs/content/workflows/development/README.mdx" | sed -n '140,170p'

Repository: drevops/vortex

Length of output: 871


🌐 Web query:

Docusaurus MDX import inside details collapsible block rendering

💡 Result:

In Docusaurus MDX, don’t put import … statements inside a <details> block (or anywhere other than the MDX module “top level”). Instead, import at the top of the .mdx file and render the imported component inside the <details> content. Docusaurus explicitly supports importing one MDX file as a React component and embedding it elsewhere. [1]

import Extra from './_extra.mdx';

<details>
  <summary>More</summary>

  <Extra />
</details>

If your <details> “collapsible” renders oddly, keep <summary> on a single line and add a blank line after it, because MDX can inject extra <p> wrappers that break the expected <details>/<summary> layout. [2]

Sources:
[1] Docusaurus docs — “MDX and React” (Importing Markdown) https://docusaurus.io/docs/markdown-features/react
[2] Docusaurus docs — “Markdown Features” (Details + note about <summary> and MDX <p> wrappers) https://docusaurus.io/docs/3.7.0/markdown-features


🏁 Script executed:

cat -n ".vortex/docs/content/workflows/development/README.mdx" | head -20

Repository: drevops/vortex

Length of output: 754


Move the CodeLifecycle import to the top of the file (after the frontmatter).

The import statement on line 155 is inside the <details> block, which violates Docusaurus MDX requirements. Imports must be at the module top-level. Move import CodeLifecycle from '../_code-lifecycle.mdx'; to line 5 (after the frontmatter) and keep only <CodeLifecycle /> inside the details block. Without this change, Docusaurus will fail to process the import and the component won't render.

🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/development/README.mdx around lines 155 -
157, The import statement for the CodeLifecycle component is placed inside a
<details> block; move the import line "import CodeLifecycle from
'../_code-lifecycle.mdx';" to the module top-level immediately after the
frontmatter (near the top of the file) so imports are valid for Docusaurus, and
leave only the JSX tag "<CodeLifecycle />" inside the existing details block to
render the component.

|----------------------------------------|----------|---------------------------------|----------|-----------------------------------------------------------|
| `VORTEX_NOTIFY_GITHUB_TOKEN` | **Yes** | | Hosting | GitHub notification personal access token |
| `VORTEX_NOTIFY_GITHUB_REPOSITORY` | **Yes** | | Hosting | GitHub notification repository in `owner/repo` format |
| `VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE`| No | `PR` | `.env` | GitHub notification environment type (production/staging/uat/dev/pr) |
Copy link

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Consider clarifying environment type case sensitivity.

The default value shows PR (uppercase) but the description lists pr (lowercase) in the available options. Clarify whether these values are case-sensitive or normalize the documentation to be consistent.

📝 Proposed fix for consistency
-| `VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE`| No       | `PR`                            | `.env`   | GitHub notification environment type (production/staging/uat/dev/pr) |
+| `VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE`| No       | `PR`                            | `.env`   | GitHub notification environment type (production/staging/uat/dev/PR) |
📝 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
| `VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE`| No | `PR` | `.env` | GitHub notification environment type (production/staging/uat/dev/pr) |
| `VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE`| No | `PR` | `.env` | GitHub notification environment type (production/staging/uat/dev/PR) |
🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/notifications/github.mdx at line 25, The doc
shows a mismatch in case for the environment type: the variable
VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE lists default `PR` but the allowed value
`pr` is lowercase; update the documentation to be consistent by either
normalizing the displayed values (e.g., use lowercase `pr` in the default and
options) or explicitly state the case sensitivity (e.g., "values are
case-insensitive; accepted values: production/staging/uat/dev/pr (default:
PR)"). Ensure the variable name VORTEX_NOTIFY_GITHUB_ENVIRONMENT_TYPE and the
set of allowed values are consistent and unambiguous.

- Track deployment frequency
- Monitor release impact in real-time

➡️ See [Workflows > Notifications > New Relic](notifications/newrelic)
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

🧩 Analysis chain

🏁 Script executed:

find .vortex/docs/content -type f -name "*.mdx" -o -name "*.md" | head -30

Repository: drevops/vortex

Length of output: 1439


🏁 Script executed:

# Get a better understanding of the directory structure
tree -L 4 .vortex/docs/content/workflows 2>/dev/null || find .vortex/docs/content/workflows -type d | sort

Repository: drevops/vortex

Length of output: 607


🏁 Script executed:

# Check if notifications directory exists and where
find .vortex/docs/content -type d -name "notifications"

Repository: drevops/vortex

Length of output: 102


🏁 Script executed:

sed -n '110,115p' .vortex/docs/content/workflows/releasing/README.mdx

Repository: drevops/vortex

Length of output: 215


Fix the relative link path for New Relic notification documentation.

The link notifications/newrelic from workflows/releasing/README.mdx resolves to workflows/releasing/notifications/newrelic, which doesn't exist. The target file is at workflows/notifications/newrelic.mdx, so use ../notifications/newrelic instead.

🔧 Fix
-➡️ See [Workflows > Notifications > New Relic](notifications/newrelic)
+➡️ See [Workflows > Notifications > New Relic](../notifications/newrelic)
📝 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 [Workflows > Notifications > New Relic](notifications/newrelic)
➡️ See [Workflows > Notifications > New Relic](../notifications/newrelic)
🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/releasing/README.mdx at line 113, The link
target "notifications/newrelic" in the README (the arrowed link line) is
incorrect for the current document location; update the Markdown link target
from "notifications/newrelic" to "../notifications/newrelic" so it points to the
correct New Relic notification page.

Comment on lines +46 to +53
# Run all Behat tests
docker compose exec cli vendor/bin/behat

# Run specific feature file
docker compose exec cli vendor/bin/behat tests/behat/features/homepage.feature

# Run scenarios with specific tag
docker compose exec cli vendor/bin/behat -- --tags=@smoke
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

🧩 Analysis chain

🏁 Script executed:

# Check if the file exists and read the specific lines
if [ -f ".vortex/docs/content/workflows/testing/behat.mdx" ]; then
  echo "=== File found, reading lines 46-53 ==="
  sed -n '46,53p' ".vortex/docs/content/workflows/testing/behat.mdx"
else
  echo "File not found at .vortex/docs/content/workflows/testing/behat.mdx"
  # Try to find the file
  find . -name "behat.mdx" -type f 2>/dev/null | head -10
fi

Repository: drevops/vortex

Length of output: 385


🌐 Web query:

Behat CLI -- double dash argument separator behavior

💡 Result:

In Behat’s CLI, -- is the standard end-of-options separator (from Symfony Console). Behat’s own usage explicitly shows it:

behat [options] [--] [<paths>].[1]

Behavior:

  • Anything before -- is parsed as Behat options (e.g. --suite, --tags, --format).
  • -- itself is not an argument; it just flips the parser.
  • Anything after -- is treated as positional arguments (for Behat, that means <paths> like features/, foo.feature, foo.feature:10, etc.), even if it starts with - or looks like an option.[1][2]

Why you’d use it:

  • To run a feature/path that begins with a dash, e.g. a file literally named --smoke.feature:
    • vendor/bin/behat -- --smoke.feature
  • To ensure a token that could be mistaken for an option is treated as a path/argument:
    • vendor/bin/behat --format=progress -- features/-weird-name.feature

Sources: Behat CLI usage showing [--] and <paths>[1]; Symfony Console docs describing -- to separate options from arguments.[2]


Remove the extra -- in the Docker Compose tag example.

In Behat's Symfony Console CLI, -- is an end-of-options separator. Any arguments after -- are treated as positional arguments (paths), not options. This means vendor/bin/behat -- --tags=@smoke will treat --tags=@smoke as a file path instead of a Behat option and will fail. Use --tags=@smoke directly without the --.

🛠️ Suggested fix
-    docker compose exec cli vendor/bin/behat -- --tags=@smoke
+    docker compose exec cli vendor/bin/behat --tags=@smoke
📝 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
# Run all Behat tests
docker compose exec cli vendor/bin/behat
# Run specific feature file
docker compose exec cli vendor/bin/behat tests/behat/features/homepage.feature
# Run scenarios with specific tag
docker compose exec cli vendor/bin/behat -- --tags=@smoke
# Run all Behat tests
docker compose exec cli vendor/bin/behat
# Run specific feature file
docker compose exec cli vendor/bin/behat tests/behat/features/homepage.feature
# Run scenarios with specific tag
docker compose exec cli vendor/bin/behat --tags=@smoke
🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/testing/behat.mdx around lines 46 - 53, The
example showing tagged scenarios uses an unnecessary end-of-options separator;
locate the line containing "docker compose exec cli vendor/bin/behat --
--tags=@smoke" and remove the extra "--" so the Behat option is passed directly
to vendor/bin/behat (i.e., invoke vendor/bin/behat with the --tags option rather
than placing it after an end-of-options marker).

Comment on lines 165 to 170
```gherkin
As a site visitor # Anonymous users
As a site administrator # Admin users
As a content editor # Content management users
As a authenticated user # Logged-in users
```
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

Grammar: use “an authenticated user.”

Tightens the Gherkin example wording.

✏️ Suggested edit
-As a authenticated user    # Logged-in users
+As an authenticated user   # Logged-in users
🤖 Prompt for AI Agents
In @.vortex/docs/content/workflows/testing/behat.mdx around lines 165 - 170,
Replace the incorrect article in the Gherkin example: find the line "As a
authenticated user" in the Behat example block and change it to "As an
authenticated user" (update the text inside the fenced gherkin snippet so the
four lines read As a site visitor, As a site administrator, As a content editor,
As an authenticated user).

Comment on lines +34 to +38
# Drush commands
ahoy drush cr # Clear cache
ahoy drush cex # Export configuration to code
ahoy drush cim # Import configuration from code
ahoy drush uli # Get one-time login link
Copy link

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Add ahoy drush updatedb to the Drush task list.

Include the database update command (ideally before cim) so the quick-reference tasks reflect the recommended deployment order.
Based on learnings: Run 'ahoy drush updatedb' before importing configuration during deployment to ensure database schema is current.

🛠️ Suggested addition
 # Drush commands
 ahoy drush cr     # Clear cache
 ahoy drush cex    # Export configuration to code
+ahoy drush updatedb # Apply database updates (run before config import when deploying)
 ahoy drush cim    # Import configuration from code
 ahoy drush uli    # Get one-time login link
🤖 Prompt for AI Agents
In `@CLAUDE.md` around lines 34 - 38, The Drush task list is missing the database
update command; add "ahoy drush updatedb" into the list and place it before the
existing "ahoy drush cim" entry so the recommended deployment order runs
database updates prior to importing configuration (update the block that
currently contains "ahoy drush cr", "ahoy drush cex", "ahoy drush cim", "ahoy
drush uli" to include "ahoy drush updatedb" immediately before "ahoy drush
cim").

Comment on lines +49 to 55
# Testing
ahoy test # Run PHPUnit tests
ahoy test-unit # Run PHPUnit Unit tests
ahoy test-kernel # Run PHPUnit Kernel tests
ahoy test-functional # Run PHPUnit Functional tests
ahoy test -- --filters=TestClassName # Run specific PHPUnit test class

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

🧩 Analysis chain

🏁 Script executed:

# Search for PHPUnit-related files
fd -e xml -e php -e json | grep -i phpunit | head -20

Repository: drevops/vortex

Length of output: 291


🏁 Script executed:

# Check for composer.json to find PHPUnit version
if [ -f composer.json ]; then
  cat composer.json | jq '.require, .require-dev | select(. != null) | keys[] | select(contains("phpunit"))'
fi

Repository: drevops/vortex

Length of output: 234


🏁 Script executed:

# Look for phpunit.xml or phpunit configuration
find . -maxdepth 3 -type f \( -name "phpunit*" -o -name "*.xml" \) | head -20

Repository: drevops/vortex

Length of output: 211


🏁 Script executed:

# Search for actual test invocations in the codebase to see flag usage
rg -- '--filter' --type php --type xml -A 2 -B 2

Repository: drevops/vortex

Length of output: 409


🏁 Script executed:

# Read composer.json to find PHPUnit version
cat composer.json | head -100

Repository: drevops/vortex

Length of output: 3512


🏁 Script executed:

# Check the main phpunit.xml file
cat phpunit.xml

Repository: drevops/vortex

Length of output: 6503


🏁 Script executed:

# Search for any existing test filter usage in documentation or code
grep -r "filter" --include="*.md" --include="*.txt" . | grep -i test | head -10

Repository: drevops/vortex

Length of output: 1027


🏁 Script executed:

# Check for any ahoy test invocations
grep -r "ahoy test" --include="*.md" --include="*.sh" . | head -10

Repository: drevops/vortex

Length of output: 978


🏁 Script executed:

# Check the CLAUDE.md file specifically at lines 49-55
sed -n '45,60p' CLAUDE.md

Repository: drevops/vortex

Length of output: 539


🏁 Script executed:

# Also search for any uses of --filters in CLAUDE.md to see if it's documented elsewhere
grep -n "filters\|filter" CLAUDE.md | head -20

Repository: drevops/vortex

Length of output: 132


PHPUnit uses --filter (singular), not --filters.

Line 54 incorrectly shows --filters=TestClassName. The correct flag is --filter, as confirmed by PHPUnit 11.5.50 (the version in use) and all documented examples throughout the codebase.

Suggested fix
-ahoy test -- --filters=TestClassName  # Run specific PHPUnit test class
+ahoy test -- --filter=TestClassName   # Run specific PHPUnit test class
🤖 Prompt for AI Agents
In `@CLAUDE.md` around lines 49 - 55, The documented PHPUnit command in CLAUDE.md
uses the wrong flag; replace the incorrect token "--filters=TestClassName" with
the correct PHPUnit flag "--filter=TestClassName" so the example command "ahoy
test -- --filters=TestClassName" becomes "ahoy test -- --filter=TestClassName";
update the single occurrence of "--filters=TestClassName" to
"--filter=TestClassName" (search for the string "--filters" or the example "ahoy
test -- --filters=TestClassName" to locate the line).

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 11:33:51

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 11:34:07

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@github-actions

This comment has been minimized.

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 12:12:38

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 12:15:31

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-05 12:15:49

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/claude-testing-details branch from d91c317 to fdbec38 Compare February 6, 2026 03:12
@github-actions
Copy link

github-actions bot commented Feb 6, 2026

Code Coverage Report:
  2026-02-06 03:17:54

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-06 03:19:30

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-06 03:22:15

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

@AlexSkrypnyk
Copy link
Member Author

Code Coverage Report:
  2026-02-06 03:22:59

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/2)
  Lines:   93.82% (167/178)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: BACKLOG

Development

Successfully merging this pull request may close these issues.

1 participant