Apply cross-validation settings - #1130
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5f8b23e3db
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
5f8b23e to
6b4d6e3
Compare
0266412 to
6b4d6e3
Compare
564f773 to
73f0838
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…-1130-cv-20260825 # Conflicts: # docs/source/whats_new.rst
bruAristimunha
left a comment
There was a problem hiding this comment.
Approved at exact head b09074b after independent exact-candidate review, bounded TDD repair, and separately approved replacement-body review. Hosted exact-head checks and the final squash-only merge guard remain required.
Correct cross-validation setting routing
This candidate preserves
stanbot8's original contribution and normallyintegrates current
developthrough post-#1158 commit827040df0354b64516a2ef65ce0536b8a1b32225.b09074bc70aeec2c73e5e946f35a0ac9d18c361cb36e1d70a3b1ad94a0544c08ad4457d1db326aab6241572c4c30c6291adbfbab50d597088e05d13e73f08385dd79978fdb04d94c0f1db17ad09c8c55Closes #1110.
Behavior
Evaluation defaults and caller-supplied CV settings are resolved separately.
The effective public
evaluation.cv_kwargsmapping is consulted on everyresolution, so mutating an individual key or replacing the mapping after
construction is honored without stale provenance.
Constructor capability is tri-state. Evaluation-injected defaults are sent
only to known-supported keywords, positional-only names never receive
implicit keyword defaults, and known-false colliding wrapper controls remain
wrapper-only. Explicit ordinary inner kwargs are retained for validation by
the real constructor, while opaque signatures retain explicit caller values
without guessing omitted defaults.
Wrapper controls such as
shuffleandrandom_statestay bound to wrapperstate and reach the inner CV only when support is not known false.
CrossSubject calibration defaults remain internal rather than being mistaken
for caller intent.
splitter.cv_kwargsremains a truthful public mapping of direct andevaluation-routed non-wrapper settings. The private resolution envelope is
removed before storage and serialization. Pickle round-trips preserve public
state and exact folds without leaking that envelope.
Exact scope
Against integrated
develop, the final diff is exactly:docs/source/whats_new.rstmoabb/evaluations/base.pymoabb/evaluations/evaluations.pymoabb/evaluations/splitters.pymoabb/tests/test_evaluations.pymoabb/tests/test_splits.pyThe production change is confined to the three evaluation modules. The larger
test matrix uses real
GroupKFold,GroupShuffleSplit,LeaveOneGroupOut,variadic, positional-only, and opaque splitters across WithinSession,
WithinSubject, CrossSession, CrossSubject, and CrossDataset paths. It pins seed
precedence, callable groups, wrapper state, mutability, public kwargs,
serialization, and actual train/test group disjointness.
The grouped
LearningCurveSplitterbehavior merged in #1158 is unchanged andhas a separate adversarial pickle/fold preservation check.
Verification
The six-path binary diff SHA-256 against current
developisbfac1f415678f794f725fb707bc723ddb5f921676153be0a18a40b59a1443b05.The worktree was clean at the exact candidate. Fresh hosted tests, docs,
pre-commit, link checks, What's News, Braindecode integration, and exact-head
human approval remain required before the repository's squash-only merge.