Add val_set_filter_id to Eval: three-way train/val/test dataset splits - #1620
Add val_set_filter_id to Eval: three-way train/val/test dataset splits#1620scosman wants to merge 1 commit into
Conversation
Evals previously carried only two split filters: train_set_filter_id and
eval_set_filter_id (which is the test set - the name is legacy). This adds
a validation split so run methods can be compared on held-out data without
touching the test set.
- Add Eval.val_set_filter_id with the same lazy migration as train:
evals loaded without one get tag::val_{name_slug}
- Document on eval_set_filter_id that it is the test set and the name
is legacy
- Mint val_{name_slug} tags/filter ids in spec eval creation
(generate_spec_eval_tags / generate_spec_eval_filter_ids and both
callers: spec_api and copilot_api)
- Deal a val split in copilot synthetic dataset creation: eval keeps half
of the post-golden pool; the other half now splits 2/3 train, 1/3 val
- Regenerate the web client schema for the new Eval field
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (11)
WalkthroughEval creation and dataset task-run splitting now include a validation dataset. Tag and filter-ID generation, persistence schemas, legacy migrations, server creation, desktop Copilot wiring, and tests were updated accordingly. ChangesValidation Dataset Support
Sequence Diagram(s)sequenceDiagram
participant create_spec
participant generate_spec_eval_tags
participant generate_spec_eval_filter_ids
participant Eval
create_spec->>generate_spec_eval_tags: generate eval, train, val, and golden tags
create_spec->>generate_spec_eval_filter_ids: generate four dataset filter IDs
create_spec->>Eval: construct Eval with val_set_filter_id
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ 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 |
📊 Coverage ReportOverall Coverage: 92% Diff: origin/main...HEAD
Summary
Line-by-lineView line-by-line diff coveragelibs/core/kiln_ai/datamodel/eval.pyLines 475-483 475 Generates a tag-based filter ID from the eval name following the convention
476 used by spec-based evals (e.g., "val_{name_slug}").
477 """
478 if self.id is None:
! 479 return self
480
481 if not self._loaded_from_file:
482 return self
|
What does this PR do?
Adds a validation split to evals, so run methods can be compared on held-out data without touching the test set. Evals previously carried only two split filters:
train_set_filter_idandeval_set_filter_id(which is the test set — the name is legacy).Eval.val_set_filter_idwith the same lazy migration as train: evals loaded without one gettag::val_{name_slug}eval_set_filter_idthat it is the test set and the name is legacyval_{name_slug}tags/filter ids in spec eval creation (generate_spec_eval_tags/generate_spec_eval_filter_idsand both callers:spec_apiandcopilot_api)Related Issues
None — approved eval-API improvement (val split groundwork).
Checklists
🤖 Generated with Claude Code
https://claude.ai/code/session_0135zWTBh8MRPwCXiWvuE597
Generated by Claude Code