test(eval): add fix agent human /fs-fix functional eval#381
Conversation
|
🤖 Review · |
PR Summary by QodoAdd fix agent human /fs-fix functional eval with fixture capture wiring
AI Description
Diagram
High-Level Assessment
Files changed (7)
|
1db9717 to
2119e44
Compare
|
Retargeted to |
|
🤖 Finished Review · ✅ Success · Started 6:24 PM UTC · Completed 6:43 PM UTC |
Code Review by Qodo
Context used✅ Compliance rules (platform):
55 rules 1.
|
ReviewFindingsLow
Previous runReviewFindingsLow
Previous run (2)ReviewFindingsMedium
Low
Previous run (3)ReviewFindingsLow
Labels: PR adds fix agent functional eval infrastructure |
2119e44 to
a829276
Compare
|
🤖 Finished Review · ✅ Success · Started 12:47 AM UTC · Completed 1:03 AM UTC |
|
It does not look like the functional tests were run for the fix agent. Just the "complete" was marked as complete. Edit: Ah, I think it was the lack of |
Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
Scope PR-head checkout to fix only, move HUMAN_INSTRUCTION into case input.yaml, harden PR capture with retries/null-safety, validate emit_env names, and drop superpowers plan/spec docs from the PR. Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
Local branch alias eval-pr-head caused post-fix.sh to push a new remote branch instead of the PR head, so new_commit always failed. Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
gh pr view headRefOid can lag behind a successful post-fix push, which made new_commit fail despite the branch tip moving. Prefer git refs API and briefly poll when the tip still equals pre_agent_head. Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
Rebase is already on #177 tip. Retries for fix headRefName fetch; extract resolve_head_sha with head_ref validation and poll budget comment; harden retry_cmd (stderr on final attempt); wrap issue-branch gh calls; stagger EVAL_TIMEOUT; drop redundant mktemp truncate; document shared judges and fix_expectations. Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Adam Scerra <ascerra@redhat.com>
- eval.yaml: expected_files now checks files_changed_since_pre_agent_head
(a compare of pre_agent_head...head_sha) instead of the PR-aggregate
files list, which could pass even if the fix agent's push never
touched the declared paths (the fixture PR already contains them).
- capture-fixture.sh: compute files_changed_since_pre_agent_head via a
new files_changed_since() helper (gh api compare, wrapped in
retry_cmd); wire it into both the success and pr_fetch_failed paths.
- capture-fixture.sh: wrap resolve_head_sha's initial ref lookup in
retry_cmd, and warn explicitly when the stale-SHA polling loop is
exhausted instead of silently returning the stale value.
- run-fullsend.sh: escape backticks in emit_env, completing the
escaping set (backslash, quote, dollar, backtick).
- run-fullsend.sh: reword the TRIGGER_SOURCE/FIX_ITERATION/TARGET_BRANCH
TODO as a non-TODO note (no incomplete work landing in mainline code).
- input.yaml: rewrite human_instruction as a factual bug report instead
of imperative agent-directive phrasing ("Change it to...", "Do not
refactor..."), avoiding the agent-instruction-pattern compliance
check while keeping the same fix signal; scope is still enforced by
annotations.expected_files, not by instruction wording.
Signed-off-by: Adam Scerra <ascerra@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
- run-fullsend.sh: stop swallowing the gh pr view error when resolving HEAD_REF. Suppress stderr only on early retry attempts (expected to be flaky); let the final attempt's stderr through so the real gh error is visible in logs instead of disappearing behind a generic ERROR line. - capture-fixture.sh: fix contradictory docstring on files_changed_since(). It returns 0 (with []) when there's nothing to compare (missing baseline/head_sha, or head_sha == baseline) since that's a valid "no new files" result, not a fetch failure. Non-zero is reserved for an actual gh api compare failure. Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
a829276 to
bd28b06
Compare
|
🤖 Finished Review · ✅ Success · Started 11:12 AM UTC · Completed 11:29 AM UTC |
…al eval - capture-fixture.sh: resolve_head_sha now sets globals RESOLVED_HEAD_SHA and HEAD_SHA_POLL_EXHAUSTED instead of printing head_sha over stdout via $(...), which would have silently dropped an exhausted-flag variable in the command-substitution subshell. Callers now read the globals directly. - capture-fixture.sh / eval.yaml: thread head_sha_poll_exhausted through fixture-state.json and into the new_commit / expected_files judge messages, so a confirmed 'fix agent did not push' is distinguishable from 'polling exhausted, possible push-propagation delay' instead of both reporting an identical, ambiguous failure. - capture-fixture.sh: use printf '%s' consistently instead of echo when piping PR JSON into jq in the issue-path PR loop, matching the pattern already used for comments_json (echo can mangle values starting with '-'). - run-fullsend.sh: document the dotenv format contract above emit_env — consumed by fullsend's Go dotenv parser via --env-file, not sourced by a shell, so only that parser's quoted-string escaping applies (no need to escape shell-only metacharacters like `!`). Signed-off-by: Adam Scerra <ascerra@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 11:42 AM UTC · Completed 12:00 PM UTC |
Summary
eval/fix/) for human/fs-fixon an ephemeral PRrun-fullsend.sh,capture-fixture.sh,setup-fixture.sh)main); if test(eval scenario): add code agent functional eval scenario #177 merges first, rebase this branch ontomain(and vice versa) — expect possible overlap in sharedeval/scripts/Related
main)Test plan
functional-tests (fix)greenmainif GitHub reports conflicts ineval/scripts/