Feature/edt-syntax-build-ci#5
Conversation
build_project.rs: EDT build-export теперь вызывает export --project <path>, а не --project-name. coordinator.rs: для build-export используется отдельный очищаемый workspace build\edt-build-workspace, чтобы не конфликтовать с init workspace. cli_build.rs: обновил ожидание CLI-теста.
- add EDT syntax exception file handling for CLI requests - isolate EDT syntax validation in a clean workspace - document source-set based EDT syntax filtering
- soft-skip trusted happy-path live fixture when platform bundle secrets are absent - keep blocking CI on Linux until Windows test helpers are hardened - stabilize Linux process and CLI output assertions
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. Пошаговое описаниеРасширена команда ИзмененияИсключения синтаксиса EDT и экспорт по пути
CI рабочий процесс и документация
Оценка трудоёмкости кода🎯 4 (Сложный) | ⏱️ ~60 минут Стихотворение
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
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)
src/use_cases/build_project/coordinator.rs (1)
531-589:⚠️ Potential issue | 🟠 Major | ⚡ Quick winСмешанный EDT-build в interactive mode всё ещё расходится по двум workspace/session.
Ветка внешних source-set продолжает использовать старый
edt-workspaceи отдельныйinteractive_edt(см. Line 539 и Line 588), тогда как основной EDT export уже переведён наedt-build-workspace. В результате при одном запуске можно получить две разные shared-session и вернуть конфликтность, от которой этот PR уходит.Идея правки
- let mut interactive_edt = None; let mut interactive_build_export_edt = None; ... - if config.tools.edt_cli.interactive_mode { - if interactive_edt.is_none() { - interactive_edt = Some( + if config.tools.edt_cli.interactive_mode { + if interactive_build_export_edt.is_none() { + interactive_build_export_edt = Some( match EdtSessionManager::for_config( config, EdtSessionHostOptions::for_cli_command(config), ) { Ok(manager) => match EdtDsl::new_shared_session( edt.clone(), - config.work_path.join("edt-workspace"), + edt_build_export_workspace.clone(), Arc::new(manager), Duration::from_millis(config.tools.edt_cli.startup_timeout_ms), Duration::from_millis(config.tools.edt_cli.command_timeout_ms), ) { ... - prepare_edt_external_artifacts( - config, - source_set, - interactive_edt.as_ref().expect("interactive edt dsl"), - ) + prepare_edt_external_artifacts( + config, + source_set, + interactive_build_export_edt + .as_ref() + .expect("interactive edt build export dsl"), + ) } else { let one_shot_edt = EdtDsl::new( edt.clone(), - config.work_path.join("edt-workspace"), + edt_build_export_workspace.clone(), utilities.runner_for(UtilityType::EdtCli), )Also applies to: 703-770
🤖 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 `@src/use_cases/build_project/coordinator.rs` around lines 531 - 589, The interactive branch is creating/using a separate workspace ("edt-workspace") and a separate session via interactive_edt (EdtDsl::new_shared_session) while the main EDT export uses "edt-build-workspace"/EdtDsl::new, causing two different shared sessions; unify them by switching the interactive path to use the same workspace and session creation as the main path (use config.work_path.join("edt-build-workspace") and the same session creation semantics or reuse the already-created shared session) so prepare_edt_external_artifacts receives the same session instance; update references to interactive_edt, EdtDsl::new_shared_session, EdtDsl::new, and prepare_edt_external_artifacts accordingly to ensure a single shared EDT session/workspace across both branches.
🧹 Nitpick comments (1)
src/cli/args.rs (1)
335-343: ⚡ Quick winДобавьте тест парсинга для
--exception-fileвsyntax edt.Сейчас нет явной проверки, что
syntax edt --exception-file <PATH>корректно парсится (в т.ч. вместе с повторяемым--project), и это легко случайно сломать при следующих правках CLI-схемы.Предложение (тест-кейс)
#[test] +fn parses_syntax_edt_with_projects_and_exception_file() { + let cli = Cli::try_parse_from([ + "v8-runner", + "syntax", + "edt", + "--project", + "main", + "--project", + "ext", + "--exception-file", + "tests/fixtures/edt-exceptions.txt", + ]) + .expect("parse syntax edt"); + + match cli.command { + Command::Syntax(args) => match args.target { + SyntaxTarget::Edt { projects, exception_file } => { + assert_eq!(projects, vec!["main", "ext"]); + assert_eq!( + exception_file.as_deref(), + Some(std::path::Path::new("tests/fixtures/edt-exceptions.txt")) + ); + } + _ => panic!("unexpected syntax target"), + }, + _ => panic!("unexpected command"), + } +}🤖 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 `@src/cli/args.rs` around lines 335 - 343, Добавьте тест, который проверяет разбор аргументов командной строки для подкоманды "syntax edt": сформируйте argv вида ["syntax", "edt", "--project", "p1", "--project", "p2", "--exception-file", "/some/path"] и прогоните через существующий парсер CLI (вызов вроде Args::parse_from / clap::Command::try_get_matches_from в тесте) и затем assert-уйте, что структура Edt (поле projects) содержит ["p1","p2"] и поле exception_file равно Some(PathBuf::from("/some/path")); также добавьте отдельный кейс без --exception-file чтобы проверить None.
🤖 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 `@spec/acceptance/real-environment-validation.md`:
- Line 5: The relative link to the CI workflow is incorrect; update the link
string "../.github/workflows/ci.yml" in the
spec/acceptance/real-environment-validation.md content to the correct relative
path "../../.github/workflows/ci.yml" so the Markdown reference points to the
actual .github/workflows/ci.yml file.
---
Outside diff comments:
In `@src/use_cases/build_project/coordinator.rs`:
- Around line 531-589: The interactive branch is creating/using a separate
workspace ("edt-workspace") and a separate session via interactive_edt
(EdtDsl::new_shared_session) while the main EDT export uses
"edt-build-workspace"/EdtDsl::new, causing two different shared sessions; unify
them by switching the interactive path to use the same workspace and session
creation as the main path (use config.work_path.join("edt-build-workspace") and
the same session creation semantics or reuse the already-created shared session)
so prepare_edt_external_artifacts receives the same session instance; update
references to interactive_edt, EdtDsl::new_shared_session, EdtDsl::new, and
prepare_edt_external_artifacts accordingly to ensure a single shared EDT
session/workspace across both branches.
---
Nitpick comments:
In `@src/cli/args.rs`:
- Around line 335-343: Добавьте тест, который проверяет разбор аргументов
командной строки для подкоманды "syntax edt": сформируйте argv вида ["syntax",
"edt", "--project", "p1", "--project", "p2", "--exception-file", "/some/path"] и
прогоните через существующий парсер CLI (вызов вроде Args::parse_from /
clap::Command::try_get_matches_from в тесте) и затем assert-уйте, что структура
Edt (поле projects) содержит ["p1","p2"] и поле exception_file равно
Some(PathBuf::from("/some/path")); также добавьте отдельный кейс без
--exception-file чтобы проверить None.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 4f5e3795-0c2c-4fab-a043-d0735c3ddf91
📒 Files selected for processing (16)
.github/workflows/ci.ymlSKILL/references/testing.mddocs/CAPABILITIES.mdscripts/test/README.mdspec/acceptance/real-environment-validation.mdsrc/cli/args.rssrc/cli/execute.rssrc/mcp/edt_syntax.rssrc/mcp/service.rssrc/platform/interactive.rssrc/use_cases/build_project.rssrc/use_cases/build_project/coordinator.rssrc/use_cases/check_syntax.rssrc/use_cases/request.rstests/cli_build.rstests/cli_test.rs
| ## Цель | ||
|
|
||
| Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../.github/workflows/ci.yml) с matrix на `ubuntu-latest` и `windows-latest`, а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow. | ||
| Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../.github/workflows/ci.yml), а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow. |
There was a problem hiding this comment.
Исправьте относительный путь к ci.yml в ссылке.
На Line 5 указан ../.github/workflows/ci.yml, но из spec/acceptance/ корректный путь — ../../.github/workflows/ci.yml; текущая ссылка битая.
🔧 Предлагаемое исправление
-Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../.github/workflows/ci.yml), а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow.
+Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../../.github/workflows/ci.yml), а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow.📝 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.
| Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../.github/workflows/ci.yml), а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow. | |
| Начиная с `2026-04-22`, source of truth для real-env happy-path является GitHub Actions workflow [`ci.yml`](../../.github/workflows/ci.yml), а локальные скрипты в `scripts/test/*` остаются helper/entrypoint-слоем для этого workflow. |
🤖 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 `@spec/acceptance/real-environment-validation.md` at line 5, The relative link
to the CI workflow is incorrect; update the link string
"../.github/workflows/ci.yml" in the
spec/acceptance/real-environment-validation.md content to the correct relative
path "../../.github/workflows/ci.yml" so the Markdown reference points to the
actual .github/workflows/ci.yml file.
Summary by CodeRabbit
Релиз-ноты
Новые функции
--exception-file) для команды синтаксической проверки EDT, позволяющая пропускать известные проблемы при валидации.Документация
--projectдля выбора наборов исходного кода и документацией по файлам исключений.Улучшения инфраструктуры