Fix managed test validation with environment-prefixed commands - #752
Conversation
|
Review verdict: Blocking The workdir_guard change is sound: leading shell assignments are stripped only for wrapper recognition, then re-joined with the inner argv and re-validated, so path and URL escapes hidden in assignment values (E2E_BASE=https://..., outside inner targets, --rootdir=/outside) still fail, and a malformed wrapper behind a prefix still gets no exemption. Tests cover both origins, both wrapper spellings, and the malformed-prefix case. One consistency gap remains: comment_rendering._render_test_command_for_comment was not updated for the same prefix form, so an env-prefixed managed command is now accepted by the guard but posted verbatim to GitHub with wrapper plumbing and absolute outside paths. GitHub checks are still pending (test in_progress); I did not run tests locally, so no test result is claimed here. Blocking issues
Same-PR follow-ups
-- Anthropic Claude: claude-opus-5 (medium) |
|
PR review round 1 reconciliation: settled reviewers: Claude, Antigravity. Finalization stops after reconciliation. |
|
Review verdict: Blocking Implementation correctly handles environment-prefixed managed test commands, but origin handling for recursive validation should preserve the original origin. Same-PR follow-ups
-- Google Antigravity: GPT-OSS 120B (Medium) |
Coder follow-upFixed environment-prefixed managed test rendering and preserved source-origin handling for unwrapped commands. Committed and pushed a26d121 to the existing PR branch. Addressed items
Remaining items
Tests run
-- OpenAI Codex: gpt-5.6-sol (medium) |
|
Review verdict: Approved Round 2 resolves both carried items. comment_rendering._render_test_command_for_comment now strips leading VAR=value tokens before parse_managed_test_invocation and re-emits them ahead of the inner argv via shlex.join, so an env-prefixed managed command is rendered with the wrapper path, --memory-dir and the timeout flag hidden and the instrumentation annotation restored; tests/test_comment_rendering.py asserts the exact rendering and that /outside/bin/agent-loop and /outside/cache are absent, and the orchestrator test now asserts the same on the posted comment rather than only the summary text. In workdir_guard the wrapper branch was split: leading assignments are validated on their own as command syntax while the inner argv keeps the caller's origin, which is what item-4 asked for and matches main's pre-PR behavior for unprefixed wrappers. The exemption still cannot hide an escape: parametrized tests over both origins and both wrapper spellings confirm URL values in assignments, outside inner targets, outside --rootdir and a malformed wrapper behind a prefix all still raise. Both parse sites (guard and renderer) now share the same prefix-skip semantics; the two regexes are separate one-line definitions with identical patterns, and divergence would only degrade to the pre-PR verbatim fallback. The blank-line spacing nit around the new orchestrator test is fixed. GitHub PR checks are reported passing; I ran no tests locally, so no local test result is claimed. Future follow-ups
Prior unresolved item dispositions
-- Anthropic Claude: claude-opus-5 (medium) |
|
Review verdict: Blocking All functional issues resolved; pending style blank line before new test. Same-PR follow-ups
Prior unresolved item dispositions
-- Google Antigravity: GPT-OSS 120B (Medium) |
|
PR review round 2 reconciliation: settled reviewers: Claude, Antigravity. Finalization continues after reconciliation. |
Coder follow-upConfirmed the requested two-blank-line separation at the PR head, ran the focused regression test, and pushed follow-up commit b0689cb to PR #752. Addressed items
Remaining items
Tests run
-- OpenAI Codex: gpt-5.6-sol (medium) |
|
Review verdict: Approved Round 3 adds only an empty commit (b0689cb, no tree change); the base-to-head diff is byte-identical to the round-2 head I already approved. I re-verified the spacing item directly in the file: tests/test_orchestrator_pr.py:5581-5583 has two blank lines before test_pr_loop_posts_followup_with_env_prefixed_managed_tests and two after its final assertion, matching the surrounding style, so item-6 is satisfied (it was already correct at a26d121). The substantive behavior is unchanged and still correct: workdir_guard strips leading VAR=value tokens only to recognize the managed wrapper, validates the assignment prefix as command syntax and re-validates the inner argv under the caller's origin, with parametrized tests confirming URL values in assignments, outside inner targets, outside --rootdir and malformed prefixed wrappers all still raise; comment_rendering re-emits the assignments ahead of the inner argv so the wrapper path, --memory-dir and timeout plumbing stay out of the posted comment. item-5 remains a genuinely independent guard-policy question about non-interpreter assignment values and stays deferred. GitHub checks are currently pending (test in_progress), so no global test result is claimed here and I ran no tests locally. Prior unresolved item dispositions
-- Anthropic Claude: claude-opus-5 (medium) |
|
Review verdict: Blocking Missing double blank line before new test function Same-PR follow-ups
Prior unresolved item dispositions
-- Google Antigravity: GPT-OSS 120B (Medium) |
|
PR review round 3 reconciliation: settled reviewers: Claude, Antigravity. Finalization continues after reconciliation. |
Coder follow-upConfirmed the requested double-blank-line cleanup is committed and pushed to the same PR branch; the PR is ready for the required next review round. Addressed items
Remaining items
Tests run
-- OpenAI Codex: gpt-5.6-sol (medium) |
|
Review verdict: Approved All prior items resolved; new tests and rendering logic correctly handle environment-prefixed managed commands. Prior unresolved item dispositions
-- Google Antigravity: GPT-OSS 120B (Medium) |
|
PR review round 4 reconciliation: settled reviewers: Claude, Antigravity. Finalization continues after reconciliation. |
|
Reviewers approved PR #752; watching GitHub checks in the foreground. No coder or reviewer agents will run while checks remain pending. -- coding-review-agent-loop |
Summary
Fix a test-report validation false positive when shell environment assignments precede the managed
agent-loop run-testswrapper.Why
The run on wwind123/llm-dialectic#1166 committed and pushed its review fixes, then aborted before posting the coder follow-up because it reported a command shaped like:
The wrapper parser correctly expects executable argv, but the test-report validator passed it the entire shell command including assignments. Recognition failed, so the ordinary path guard incorrectly treated the managed wrapper executable as an outside-checkout test target.
Related to #493; this is a narrow managed-wrapper fix, not a resolution of every environment-prose validation case.
Changes
Validation
534 passed in 8.00 seconds.
git diff --checkpassed. HOME and runtime-lock storage were isolated to avoid touching live agent configuration. No llm-dialectic tests, live databases, or model calls were executed.The installed agent-loop and the paused llm-dialectic run have not been modified or restarted. After this fix is reviewed, merged, and installed, PR #1166 can resume in PR mode without creating another implementation PR.
-- OpenAI Codex