Skip to content

feat: exorcist worker #1833

Open
ethanholz wants to merge 20 commits intoOpenFreeEnergy:feat/warehousefrom
ethanholz:feat/exorcist
Open

feat: exorcist worker #1833
ethanholz wants to merge 20 commits intoOpenFreeEnergy:feat/warehousefrom
ethanholz:feat/exorcist

Conversation

@ethanholz
Copy link
Collaborator

@ethanholz ethanholz commented Feb 7, 2026

Adds support for a Filesystem-backed exorcist worker that can run ProtocolUnits from an AlchemicalNetwork. Adding @atravitz and @IAlibay for reference. Still in progress but sharing for the initial workflow.

Checklist

  • All new code is appropriately documented (user-facing code must have complete docstrings).
  • Added a news entry, or the changes are not user-facing.
  • Ran pre-commit: you can run pre-commit locally or comment on this PR with pre-commit.ci autofix.

Manual Tests: these are slow so don't need to be run every commit, only before merging and when relevant changes are made (generally at reviewer-discretion).

Developers certificate of origin

@codecov
Copy link

codecov bot commented Feb 7, 2026

Codecov Report

❌ Patch coverage is 96.08586% with 31 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (feat/warehouse@fd24777). Learn more about missing BASE report.

Files with missing lines Patch % Lines
src/openfe/orchestration/__init__.py 88.09% 15 Missing ⚠️
src/openfecli/commands/worker.py 93.75% 4 Missing ⚠️
src/openfe/storage/warehouse.py 86.36% 3 Missing ⚠️
src/openfe/tests/orchestration/test_worker.py 98.43% 3 Missing ⚠️
src/openfecli/plan_alchemical_networks_utils.py 87.50% 3 Missing ⚠️
src/openfe/tests/orchestration/conftest.py 97.22% 1 Missing ⚠️
.../openfe/tests/orchestration/test_exorcist_utils.py 99.29% 1 Missing ⚠️
src/openfecli/commands/plan_rbfe_network.py 80.00% 1 Missing ⚠️
Additional details and impacted files
@@                Coverage Diff                @@
##             feat/warehouse    #1833   +/-   ##
=================================================
  Coverage                  ?   92.27%           
=================================================
  Files                     ?      208           
  Lines                     ?    18008           
  Branches                  ?        0           
=================================================
  Hits                      ?    16616           
  Misses                    ?     1392           
  Partials                  ?        0           
Flag Coverage Δ
fast-tests 92.27% <96.08%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ethanholz ethanholz changed the title [WIP] feat: exorcist worker feat: exorcist worker Feb 11, 2026
@ethanholz ethanholz marked this pull request as ready for review February 11, 2026 21:13
@ethanholz
Copy link
Collaborator Author

Seems I still have some unit testing to finish up, but this should be enough to highlight the use case for interested partners.

@ethanholz
Copy link
Collaborator Author

A few notes on how to run this code:

We need to first generate a warehouse that contains everything to run. Currently, only RBFE planning works. When using openfe plan-rbfe-network, you just need to add the --warehouse flag. This will generate a FilesystemWarehouse.

To run a single task you use something like this:

openfe worker warehouse

This will only run a task to completion and then stop. To run this in a loop, you can do something like this: https://gist.github.com/ethanholz/775027b469d6038f3dc958110c635c4c

@IAlibay
Copy link
Member

IAlibay commented Mar 6, 2026

@atravitz I think we need to discuss this at some point soon. My understanding was that warehouse & exorcist was going to be decoupled from planning?

@ethanholz
Copy link
Collaborator Author

@atravitz I think we need to discuss this at some point soon. My understanding was that warehouse & exorcist was going to be decoupled from planning?

The exorcist implementation is built to accept units as discussed. To demonstrate capabilities, I have added a flag to warehouse so that you can test and validate some of the functionality today.

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.

3 participants