Skip to content

refactor: reorganize project layout for phase 13#440

Merged
EnjoyBacon7 merged 14 commits into
refactor/hexagonalfrom
refactor/phase-13
Jun 1, 2026
Merged

refactor: reorganize project layout for phase 13#440
EnjoyBacon7 merged 14 commits into
refactor/hexagonalfrom
refactor/phase-13

Conversation

@Ahmath-Gadji
Copy link
Copy Markdown
Collaborator

@Ahmath-Gadji Ahmath-Gadji commented Jun 1, 2026

Phase 13 — Project Layout

Restructures the top-level project from the flat post-Phase-12 layout to a clean, predictable structure. Mostly moves + path rewiring; no application logic changes.

This branch now covers all of Phase 13 (13A–13F), combining both tracks.

13A — Deployment infra → infra/

  • Dockerfile/Dockerfile.rayinfra/docker/api.Dockerfile / ray.Dockerfile (build context stays repo root; COPY for entrypoint repointed).
  • docker-compose.yaml + service configs → infra/compose/ (grafana, prometheus from openrag_metrics/; vdb/milvus.yamlinfra/compose/milvus/; standalone metrics stack → monitoring.docker-compose.yaml). All internal compose paths rewired (context: ../.., includes, bind mounts).
  • ansible/, charts/, quick_start/, cluster.yamlinfra/.

13B — Scripts out of the package

  • openrag/scripts/{backup,restore,embed,filter-logs,check_file_counts}.py → top-level scripts/ (filter-logs.py renamed filter_logs.py); utility/data_indexer.pyscripts/.
  • Alembic migrations stay inside the package at openrag/services/persistence/migrations/.
  • Scripts resolve the package via a scripts/_bootstrap.py sys.path shim (interim, until the package-wide openrag.* import migration).

13C — Test restructure

  • Zero test files inside the package. All tests live under tests/: tests/unit/ (mirrors the package), tests/integration/{api,repos,robot}, tests/load/ (was benchmarks/).
  • pytest configuration moved from pytest.ini into pyproject.toml [tool.pytest.ini_options] with --strict-markers; pytest.ini deleted.

13D — Prompts into the package

  • prompts/example1/*.txtopenrag/prompts/templates/*.txt; added openrag/prompts/__init__.py loading them into DEFAULT_SEEDS (keyed by stem) at import.
  • PathsConfig.prompts_dir default now package-relative via __file__; dropped the hardcoded conf/config.yaml value and the dangling PROMPTS_DIR overrides (helm, api-test harness, infra/compose/.env.example). Dockerfiles no longer COPY prompts/; package-data ships the templates in the wheel/sdist.

13E — UI symlink

  • ui/extern/indexer-ui (relative symlink). extern/ left untouched (simple/recommended approach).

13F — pyproject, CI, root cleanup, docs

  • pyproject: excluded infra//tests/load/ from ruff; added package-data.
  • CI: build workflows → infra/docker/*.Dockerfile; helm → infra/charts/openrag-stack; api-test harness build path → infra/docker/api.Dockerfile.
  • Docs: Project Layout section in CLAUDE.md; README getting-started, env/prompt/milvus references repointed at the new locations.

Verification

  • uv sync, layer guard, docker compose config, and DEFAULT_SEEDS (=7) all pass.
  • No stale root deployment files; CI workflows reference only infra/docker/*.
  • pytest reads pyproject.toml (configfile confirmed); unit suite collects.

Known follow-ups (out of scope)

  • Pre-existing Phase-12 doc debt: CLAUDE.md Architecture section still references deleted openrag/components/... paths.
  • tests/unit/.../audio/test_openai.py fails to collect under Python 3.13 (audioop removed from stdlib, breaks pydub); unrelated to the layout move.
  • Full Docker build + full tests/unit/ run is the joint final check.

Move Dockerfile -> infra/docker/api.Dockerfile and Dockerfile.ray ->
infra/docker/ray.Dockerfile, and entrypoint.sh -> infra/scripts/. The
build context stays at the repo root, so the COPY for entrypoint becomes
infra/scripts/entrypoint.sh and a build-context comment is added to each
Dockerfile.
Relocate docker-compose.yaml, .env.example, .env.ollama, the Grafana and
Prometheus configs (from openrag_metrics/) and milvus.yaml (from vdb/) under
infra/compose/. The standalone metrics stack becomes monitoring.docker-compose.yaml.
Update the compose file's internal paths: build context -> ../.. with
dockerfile infra/docker/api.Dockerfile, the milvus include -> milvus/milvus.yaml,
extern includes and bind-mount sources -> ../../ to resolve from the new location.
Relocate ansible/ -> infra/ansible/, charts/ -> infra/charts/ and
quick_start/ -> infra/quick_start/. quick_start is self-contained (its own
vdb/ and extern/ subtrees), so its internal relative paths are unaffected.
Relocate the prompt templates from prompts/example1/*.txt to the package at
openrag/prompts/templates/*.txt and add openrag/prompts/__init__.py, which
reads them into DEFAULT_SEEDS (keyed by filename stem) at import time as the
first-boot fallback for DB-stored per-partition overrides.

The PathsConfig.prompts_dir default now resolves package-relative via __file__,
so it works regardless of CWD. Drop the hardcoded prompts_dir from
conf/config.yaml and the PROMPTS_DIR overrides from the Helm values and the
api-test harness so the bundled default applies; repoint pytest's PROMPTS_DIR
to openrag/prompts/templates. Both Dockerfiles no longer COPY prompts/ — the
templates ship inside the package via COPY openrag/.
Provide an ergonomic top-level ui/ path for the admin frontend. The
indexer-ui submodule stays registered at its .gitmodules path under extern/;
ui/ is a relative symlink so it resolves on any checkout.
Exclude infra/ and tests/load/ from ruff, and add a package-data entry so the
prompt templates under openrag/prompts/templates/ (read at import time) ship
inside the built wheel/sdist rather than being skipped as non-.py files.
Point the build workflows at infra/docker/api.Dockerfile and
infra/docker/ray.Dockerfile, the helm workflow at infra/charts/openrag-stack,
and the api-test harness build at infra/docker/api.Dockerfile. The
integration/unit/lint/layer-guard workflows need no change: they target
self-contained compose stacks or paths that did not move.
The Ray cluster config is deployment infrastructure; relocate it alongside the
helm charts. The other root-level deployment files (Dockerfile, Dockerfile.ray,
docker-compose.yaml, entrypoint.sh, .env.example, .env.ollama) were already
relocated when infra/ was created.
Move the standalone data_indexer.py CLI from utility/ to scripts/ and drop the
redundant utility/requirements.txt (httpx and loguru are already project
dependencies). Repoint the helm .tgz ignore at infra/charts/ after the 13A move.
Add a Project Layout section to CLAUDE.md and point its Docker, prompt
template, migration, and test-config references at the new locations. Update
the README getting-started flow for infra/compose/.env.example and
infra/quick_start, fix the helm/ansible and ray-cluster example paths, and mark
PROMPTS_DIR optional in the doc env samples now that templates ship in the
package.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 1, 2026

Review Change Stack

Important

Review skipped

Too many files!

This PR contains 199 files, which is 49 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 84f559ed-f205-4c7a-b5ad-8eeeaaac2a37

📥 Commits

Reviewing files that changed from the base of the PR and between e931249 and f5a324b.

⛔ Files ignored due to path filters (7)
  • tests/load/automatic-evaluation-pipeline/assets/Hit_rate.png is excluded by !**/*.png
  • tests/load/automatic-evaluation-pipeline/assets/Recall.png is excluded by !**/*.png
  • tests/load/automatic-evaluation-pipeline/assets/documents_ranking.png is excluded by !**/*.png
  • tests/load/automatic-evaluation-pipeline/assets/image-3.png is excluded by !**/*.png
  • tests/load/automatic-evaluation-pipeline/assets/image.png is excluded by !**/*.png
  • tests/load/automatic-evaluation-pipeline/assets/nDCG.png is excluded by !**/*.png
  • tests/load/prompt_eval/uv.lock is excluded by !**/*.lock
📒 Files selected for processing (199)
  • .github/workflows/api_tests.yml
  • .github/workflows/integration_tests.yml
  • .github/workflows/unit_tests.yml
  • .gitignore
  • CLAUDE.md
  • docs/content/docs/documentation/API.mdx
  • docs/content/docs/documentation/backup_restore.md
  • docs/content/docs/documentation/deploy_ray_cluster.md
  • docs/content/docs/documentation/env_vars.md
  • docs/content/docs/documentation/milvus_migration.mdx
  • docs/content/docs/documentation/update_embeddings.md
  • infra/compose/.env.example
  • infra/docker/api.Dockerfile
  • infra/docker/ray.Dockerfile
  • openrag/api/middleware/auth.py
  • openrag/scripts/entrypoint-backup.sh
  • openrag/scripts/entrypoint-restore-dry-run.sh
  • openrag/scripts/entrypoint-restore.sh
  • openrag/tests/__init__.py
  • pyproject.toml
  • pytest.ini
  • scripts/_bootstrap.py
  • scripts/backup.py
  • scripts/backup.sh.example
  • scripts/check_file_counts.py
  • scripts/data_indexer.py
  • scripts/embed.py
  • scripts/entrypoint-backup-mt.sh
  • scripts/entrypoint-backup.sh
  • scripts/entrypoint-restore-dry-run.sh
  • scripts/entrypoint-restore.sh
  • scripts/filter_logs.py
  • scripts/restore.py
  • scripts/restore.sh.example
  • tests/api_tests/OIDC_TEST_COVERAGE.md
  • tests/api_tests/__init__.py
  • tests/conftest.py
  • tests/integration/api/OIDC_TEST_COVERAGE.md
  • tests/integration/api/api_run/Dockerfile.mock-vllm
  • tests/integration/api/api_run/docker-compose.yaml
  • tests/integration/api/api_run/fixture/sample.txt
  • tests/integration/api/api_run/mock_vllm.py
  • tests/integration/api/api_run/scripts/run_api_tests_local.sh
  • tests/integration/api/conftest.py
  • tests/integration/api/email_test_file.json
  • tests/integration/api/test_actors.py
  • tests/integration/api/test_extract.py
  • tests/integration/api/test_health.py
  • tests/integration/api/test_indexer.py
  • tests/integration/api/test_oidc_lifecycle.py
  • tests/integration/api/test_openai_compat.py
  • tests/integration/api/test_partition.py
  • tests/integration/api/test_queue.py
  • tests/integration/api/test_search.py
  • tests/integration/api/test_tools.py
  • tests/integration/api/test_users.py
  • tests/integration/api/test_workspaces.py
  • tests/integration/repos/__init__.py
  • tests/integration/repos/conftest.py
  • tests/integration/repos/docker-compose.yaml
  • tests/integration/repos/test_document_repo.py
  • tests/integration/repos/test_milvus_store_integration.py
  • tests/integration/repos/test_oidc_session_repo.py
  • tests/integration/repos/test_partition_membership_repo.py
  • tests/integration/repos/test_partition_repo.py
  • tests/integration/repos/test_postgres_store.py
  • tests/integration/repos/test_relationships.py
  • tests/integration/repos/test_stores.py
  • tests/integration/repos/test_user_repo.py
  • tests/integration/repos/test_workspace_repo.py
  • tests/integration/robot/api/__init__.robot
  • tests/integration/robot/api/actors.robot
  • tests/integration/robot/api/indexer.robot
  • tests/integration/robot/api/keywords.robot
  • tests/integration/robot/api/main.robot
  • tests/integration/robot/api/openai.robot
  • tests/integration/robot/api/partition.robot
  • tests/integration/robot/api/queue.robot
  • tests/integration/robot/api/search.robot
  • tests/integration/robot/api/users.robot
  • tests/load/automatic-evaluation-pipeline/README.md
  • tests/load/automatic-evaluation-pipeline/assets/nDCG_formula.webp
  • tests/load/automatic-evaluation-pipeline/benchmark.py
  • tests/load/automatic-evaluation-pipeline/generate_questions.py
  • tests/load/automatic-evaluation-pipeline/upload_files.py
  • tests/load/marker/marker_page_chunking.md
  • tests/load/prompt_eval/.env.example
  • tests/load/prompt_eval/Report_query_decomposition.md
  • tests/load/prompt_eval/Report_temporal_filter.md
  • tests/load/prompt_eval/datasets/query_decomposition.json
  • tests/load/prompt_eval/datasets/temporal_filter.json
  • tests/load/prompt_eval/eval_query_decomposition.py
  • tests/load/prompt_eval/eval_temporal_filter_generation.py
  • tests/load/prompt_eval/prompts/query_contextualizer_tmpl_v0.txt
  • tests/load/prompt_eval/prompts/query_contextualizer_tmpl_v1.txt
  • tests/load/prompt_eval/pyproject.toml
  • tests/load/prompt_eval/results/result_filter_generation.json
  • tests/load/prompt_eval/results/result_query_decomposition.json
  • tests/load/workspace/README.md
  • tests/load/workspace/docker-compose.yml
  • tests/load/workspace/requirements.txt
  • tests/load/workspace/results_workspace.md
  • tests/load/workspace/workspace.py
  • tests/smoke_test_data/README.md
  • tests/smoke_test_data/run_backup_restore_test.sh
  • tests/smoke_test_data/run_smoke_test.sh
  • tests/unit/api/conftest.py
  • tests/unit/api/dependencies/test_auth.py
  • tests/unit/api/dependencies/test_files.py
  • tests/unit/api/mcp/test_server.py
  • tests/unit/api/middleware/test_bypass_config.py
  • tests/unit/api/middleware/test_instrumentation.py
  • tests/unit/api/middleware/test_request_id.py
  • tests/unit/api/middleware/test_request_timeout.py
  • tests/unit/api/routers/admin/test_admin_workspaces.py
  • tests/unit/api/routers/admin/test_task_logs.py
  • tests/unit/api/routers/admin/test_task_logs_legacy_cases.py
  • tests/unit/api/routers/test_router_imports.py
  • tests/unit/api/routers/user/test_source_links.py
  • tests/unit/api/schemas/test_api_schema_imports.py
  • tests/unit/api/test_error_handlers.py
  • tests/unit/api/test_main_proxy_headers.py
  • tests/unit/conftest.py
  • tests/unit/core/chunking/test_markdown_utils.py
  • tests/unit/core/chunking/test_recursive.py
  • tests/unit/core/config/test_auth_env_validation.py
  • tests/unit/core/config/test_indexation.py
  • tests/unit/core/indexing/parsers/pdf/test_docling.py
  • tests/unit/core/indexing/parsers/test_doc_parser.py
  • tests/unit/core/indexing/parsers/test_docx_parser.py
  • tests/unit/core/indexing/parsers/test_pptx_parser.py
  • tests/unit/core/indexing/test_image_preprocessor.py
  • tests/unit/core/indexing/test_validators.py
  • tests/unit/core/models/test_chunk.py
  • tests/unit/core/prompts/test_chat_prompt_builder.py
  • tests/unit/core/prompts/test_contextualization_builder.py
  • tests/unit/core/prompts/test_map_reduce_builder.py
  • tests/unit/core/prompts/test_query_rewriter.py
  • tests/unit/core/prompts/test_template_loader.py
  • tests/unit/core/prompts/test_vlm_prompt_builder.py
  • tests/unit/core/retrieval/test_pipeline.py
  • tests/unit/core/retrieval/test_retriever.py
  • tests/unit/core/retrieval/test_rrf.py
  • tests/unit/core/utils/test_external_errors.py
  • tests/unit/core/utils/test_log_tail.py
  • tests/unit/core/utils/test_logging.py
  • tests/unit/core/utils/test_source_filtering.py
  • tests/unit/core/utils/test_url_safety.py
  • tests/unit/di/test_container.py
  • tests/unit/di/test_factories.py
  • tests/unit/di/test_inference.py
  • tests/unit/di/test_workers.py
  • tests/unit/services/inference/parsers/test_openai_audio.py
  • tests/unit/services/inference/test_circuit_breaker.py
  • tests/unit/services/inference/test_distributed_semaphore.py
  • tests/unit/services/inference/test_healthcheck.py
  • tests/unit/services/inference/test_ollama_client.py
  • tests/unit/services/inference/test_reranker_clients.py
  • tests/unit/services/inference/test_retry.py
  • tests/unit/services/inference/test_runtime.py
  • tests/unit/services/inference/test_vllm_client.py
  • tests/unit/services/orchestrators/test_auth_service.py
  • tests/unit/services/orchestrators/test_conversion_service.py
  • tests/unit/services/orchestrators/test_indexing_service.py
  • tests/unit/services/orchestrators/test_job_service.py
  • tests/unit/services/orchestrators/test_mcp_service.py
  • tests/unit/services/orchestrators/test_partition_service.py
  • tests/unit/services/orchestrators/test_query_service.py
  • tests/unit/services/orchestrators/test_retrieval_service.py
  • tests/unit/services/orchestrators/test_user_service.py
  • tests/unit/services/orchestrators/test_workspace_service.py
  • tests/unit/services/persistence/test_add_file_to_partition_user_id.py
  • tests/unit/services/persistence/test_add_partition_member.py
  • tests/unit/services/persistence/test_ancestor_recursion_cap.py
  • tests/unit/services/persistence/test_connection.py
  • tests/unit/services/persistence/test_delete_workspace.py
  • tests/unit/services/persistence/test_ensure_admin_user.py
  • tests/unit/services/persistence/test_user_repo_external_id.py
  • tests/unit/services/storage/test_milvus_store.py
  • tests/unit/services/storage/test_vector_store_searcher.py
  • tests/unit/services/websearch/test_content_fetcher.py
  • tests/unit/services/workers/parsers/legacy_loaders/audio/test_openai.py
  • tests/unit/services/workers/parsers/legacy_loaders/test_base_loader.py
  • tests/unit/services/workers/parsers/legacy_loaders/test_customdocloader.py
  • tests/unit/services/workers/parsers/legacy_loaders/test_doc_loader.py
  • tests/unit/services/workers/parsers/legacy_loaders/test_docx_loader.py
  • tests/unit/services/workers/parsers/legacy_loaders/test_eml_recursion.py
  • tests/unit/services/workers/stages/test_parse.py
  • tests/unit/services/workers/stages/test_pipeline_stages.py
  • tests/unit/services/workers/test_batch_ingest.py
  • tests/unit/services/workers/test_dispatcher.py
  • tests/unit/services/workers/test_indexer_pool.py
  • tests/unit/services/workers/test_indexer_worker.py
  • tests/unit/services/workers/test_pipeline_builder.py
  • tests/unit/test_app_front_secret.py
  • tests/unit/test_auth_router.py
  • tests/unit/test_chainlit_api_auth.py
  • tests/unit/test_token_validation.py
  • tests/unit/test_version.py

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR reorganizes the OpenRAG repository to consolidate infrastructure files under an infra/ directory and bundles default prompt templates as Python package data. Docker, Helm, and compose configurations now reference the new paths; PathsConfig.prompts_dir resolves to bundled templates by default; and all documentation and examples are updated to reflect the new structure.

Changes

Infrastructure Reorganization and Prompt Template Bundling

Layer / File(s) Summary
Bundled Prompt Templates
openrag/prompts/__init__.py, openrag/core/config/infrastructure.py, pyproject.toml, conf/config.yaml, openrag/core/prompts/query_rewriter.py
New openrag/prompts module exports DEFAULT_SEEDS (loaded from templates/*.txt at import) and TEMPLATES_DIR. PathsConfig.prompts_dir now defaults to the resolved bundled location. Package-data configuration ensures templates ship in the wheel. Config YAML removes hardcoded path, docs updated.
Docker and Workflow Build Updates
infra/docker/api.Dockerfile, infra/docker/ray.Dockerfile, .github/workflows/build.yml, .github/workflows/build_dev.yml, tests/api_tests/api_run/docker-compose.yaml
Dockerfiles moved to infra/docker/ with entrypoint sourced from infra/scripts/entrypoint.sh and workdir set to /app/openrag; external prompts copy removed (now bundled). Workflows and test compose updated to reference new Dockerfile paths.
Service Compose and Helm Path Updates
infra/compose/docker-compose.yaml, infra/charts/openrag-stack/values.yaml, .github/workflows/helm.yaml, .gitignore, pyproject.toml
Compose file paths switch from local relative (./) to repo-root relative (../../) for data, source, and service volumes. Helm publishing trigger and chart paths updated to infra/charts/**. Packaged chart tarball ignore rule adjusted. Ruff linter exclusions extended to skip extern, infra, and tests/load directories.
Configuration and Test Environment Updates
pytest.ini, docs/assets/env_example.env, docs/assets/env_linux_gpu.env
Test environment and example .env files updated to remove hardcoded PROMPTS_DIR defaults and instead reference the bundled openrag/prompts/templates location.
Documentation and User Guidance
README.md, CLAUDE.md, docs/content/docs/documentation/deploy_ray_cluster.md, infra/ansible/README.md, ui, utility/requirements.txt
All user-facing docs updated to instruct use of infra/compose/, infra/quick_start/, and infra/ansible/ directories. Dev guide clarified on local test commands, migration paths, and bundled template locations. UI symlink created. Removed unused dependencies (httpx, loguru) from utility requirements.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • linagora/openrag#295: The PR's changes to conf/config.yaml and typed PathsConfig.prompts_dir default build on prior Hydra→Pydantic migration work that introduced the config loading mechanism.
  • linagora/openrag#437: This PR bundles prompt templates as package data, directly enabling retrieval/query orchestrators to load templates from config.paths.prompts_dir via core.prompts.load_template_by_key.

Suggested labels

refactor, breaking-change

Suggested reviewers

  • EnjoyBacon7
  • paultranvan

Poem

🐰 Hop along the new infra/ paths,
Dockerfiles bundled, prompt templates in class!
No more ../prompts/ to chase through the night,
Just openrag/prompts/templates—everything's right.
Build it from root, deploy with more grace! 🌟

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title accurately captures the primary change: a comprehensive project layout reorganization (Phase 13) that moves deployment artifacts to an infra/ directory, bundles prompts, adds a UI symlink, and updates CI configuration.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/phase-13

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@EnjoyBacon7 EnjoyBacon7 changed the title refactor(phase-13): project layout — infra/, bundled prompts, ui symlink, CI refactor(phase-13) Jun 1, 2026
@coderabbitai coderabbitai Bot added breaking-change Change of behavior after upgrade refactor labels Jun 1, 2026
Copy link
Copy Markdown

@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 (1)
docs/content/docs/documentation/deploy_ray_cluster.md (1)

121-121: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update the Ray image build-file reference to the new Dockerfile path.

Line 121 still points to Dockerfile.ray, but this refactor moved it to infra/docker/ray.Dockerfile. Keeping the old name will send users to a non-existent file.
As per coding guidelines: “Docker build files in infra/docker/ must be named with the .Dockerfile extension and built from the repository root”.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/content/docs/documentation/deploy_ray_cluster.md` at line 121, The docs
still reference the old Dockerfile name "Dockerfile.ray"; update that string to
the new filename "ray.Dockerfile" located under the infra/docker area so the
docs point to the correct build file and follow the repo convention; locate and
replace the "Dockerfile.ray" reference in the deploy_ray_cluster.md content
(around the base image instruction) to "ray.Dockerfile" and ensure the text
states the image must be built from the repository root as per guidelines.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CLAUDE.md`:
- Around line 11-27: The fenced code block in CLAUDE.md lacks a language tag
which triggers markdownlint MD040; update the opening triple-backtick for that
block to include a language identifier (e.g., change ``` to ```text) so the
block becomes ```text ... ```, preserving the existing content and closing
backticks unchanged.

---

Outside diff comments:
In `@docs/content/docs/documentation/deploy_ray_cluster.md`:
- Line 121: The docs still reference the old Dockerfile name "Dockerfile.ray";
update that string to the new filename "ray.Dockerfile" located under the
infra/docker area so the docs point to the correct build file and follow the
repo convention; locate and replace the "Dockerfile.ray" reference in the
deploy_ray_cluster.md content (around the base image instruction) to
"ray.Dockerfile" and ensure the text states the image must be built from the
repository root as per guidelines.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d2819719-c7b8-478e-a670-8c83452b9523

📥 Commits

Reviewing files that changed from the base of the PR and between a07175e and e931249.

⛔ Files ignored due to path filters (1)
  • infra/charts/openrag-stack/Chart.lock is excluded by !**/*.lock
📒 Files selected for processing (65)
  • .github/workflows/build.yml
  • .github/workflows/build_dev.yml
  • .github/workflows/helm.yaml
  • .gitignore
  • CLAUDE.md
  • README.md
  • conf/config.yaml
  • docs/assets/env_example.env
  • docs/assets/env_linux_gpu.env
  • docs/content/docs/documentation/deploy_ray_cluster.md
  • infra/ansible/README.md
  • infra/ansible/ansible.cfg
  • infra/ansible/deploy.sh
  • infra/ansible/inventory.ini.example
  • infra/ansible/playbooks/docker.yml
  • infra/ansible/playbooks/main-playbook.yml
  • infra/ansible/playbooks/nvidia-drivers-toolkit.yml
  • infra/ansible/playbooks/openrag.yml
  • infra/charts/openrag-stack/.helmignore
  • infra/charts/openrag-stack/Chart.yaml
  • infra/charts/openrag-stack/templates/_helpers.tpl
  • infra/charts/openrag-stack/templates/configmap-env.yaml
  • infra/charts/openrag-stack/templates/indexer-ui.yaml
  • infra/charts/openrag-stack/templates/infinity.yaml
  • infra/charts/openrag-stack/templates/ingress.yaml
  • infra/charts/openrag-stack/templates/openrag.yaml
  • infra/charts/openrag-stack/templates/pvc.yaml
  • infra/charts/openrag-stack/templates/raycluster.yaml
  • infra/charts/openrag-stack/templates/secrets-env.yaml
  • infra/charts/openrag-stack/values.yaml
  • infra/cluster.yaml
  • infra/compose/.env.example
  • infra/compose/.env.ollama
  • infra/compose/docker-compose.yaml
  • infra/compose/grafana/dashboards/gpu-metrics.json
  • infra/compose/grafana/dashboards/openrag-http.json
  • infra/compose/grafana/dashboards/system-overview.json
  • infra/compose/grafana/provisioning/dashboards/dashboard.yml
  • infra/compose/grafana/provisioning/datasources/datasource.yml
  • infra/compose/milvus/milvus.yaml
  • infra/compose/monitoring.docker-compose.yaml
  • infra/compose/prometheus/prometheus.yml
  • infra/docker/api.Dockerfile
  • infra/docker/ray.Dockerfile
  • infra/quick_start/docker-compose.yaml
  • infra/quick_start/extern/infinity.yaml
  • infra/quick_start/extern/vllm/Dockerfile.cpu
  • infra/quick_start/vdb/milvus.yaml
  • infra/scripts/entrypoint.sh
  • openrag/core/config/infrastructure.py
  • openrag/core/prompts/query_rewriter.py
  • openrag/prompts/__init__.py
  • openrag/prompts/templates/chunk_contextualizer_tmpl.txt
  • openrag/prompts/templates/hyde.txt
  • openrag/prompts/templates/image_captioning_tmpl.txt
  • openrag/prompts/templates/multi_query_pmpt_tmpl.txt
  • openrag/prompts/templates/query_contextualizer_tmpl.txt
  • openrag/prompts/templates/spoken_style_answer_tmpl.txt
  • openrag/prompts/templates/sys_prompt_tmpl.txt
  • pyproject.toml
  • pytest.ini
  • scripts/data_indexer.py
  • tests/api_tests/api_run/docker-compose.yaml
  • ui
  • utility/requirements.txt
💤 Files with no reviewable changes (1)
  • utility/requirements.txt

Comment thread CLAUDE.md Outdated
@hedhoud hedhoud changed the title refactor(phase-13) refactor: reorganize project layout for phase 13 Jun 1, 2026
hedhoud and others added 3 commits June 1, 2026 11:28
…fresh docs

The infra/compose/.env.example still set PROMPTS_DIR=../prompts/example1 after
the templates moved into the package; copying it to .env (the documented
getting-started step) injected a path that resolves to /app/prompts/example1
in the container, which no longer exists, so load_template raised
FileNotFoundError and the API crashed on startup. Comment it out and document
that the bundled templates are used unless PROMPTS_DIR overrides them.

Move the pytest configuration from pytest.ini into
pyproject.toml [tool.pytest.ini_options] and delete pytest.ini, preserving
testpaths/pythonpath/python_files/env/markers and adding --strict-markers.
Asyncio stays in strict mode since the suite uses explicit markers.

Repoint the env_vars and milvus_migration docs at openrag/prompts/templates
and infra/compose/milvus/milvus.yaml.
- fix stale package paths in CLAUDE.md (components/routers/.hydra_config
  -> core/services/api/di + conf/config.yaml); refresh test command docs
- move automatic-evaluation-pipeline/ into tests/load/
- remove orphaned root vdb/ and stale openrag/{components,config,utils,tests}
  leftovers; ignore db/, vdb/, coverage artifacts
- add asyncio_mode=auto and --tb=short to pytest config
- add tests/unit/conftest.py (mock ports) and tests/unit/api/conftest.py
  (ASGI client) prescribed by the phase 13 plan
- skip the pydub audio test on python 3.13 (audioop removed)
@EnjoyBacon7 EnjoyBacon7 merged commit e207d64 into refactor/hexagonal Jun 1, 2026
10 checks passed
@EnjoyBacon7 EnjoyBacon7 deleted the refactor/phase-13 branch June 1, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Change of behavior after upgrade refactor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants