Skip to content

Feature/edt-syntax-build-ci - #5

Open
zeegin wants to merge 5 commits into
IngvarConsulting:masterfrom
Kyrales:feature/edt-syntax-build-ci
Open

Feature/edt-syntax-build-ci#5
zeegin wants to merge 5 commits into
IngvarConsulting:masterfrom
Kyrales:feature/edt-syntax-build-ci

Conversation

@zeegin

@zeegin zeegin commented Sep 2, 2026

Copy link
Copy Markdown
Member

Migrated from alkoleft/v8-runner-rust pr #5.
Original author: Kyrales; created: 2026-05-12T07:19:39Z; last upstream update: 2026-05-14T08:23:34Z.
GitHub shows the migration account as the new author; this block preserves actual attribution.
Upstream historical base: master at 43674ee28a9f68acc70dfa2293288186d7130e75; head: Kyrales:feature/edt-syntax-build-ci at b6c06ae5ecf28b39408fe553b1c2f6eed8ecd9e8. Active migrated PRs compare that exact head with the current IngvarConsulting/v8-runner-rust:master.


  • Исправлен EDT build-export: теперь используется export --project , а сборка выполняется в отдельном чистом workspace.
  • Добавлена поддержка файла исключений для EDT syntax-check.
  • EDT syntax-check изолирован в отдельный чистый workspace.
  • Добавлена фильтрация EDT syntax-диагностик по source-set/project.
  • Обновлена документация по syntax-проверкам и testing workflow.
  • Стабилизирован CI: live fixture мягко пропускается без секретов, Linux-проверки остаются blocking, поправлены нестабильные assertions.

Summary by CodeRabbit

Релиз-ноты

  • Новые функции

    • Добавлена поддержка файла исключений (--exception-file) для команды синтаксической проверки EDT, позволяющая пропускать известные проблемы при валидации.
  • Документация

    • Обновлены справочные материалы с примерами использования параметра --project для выбора наборов исходного кода и документацией по файлам исключений.
  • Улучшения инфраструктуры

    • Оптимизирована CI/CD конфигурация для стабильного тестирования на платформе Linux.

Review Change Stack

Kyrales added 5 commits May 12, 2026 10:07
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
@zeegin zeegin added the upstream-migrated Migrated from the historical upstream tracker label Sep 2, 2026
@zeegin

zeegin commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

Upstream comment by coderabbitai[bot] at 2026-05-12T07:20:04Z: original

Warning

Rate limit exceeded

@​Kyrales has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 11 minutes and 9 seconds before requesting another review.

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 @​coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d9bb9a92-80fd-4261-ad61-d775a22cbdb2

📥 Commits

Reviewing files that changed from the base of the PR and between daf66a4 and b6c06ae.

📒 Files selected for processing (1)
  • README.md

Пошаговое описание

Расширена команда v8-runner syntax edt поддержкой файла исключений для фильтрации проблем синтаксиса, осуществлён переход на использование пути проекта вместо имени при экспорте EDT, добавлены утилиты для мониторинга процессов, обновлены GitHub Actions и синхронизирована документация.

Изменения

Исключения синтаксиса EDT и экспорт по пути

Слой / Файлы Описание
Контракт CLI и типы запросов
src/cli/args.rs, src/cli/execute.rs, src/use_cases/request.rs, src/mcp/service.rs
Обновлена подпись SyntaxTarget::Edt с добавлением поля exception_file: Option<PathBuf>, добавлен параметр --exception-file <PATH> в аргументы CLI, описание --project уточнено для "source-set names", обновлены функции маршрутизации для передачи файла исключений через всю цепочку обработки запроса.
Подсистема фильтрации исключений синтаксиса EDT
src/use_cases/check_syntax.rs, src/mcp/edt_syntax.rs
Реализована полная подсистема SyntaxExceptions для загрузки, нормализации (регистр, пробелы, пунктуация) и фильтрации исключений синтаксиса, поддержка нечёткого поиска по словам и точного совпадения, расширенная логика определения статуса SyntaxCheckStatus с учётом наличия исключений до и после фильтрации, обновлены точки диспетчеризации и сообщения об ошибках, добавлены 20+ новых тестов для проверки фильтрации и использования правильного рабочего пространства.
Экспорт EDT по пути проекта и рабочее пространство экспорта
src/use_cases/build_project.rs, src/use_cases/build_project/coordinator.rs, tests/cli_build.rs, tests/cli_test.rs
Переход на вызов export_project_path с путями вместо export_project с именами, добавлена подготовка выделенного рабочего пространства edt_build_export_workspace в координаторе с очисткой в начале функции, обновлены тестовые стабы для обработки как --project-name, так и --project, обновлены 13+ утверждений в тестах для ожидания путей при экспорте вместо имён.
Утилиты мониторинга процессов
src/platform/interactive.rs
Добавлены функции process_is_zombie для обнаружения зомби в /proc/{pid}/stat и wait_until_process_exits для ожидания завершения процесса с таймаутом, обновлена логика is_process_alive для немедленного возврата false при обнаружении зомби, обновлены тесты для использования новых утилит вместо фиксированных задержек.

CI рабочий процесс и документация

Слой / Файлы Описание
GitHub Actions рабочий процесс и доверенные контексты
.github/workflows/ci.yml
Сужена матрица contract job только до ubuntu-latest (удалена windows-latest), добавлены переменные окружения для платформ Linux и Windows из GitHub secrets, реализована логика выбора bundle_url и bundle_sha256 с использованием case по MATRIX_OS, добавлена поддержка мягкого пропуска live fixture через V8TR_DESIGNER_ALLOW_MISSING_CONFIG=1 при отсутствии конфигурации платформы.
Спецификация и документация
spec/acceptance/real-environment-validation.md, docs/CAPABILITIES.md, SKILL/references/testing.md, scripts/test/README.md
Обновлена спецификация реальной среды для обозначения GitHub Actions как источника истины happy-path начиная с 2026-04-22, уточнено текущее блокирование только на ubuntu-latest в доверенных контекстах, Windows полный тест отмечен как TODO, обновлены примеры команд v8-runner syntax edt в документации с новыми параметрами --exception-file <PATH> и --project <SOURCE_SET>, добавлены уточнения о нормализации текста для фильтрации исключений и требованиях к Unix-совместимости тестов.

Оценка трудоёмкости кода

🎯 4 (Сложный) | ⏱️ ~60 минут

Стихотворение

🐰 Файлы исключений скачут в строке,
Пути вместо имён на листе,
EDT синтаксис поёт в рабочем пути,
Зомби-процессы уходят с беде,
А Ubuntu с доверием — звёздный полёт! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Feature/edt-syntax-build-ci' is vague and generic, using branch naming conventions rather than clearly describing the main changes to a reader scanning commit history. Replace with a descriptive title summarizing the primary change, e.g., 'Add EDT syntax exception filtering and stabilize CI workflow' or 'Isolate EDT syntax/build to dedicated workspaces with exception support'.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed Docstring coverage is 81.03% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@zeegin

zeegin commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

Upstream review by coderabbitai[bot]; state: COMMENTED; submitted: 2026-05-12T07:27:45Z; commit: daf66a433d39b1d5313a76f8043a6607ca8931a0. Original review

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

📥 Commits

Reviewing files that changed from the base of the PR and between 43674ee and daf66a4.

📒 Files selected for processing (16)
  • .github/workflows/ci.yml
  • SKILL/references/testing.md
  • docs/CAPABILITIES.md
  • scripts/test/README.md
  • spec/acceptance/real-environment-validation.md
  • src/cli/args.rs
  • src/cli/execute.rs
  • src/mcp/edt_syntax.rs
  • src/mcp/service.rs
  • src/platform/interactive.rs
  • src/use_cases/build_project.rs
  • src/use_cases/build_project/coordinator.rs
  • src/use_cases/check_syntax.rs
  • src/use_cases/request.rs
  • tests/cli_build.rs
  • tests/cli_test.rs

@zeegin

zeegin commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

Upstream inline review comment by coderabbitai[bot] at 2026-05-12T07:27:44Z; path: spec/acceptance/real-environment-validation.md, line: 5. Original comment

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Исправьте относительный путь к 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.
🤖 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.

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

Labels

upstream-migrated Migrated from the historical upstream tracker

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants