ADR 0001: Music Provider Abstraction And Dependency Policy

Status

Accepted

Context

AbstractMusic must expose a unified way to generate music while supporting multiple local and remote-capable model families. Music generation models are heavy, hardware-sensitive, and unevenly licensed. A default install that eagerly pulls every local runtime would conflict with the AbstractCore and AbstractVision direction.

Decision

AbstractMusic will keep a stable public request/result abstraction above provider-specific backends. Provider-specific features such as lyrics, vocal language, duration parameter names, guidance behavior, reference audio, or video input must be expressed through explicit capability metadata and first-class request fields where they are broadly useful.

Heavy local inference stacks must be lazy-imported and should live behind optional extras once the packaging split is implemented. Default providers should prefer permissive, commercially usable licenses. Non-commercial or license-unclear providers may exist only as explicit optional providers with clear warnings and tests that prove they cannot be selected silently as defaults.

Consequences

  • The manager stays thin and model-agnostic.
  • Backends must expose enough capability metadata for callers and AbstractCore to avoid accidental unsupported calls.
  • ACE-Step can be the primary local provider, but the public API cannot become ACE-Step-shaped.
  • TinyMozart and Omni2Sound are not default providers under this policy.

Enforcement

  • Backlog items that add providers must update capability metadata and docs.
  • Provider tests must cover unsupported parameter handling instead of silently ignoring inputs.
  • Packaging tests should verify dependency profiles after the local-extra split.