Skip to content

Dev - #222

Merged
lacava merged 3 commits into
masterfrom
dev
Aug 13, 2026
Merged

Dev#222
lacava merged 3 commits into
masterfrom
dev

Conversation

@lacava

@lacava lacava commented Aug 13, 2026

Copy link
Copy Markdown
Member

brings dev's selective build change onto master. the docs and layout check
from #220 are already here, so the only content diff is ci-docker.yml.

after this, PRs build only the methods they touch. pushes to master/dev, the
weekly schedule and manual dispatch still rebuild everything, so a method
that breaks from upstream drift without anyone touching it still gets caught.

lacava added 3 commits August 13, 2026 11:02
CONTRIBUTING.md and the PR template still described the old single-directory
layout, from before regressor.py moved into experiment/methods/ (b5c5c96).
back then CI copied the files over via scripts/copy_algorithm_files.sh, so
contributors only touched algorithms/. that script is gone but the docs never
got updated, and nothing catches the mistake: the build-and-test matrix comes
from `ls algorithms/`, so a method added only under experiment/methods/ never
gets a job and still goes all green (see #211).

- CONTRIBUTING.md documents where files go and why it's split that way
- PR template reorganized around the two directories
- local_ci.sh now wraps the docker commands instead of the old conda flow
- scripts/check_method_layout.py checks the two dirs agree; runs in CI as
  validate-layout and gates build-and-test
- fixes algorithms/eql/metadata.yml (invalid yaml), a missing
  experiment/methods/xgboost/__init__.py, and an invalid escape sequence in
  gplearn's regressor.py
every push and PR rebuilds all 27 images, because the gate in build-and-test
is hardcoded to should_run=true (5b13029). check-changes already computes what
changed, but nothing consumes it. one method submission can cost a lot: #209
went through 16 full 27-image runs, #210 and #212 another 24 between them.

pull requests now build only the methods they touch. everything else - pushes
to master/dev, the new weekly schedule, manual dispatch - still rebuilds
everything, so a method that breaks from upstream drift without anyone
touching it still gets caught. that drift is calendar-driven, which is what
the schedule is for; during a quiet stretch there are no merges to catch it.

- a method rebuilds if either algorithms/<name>/ or experiment/methods/<name>/
  changed. the second one matters: a regressor.py edit has to retest the
  method even though the install is untouched.
- changes to shared build inputs (dockerfiles, base_environment, scripts,
  entry.sh, configure.sh, workflows) still rebuild everything.
- build-and-test always runs and always reports for every algorithm, so the
  check names stay present and can be marked required. only the docker build
  step is skipped.
- dropped always() from build-and-test. with the gate inside the job, a failed
  check-changes would have left an empty build list, skipped every build and
  reported green.
- check-changes no longer diffs against github.event.before, so a force-push
  to a CI branch no longer fails the job.

also fixes a long-standing bug: changed-experiments used awk field $2 on
experiment/methods/<name>/..., which is the literal string "methods", not the
method name. it needs $3. nothing consumed that output before, so it never
showed up.
#220 was squash-merged, so master carried a commit with the same content as
dev's 4629556 but a different hash. that made master and dev diverge and
turned the next promote into a phantom conflict in ci-docker.yml.

dev already contains everything in master, so this records the merge without
taking any content. master is an ancestor of dev again and the next promote
is a fast-forward.

going forward: squash contributor PRs into dev, but promote dev -> master
with a merge or fast-forward, never a squash.
@lacava
lacava merged commit 161d317 into master Aug 13, 2026
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant