Replies: 1 comment
|
I think this fits Adapt's current design, but I would add one resolution layer before Right now the graph is purely key-based: A practical shape would be: @dataclass(frozen=True)
class DataSlot:
semantic_type: str # reflectivity, segmentation_mask, projection, etc.
role: str = "primary" # raw, corrected, filtered, derived
dims: tuple[str, ...] = ()
variable_name: str | None = NoneThen modules declare something like: requires = {"reflectivity": DataSlot("reflectivity", role="corrected")}
provides = {"dbz_corrected": DataSlot("reflectivity", role="corrected", variable_name="dbz_corrected")}The planner/resolver would run before inputs = ["dbz_corrected"]
outputs = ["segmented_ds"]So the existing For the If corrected exists, the resolver binds segmentation to That also matches the current contract system: contracts should validate the selected artifact after resolution, while semantic selection should happen before DAG construction. |
Uh oh!
There was an error while loading. Please reload this page.
Currently, we bind modules to concrete variable names.
works until a user inserts:
Now segmentation breaks or still use
dbzinstead ofdbz_corrected.Introduce Data Contracts
Instead of:
use:
or:
Then a module can consume:
ReflectivityFieldregardless of actual variable name.
All reactions