"""Adapters for the zero-training model stack (directive §3, §4, §40.1). One interface over things with nothing else in common: a segmenter, a frozen backbone, an open-vocabulary detector, a hosted reasoner, and a pair of deterministic methods that need no weights at all. What they share is governance, and that is what `base.py` unifies — what a thing costs, what licence it really carries, where it should run, and whether it can run at all. Read `base.py` first. The two properties it exists to hold are that an adapter cannot produce a result with no model behind it, and that a cost is either measured or reported as unmeasured. `licences.py` is the control ADR 0017 asked for, generalised: what each runtime actually loads under, rather than what a card says about itself. """ from app.adapters.base import ( Adapter, AdapterError, AdapterSpec, AdapterUnavailable, Availability, MeasuredCost, Measurement, Modality, Placement, Region, Task, ) __all__ = [ "Adapter", "AdapterError", "AdapterSpec", "AdapterUnavailable", "Availability", "MeasuredCost", "Measurement", "Modality", "Placement", "Region", "Task", ]