Skip to content

Reimplement ergoExo/ADEPTModule as a compatibility façade and publish a deprecation path #356

Description

@joglekara

Motivation

Tests and downstream repositories depend on ergoExo.setup(), call(), val_and_grad(), custom module injection, mutable module attributes, existing return shapes, nested/resumed MLflow behavior, and artifact snapshots. The replacement architecture requires a staged migration rather than a flag day.

Scope

Implement legacy adapters over the new builder, prepared simulation, execution, analyzer, and tracker layers. Preserve supported behavior while directing new code to the replacement APIs.

Document unsupported mutation patterns and provide explicit replacements, such as creating an updated prepared simulation/state rather than mutating closure-captured fields.

Acceptance criteria

  • ergoExo().setup(cfg) and exo(modules, args) preserve documented return shapes.
  • val_and_grad() remains compatible or has a tested transitional adapter.
  • Caller configs remain reusable and unmutated.
  • Nested/resumed MLflow behavior is reproduced through the host-side tracker.
  • Raw, units, derived-config, array-config, and artifact regression tests pass.
  • Numerical integration tests cover legacy and new entry points.
  • Existing custom solver injection has a tested adapter or actionable migration error.
  • Direct state replacement needed by current tests has a supported transitional path.
  • CLI forward/resume paths use the façade and are tested.
  • Deprecation warnings, migration examples, version timeline, and removal policy are published.
  • New internal implementations do not subclass ADEPTModule except for the façade.

Dependencies

Out of scope

  • Removing legacy classes in this issue.
  • Changing established output dictionaries or artifact formats.
  • Silently emulating arbitrary Python mutation inside transformed execution.
  • Requiring downstream migration before replacement APIs are available.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions