feat: implement issue #582 — [Phase 1] Define held-out eval-case format + seed prompts/triage.md case set - #623
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reached
More reviews will be available in 59 minutes and 51 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (7)
📝 WalkthroughWalkthroughThis PR introduces a held-out evaluation case infrastructure for measuring triage skill quality. It adds a JSON Schema for eval cases, a set of seed reference cases grounded in triage decision criteria, a Python validator script for CI-based validation, comprehensive test coverage, and workflow integration with CODEOWNERS protection against proposer edits. ChangesHeld-out evaluation case infrastructure for triage skill
🎯 2 (Simple) | ⏱️ ~12 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |
There was a problem hiding this comment.
Code Review
This pull request introduces a framework for held-out evaluation cases to measure prompt-skill quality, including a JSON schema, seed triage cases, a Python validation script, and BATS tests. The feedback suggests strengthening the JSON schema by adding conditional validation to enforce that high-risk cases must escalate, ensuring platform-independent file reading in the validator by specifying UTF-8 encoding, and adding a test to verify the new schema constraint.
Dev-Lead — review-changes (applied)Changes committed and pushed. |
|
Auto-rebase failed — merge conflict — this branch has conflicts with Claude will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
eeeb514 to
734bb1d
Compare
Superseded by automated re-review at
|
|
Auto-rebase failed — merge conflict — this branch has conflicts with Claude will attempt to resolve this automatically. If it cannot, a follow-up comment will explain what needs manual attention. To resolve manually instead: |
734bb1d to
1ef2817
Compare
Dev-Lead — rebase (no-changes)Agent reasoning |
Dev-Lead — fix-bot-comment (no-changes)Agent reasoning |
Dev-Lead — waiting on PR blockers (intent: review-changes)PR: #623 |
|
Note @don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically. |
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |
Dev-Lead — fix-bot-comment (no-changes)Agent reasoning |
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |
donpetry-bot
left a comment
There was a problem hiding this comment.
Automated review — APPROVED ✓
Risk: MEDIUM
Reviewed commit: f342a2e52599db95e12f2ae8083b66be27ccb854
Review mode: triage-approved (single reviewer)
Summary
Phase-1 held-out eval-case framework for the triage skill: a draft 2020-12 JSON schema, a structural-only validator (no scorer/model), 8 seed triage cases, BATS tests, a CODEOWNERS guard, and a lint path/test wiring. Small, self-contained, and fully gated by green CI. Triage-tier low-risk assessment confirmed.
Linked issue analysis
Closes #582 and substantively satisfies all four acceptance criteria: (1) evals/triage/cases.jsonl pairs a triage input with expected escalate/risk; (2) case.schema.json + README mirror the scripts/initiative-planner/plan.schema.json python-jsonschema pattern; (3) cases cover both escalate outcomes and include auth-secrets, db-migration, and security-anti-pattern triggers; (4) a CODEOWNERS entry separately owns the held-out set as the reward-hacking guard. Note: the issue named skills/evals/ paths, but this repo has no skills/ tree (the triage skill is prompts/triage.md), so placing the set at top-level evals/ is a correct adaptation rather than a deviation — the README/schema correctly reference prompts/triage.md.
Findings
No blocking findings. All three gemini-code-assist suggestions are present in the final state and their threads are resolved: the schema enforces HIGH => escalate=true via if/then; validate-cases.py reads files with encoding="utf-8"; and a dedicated test rejects HIGH-with-escalate-false. The validator is intentionally validator-only (no model invocation), so the suite runs offline. CODEOWNERS and lint.yml edits are minimal, additive, and security-strengthening (no secrets, no pull_request_target, no new permissions). Validator run locally against the seed set: 'cases OK: 8 case(s), unique ids, schema-valid.'
CI status
All required checks green (Lint, shellcheck/ShellCheck, bats, unit-tests, CodeQL Analyze python/actions, SonarCloud, agent-shield/AgentShield, Agent Security Scan, Secret scan gitleaks, review/review, validate-agent-profiles, gh-aw-compile, CodeRabbit). Remaining checks SKIPPED (dependency-audit ecosystems, dependabot-automerge, dev-lead ci-relay) — none failing.
Reviewed automatically by the PR-review agent (single-reviewer mode: fable 5). Reply if you need a human review.
|
Dev-Lead — waiting on PR blockers (intent: review-changes)PR: #623 |
|
Note @don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically. |
…at + seed prompts/triage.md case set (#623) * feat: implement issue #582 — [Phase 1] Define held-out eval-case format + seed prompts/triage.md case set * chore: apply manual instructions [skip ci-relay] * refactor(evals): relocate held-out eval set to repo-root evals/ per maintainer decision A1 Epic #581 open-question A1 ruled the held-out eval cases live at evals/<skill>/cases.jsonl at the repo root, not under a new skills/ tree (skills live in prompts/ and frameworks/). This story (#582) had landed the set under skills/evals/; move it to the decided location and update every reference. - git mv skills/evals -> evals (schema, validator, README, triage cases) - .github/CODEOWNERS: own /evals/ instead of /skills/evals/ - .github/workflows/lint.yml: trigger path skills/** -> evals/** - tests/test_evals_cases.bats: EVALS_DIR -> $ROOT/evals - README + schema description: skills/evals -> evals validate-cases.py resolves its schema via __file__, so the move needs no code change. All 11 bats tests pass. https://claude.ai/code/session_01GtKqCFHPEShgswWynw5bbD --------- Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
…at + seed prompts/triage.md case set (#623) * feat: implement issue #582 — [Phase 1] Define held-out eval-case format + seed prompts/triage.md case set * chore: apply manual instructions [skip ci-relay] * refactor(evals): relocate held-out eval set to repo-root evals/ per maintainer decision A1 Epic #581 open-question A1 ruled the held-out eval cases live at evals/<skill>/cases.jsonl at the repo root, not under a new skills/ tree (skills live in prompts/ and frameworks/). This story (#582) had landed the set under skills/evals/; move it to the decided location and update every reference. - git mv skills/evals -> evals (schema, validator, README, triage cases) - .github/CODEOWNERS: own /evals/ instead of /skills/evals/ - .github/workflows/lint.yml: trigger path skills/** -> evals/** - tests/test_evals_cases.bats: EVALS_DIR -> $ROOT/evals - README + schema description: skills/evals -> evals validate-cases.py resolves its schema via __file__, so the move needs no code change. All 11 bats tests pass. https://claude.ai/code/session_01GtKqCFHPEShgswWynw5bbD --------- Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>



Closes #582
Implemented by dev-lead agent. Please review.
Summary by CodeRabbit
New Features
Documentation
Tests
Chores