You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
code-converge сейчас поддерживает только Codex и его boundary в internal/codex: schema-constrained review через codex exec, stateless remediation и CI recovery. Требуется научить CLI использовать Pi как альтернативный agent runtime, не ослабляя существующие гарантии review snapshot, fail-closed classification, host-owned publication и CI.
Pi предоставляет JSONL event stream (--mode json), но не имеет прямого аналога Codex --output-schema / --output-last-message. Интеграция должна поэтому извлекать только финальное assistant message и валидировать его существующей строгой схемой findings.
Результат
Пользователь может явно выбрать Pi как agent backend. При этом Code-Converge:
выполняет review в одноразовой изолированной Pi-сессии;
получает findings только из финального сообщения Pi и fail-closed валидирует exact JSON schema;
запускает отдельные Pi-сессии для Fix findings и Fix CI;
сохраняет Code-Converge владельцем checkpoint, commit/push, PR discovery/creation и CI polling;
сохраняет Codex backend и его существующее поведение без регрессий.
Границы и инварианты
Не заменять Codex: Pi — второй поддерживаемый backend.
Не делегировать Pi публикацию, GitHub PR или CI polling.
Review должен продолжать работать с существующим private merge-base-to-worktree Git snapshot, включая committed, staged, unstaged и untracked изменения.
В Pi review не разрешать generic bash. Поставляемый с Code-Converge контролируемый extension/tool предоставляет только allowlisted read-only Git операции против scoped snapshot.
Не загружать project-local Pi extensions, skills, prompts или settings в non-interactive запуске review/fix без явного доверия. Запуск должен быть stateless (--no-session) и изолирован от пользовательских Pi resources настолько, насколько позволяет Pi CLI.
Raw Pi stdout/stderr и JSONL events не являются review result и не попадают в public workflow stdout; они могут попадать только в существующий redacted diagnostic session log и interactive output view.
Любой malformed, incomplete, prose-only, empty, trailing или неуспешно завершённый Pi review result — operational failure (exit 2), а не clean review.
Точный публичный CLI/config contract, поддерживаемая минимальная версия Pi и mapping mode/model/thinking должны быть приняты в feature design, а не предполагаться из этой issue.
Предлагаемая реализация
Выделить agent-neutral contract и перенести общую review-result validation туда, где он не принадлежит Codex.
Оставить internal/codex реализацией этого контракта; добавить internal/pi adapter.
Добавить backend selection и Pi-specific executable/provider/model/thinking configuration с тем же precedence contract, что у существующих settings.
Запускать Pi review через pi --mode json --no-session с allowlist инструментов и поставляемым read-only review Git extension.
После agent_settled брать только финальный message_end assistant text, затем применять exact JSON validation существующего review report contract.
Запускать Fix findings и Fix CI в свежих Pi-процессах с необходимыми edit/write/shell tools; дальнейшие lifecycle decisions остаются в Code-Converge.
Добавить capability/startup validation с actionable diagnostic, если установленный Pi не поддерживает требуемые CLI flags/JSON protocol.
Acceptance criteria
Выбор Pi backend задокументирован и доступен через принятый CLI/config contract; Codex сохраняется default backend.
Pi review запускается в отдельной stateless session и использует только контролируемую read-only review surface, а не generic bash.
Pi review видит тот же private merge-base-to-worktree snapshot, который уже готовит internal/repository.
Только final assistant message после завершения Pi может быть классифицировано как review report; terminal streams и промежуточные JSONL events не классифицируются.
Clean и findings reports Pi проходят тот же strict validation contract, что и Codex; malformed/missing/unknown/duplicate/trailing/prose output fail closed с exit 2.
Pi Fix findings получает полный classified report, работает в новой session и участвует в существующем checkpoint/review loop.
Pi Fix CI работает в новой session; budget, restart from Review и exit semantics не меняются.
Commit, direct-ref push, change request и exact-SHA CI polling по-прежнему выполняет host Code-Converge.
kv и human workflow contracts не получают raw Pi protocol data; diagnostic logging redacts Pi invocation content как и Codex invocation content.
Имеются deterministic fake-Pi tests для arguments, JSONL parsing, cancellation, clean/findings/malformed outcomes, fix stages и backend configuration precedence.
Существующие Codex tests и public Codex behavior остаются зелёными.
README и relevant Memory Bank artifacts описывают итоговый contract, security boundary и verification evidence.
Routing
Feature Flow, validation profile standard.
Изменение вводит новый agent runtime, меняет публичные CLI/configuration contract и затрагивает доверенную process/security boundary. Поэтому Small Change не применим. Для feature требуется design.md: предстоит принять решения о backend abstraction, Pi JSONL protocol, review-tool isolation, model/config mapping и минимальной поддерживаемой версии Pi. Возможное reusable architectural решение оформляется отдельным ADR.
Verification baseline
Минимальная evidence должна включать unit/fake-runner tests, fake executable integration tests для Pi JSONL protocol и process cancellation, configuration precedence tests, go test ./..., go vet ./..., make docs-lint, git diff --check и required CI. Реальная Pi-сессия и remote mutation не используются в automated tests.
Контекст
code-convergeсейчас поддерживает только Codex и его boundary вinternal/codex: schema-constrained review черезcodex exec, stateless remediation и CI recovery. Требуется научить CLI использовать Pi как альтернативный agent runtime, не ослабляя существующие гарантии review snapshot, fail-closed classification, host-owned publication и CI.Pi предоставляет JSONL event stream (
--mode json), но не имеет прямого аналога Codex--output-schema/--output-last-message. Интеграция должна поэтому извлекать только финальное assistant message и валидировать его существующей строгой схемой findings.Результат
Пользователь может явно выбрать Pi как agent backend. При этом Code-Converge:
Границы и инварианты
bash. Поставляемый с Code-Converge контролируемый extension/tool предоставляет только allowlisted read-only Git операции против scoped snapshot.--no-session) и изолирован от пользовательских Pi resources настолько, насколько позволяет Pi CLI.exit 2), а не clean review.mode/model/thinking должны быть приняты в feature design, а не предполагаться из этой issue.Предлагаемая реализация
internal/codexреализацией этого контракта; добавитьinternal/piadapter.pi --mode json --no-sessionс allowlist инструментов и поставляемым read-only review Git extension.agent_settledбрать только финальныйmessage_endassistant text, затем применять exact JSON validation существующего review report contract.Acceptance criteria
bash.internal/repository.kvи human workflow contracts не получают raw Pi protocol data; diagnostic logging redacts Pi invocation content как и Codex invocation content.Routing
Feature Flow, validation profile standard.
Изменение вводит новый agent runtime, меняет публичные CLI/configuration contract и затрагивает доверенную process/security boundary. Поэтому Small Change не применим. Для feature требуется
design.md: предстоит принять решения о backend abstraction, Pi JSONL protocol, review-tool isolation, model/config mapping и минимальной поддерживаемой версии Pi. Возможное reusable architectural решение оформляется отдельным ADR.Verification baseline
Минимальная evidence должна включать unit/fake-runner tests, fake executable integration tests для Pi JSONL protocol и process cancellation, configuration precedence tests,
go test ./...,go vet ./...,make docs-lint,git diff --checkи required CI. Реальная Pi-сессия и remote mutation не используются в automated tests.