OCPEDGE-2727: Add agent-eval-harness CI strategy and setup script#209
OCPEDGE-2727: Add agent-eval-harness CI strategy and setup script#209dhensel-rh wants to merge 3 commits into
Conversation
Document the agent-eval-harness CI integration strategy covering three approaches (local, container, step registry), dynamic skill discovery, judge design, and two maturity levels for scoring. Add the CI setup script that discovers changed skills from PR diffs and generates judges and scenarios for the openshift-claude-agent-eval ref. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: dhensel-rh The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughAdds CI documentation and a Bash setup script for discovering changed skills, generating eval config and datasets, and handing the config to the next CI step. ChangesAgent eval CI
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 9 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (9 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 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 `@docs/agent-eval-harness/ci-strategy.md`:
- Around line 143-164: The discovery behavior in the CI strategy doc does not
match `scripts/eval-setup-ci.sh`, which currently selects only the first changed
`SKILL.md` via its discovery logic. Either update the script to iterate over
every changed skill and run the full `/eval-analyze` and `/eval-dataset`
pipeline for each, or narrow the documented contract to clearly state that one
discovered skill is processed per run; keep the wording aligned with the actual
behavior of `run_if_changed`, `PULL_BASE_SHA...HEAD` discovery, and the setup
handoff.
- Around line 365-373: The Components table in the strategy doc has an outdated
reference for the Strategy doc entry. Update the location text in that row to
point to docs/agent-eval-harness/ci-strategy.md instead of
docs/eval-ci-strategy.md, keeping the rest of the table unchanged.
In `@scripts/eval-setup-ci.sh`:
- Around line 23-33: The SKILL_FILE detection in eval-setup-ci.sh is swallowing
git diff failures, so an invalid PULL_BASE_SHA or missing ancestor can
incorrectly look like “no skill files changed.” Update the git diff handling so
the script checks the command’s exit status before relying on empty output, and
only logs “No skill files changed, nothing to evaluate.” when the diff succeeds
and truly returns no matches. Keep the logic around SKILL_FILE, git diff, and
the no-change exit path aligned so CI misconfigurations fail loudly instead of
exiting 0.
- Line 1: Update the shell script header in eval-setup-ci.sh to use the required
Bash shebang instead of the env-based one. Replace the existing interpreter line
at the top of the script with the project-standard `#!/usr/bin/bash`, keeping
the rest of the script unchanged.
- Around line 50-53: The Claude invocation is using the wrong redirection order,
so stdout is leaking into the script’s stdout instead of staying on stderr and
can corrupt the config-path handoff. Update the claude command in both places in
the eval-setup flow so its output is explicitly redirected to stderr with the
correct ordering, keeping stdout reserved for the final echoed config path and
preserving the EVAL_CONFIG contract.
🪄 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: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 9896a84c-95ac-4532-aa15-ca3e98c0ee62
📒 Files selected for processing (2)
docs/agent-eval-harness/ci-strategy.mdscripts/eval-setup-ci.sh
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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 `@scripts/eval-setup-ci.sh`:
- Around line 27-55: Add tests for the new validation flow in eval-setup-ci.sh,
since the script now includes diff parsing and SKILL.md path validation logic.
Cover the main branches in the script’s discovery and validation steps: valid
plugin skill detection, empty git diff/no matching SKILL.md files, deleted
SKILL.md handling, invalid plugin/skills path shapes, and the empty generated
config case. Use the script’s key symbols and behavior around DIFF_OUTPUT,
SKILL_FILE, PLUGIN, and SKILL_NAME to ensure both positive and negative cases
are exercised.
- Around line 33-49: The skill discovery in eval-setup-ci.sh is too broad and
can pick up non-plugin SKILL.md files before the path validation runs. Tighten
the discovery grep in the script’s skill-file selection logic to only match
plugins/<plugin>/skills/<skill>/SKILL.md, and keep the existing path-shape
validation in the same eval setup flow as a safety check. Add tests covering
both the discovery filter and the invalid-path rejection cases so the new
validation logic is exercised with positive and negative examples.
🪄 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: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 7f7fee93-85b1-4867-b786-1e13d82b9582
📒 Files selected for processing (2)
docs/agent-eval-harness/ci-strategy.mdscripts/eval-setup-ci.sh
✅ Files skipped from review due to trivial changes (1)
- docs/agent-eval-harness/ci-strategy.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
After comparing all four eval harness PRs against ai-helpers' production setup, recommending to close this PR. Why
What's valuable from this PRThe strategy doc ( cc: @dhensel-rh @ggiguash |
Summary
docs/agent-eval-harness/ci-strategy.mddocumenting the eval CIintegration strategy for Claude Code skills
scripts/eval-setup-ci.shfor dynamic skill discovery andjudge/case generation in CI
Strategy doc covers
with flow diagrams for each
number of skills
behavioral judges (tool-usage, data-grounding, efficiency)
with baselines (regression detection)
you with committed judges
Setup script
eval-setup-ci.shis called by theopenshift-claude-agent-evalshared step registry ref via
EVAL_SETUP_SCRIPT. It:PULL_BASE_SHA...HEADto find the changed SKILL.md/eval-analyzeto generate scoring judges/eval-datasetto generate fresh scenariosDependencies
claude-payload-agent-github-tokensecret needs to be created intest-credentialsTest plan
🤖 Generated with Claude Code
Summary by CodeRabbit
Documentation
New Features