0006. Asset Package Boundary
Status
Accepted
Context
The extracted SDK code temporarily used an msm.assets package for both asset
DataNode schemas and OpenFIGI provider helpers. That boundary made asset identity
look like a standalone package when the implementation actually spans three
different concepts:
- MetaTable models and repositories own persistent asset identity.
- DataNodes own timestamped asset facts.
- Services own provider lookup and normalization workflows.
Keeping msm.assets would make future changes ambiguous, especially as provider
integrations and DataNode schemas grow independently.
Decision
Remove the msm.assets package boundary.
Use these public paths instead:
msm.models.assets
msm.repositories.assets
msm.services.assets
msm.services.assets.openfigi
msm.data_nodes.assets
The AssetTable model remains the MetaTable-backed schema declaration at:
from msm.models import AssetTable
Asset snapshot DataNode schemas move to:
from msm.data_nodes.assets import AssetSnapshot
Pricing-detail DataNodes belong to the optional pricing runtime:
from msm_pricing.data_nodes import AssetPricingDetail
OpenFIGI helpers move to:
from msm.services.assets.openfigi import query_figi
Consequences
Imports through msm.assets are not supported. Code should choose the package
that matches the concept it is using: models for identity, data_nodes for
timestamped frames, and services for provider workflows.
OpenFIGI packaged definition lists live next to the service implementation under
msm.services.assets.open_figi_lists.