Упростить Delegate Kit: единый запуск, проверяемые результаты и учёт затрат - #14
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 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 |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 28d97e8bf8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| result = spawnSync(contract.argv[0], contract.argv.slice(1), { cwd, env: { ...process.env, DELEGATE_KIT_REPORT_PATH: externalReport, | ||
| DELEGATE_KIT_CHECKPOINT: snapshot.id, DELEGATE_KIT_SOURCE_TREE: snapshot.tree, DELEGATE_KIT_WORKSPACE: workspace }, | ||
| detached: true, timeout: contract.timeout_ms ?? 120000, killSignal: 'SIGKILL', stdio: ['ignore', out, err] }); | ||
| lease.child_pid = result.pid; |
There was a problem hiding this comment.
Publish the check process group before blocking
If the verifier is interrupted or the host crashes while spawnSync is blocked, execution never reaches the lease.child_pid assignment, while the detached check process continues running. The retained workspace lock then contains only the dead verifier PID, so operators cannot identify or terminate the still-running process group before recovering the workspace; it may continue mutating files or holding services indefinitely. Spawn asynchronously and persist the child PID in the lease before waiting for completion.
Useful? React with 👍 / 👎.
Что меняется
Delegate Kit использовал несколько путей запуска, а готовность результата и расходы исполнителей не всегда были достаточно явно подтверждены. PR оставляет CLI/RPC единственным путём новых запусков, усиливает проверку результатов и показывает доступные расходы без выдачи подписочных оценок за фактическую оплату API.
doneтребует их успешного выполнения. Для Codex добавлены проверки готовности среды до модельного запуска; shell и сетевые разрешения задаются явно.Ревью
Проведены независимые проверки Standards и Spec. В Standards найден и исправлен дефект: после выхода или тайм-аута команды проверки её потомок мог продолжить изменять рабочий каталог уже после снятия блокировки. Теперь команда получает собственную группу процессов; оставшиеся потомки останавливаются, результат становится
inconclusive, а блокировка снимается только после подтверждённой остановки группы. Добавлены два регрессионных теста; проверяющий повторил исходное воспроизведение и подтвердил исправление. По Spec подтверждённых замечаний нет.Проверки
bash tests/route.sh: 133/133 на итоговом коммите28d97e8.bash tests/gate.sh: 40/40.node --test tests/checkpoints.test.mjs: 15/15, включая новые регрессии.git diff --check.Первый общий прогон при одновременных дополнительных тестовых запусках дал четыре сбоя ожиданий/блокировок. Повторный полный прогон финальной версии без этих дополнительных запусков прошёл 133/133; платные модельные прогоны не выполнялись.
Ограничения
Поддержка оболочек подтверждена контрактными тестами, но полноценные модельные запуски всех интеграций не проводились. Проектные скрипты по-прежнему отвечают за внешние или намеренно отделённые сервисы, тестовые БД и браузерные сессии. Изменения внесены в репозиторий; установленные копии навыка и пользовательские пресеты автоматически не обновляются.