Naming¶
OddsFox Pipeline names source-specific surfaces from source to scope to subject.
Semantic vocabulary lives in Terminology. This page owns
scope reference, namespace, and *_pipeline_policy seed naming — not
the product meanings of scope, registry, or working set.
Scope vs scope reference vs namespace¶
| Encoding | Form | Example | Where it appears |
|---|---|---|---|
| Scope | Product slice id inside a source | wc2026 |
Seed keys, asset path segment, ops scope_name |
| Scope reference | Chooser source:scope |
polymarket:wc2026 |
scripts/run_scope.py, CLI help, operator guides |
| Namespace | Flat source_scope |
polymarket_wc2026 |
Jobs, schedules, schemas, dbt models, env vars |
Scope is the semantic term from Terminology. Scope
reference and namespace are encodings of (source, scope) for tooling; they are
not separate ontology terms.
Current canonical tuples are:
source:polymarket,scope:wc2026, scope reference:polymarket:wc2026,namespace:polymarket_wc2026source:kalshi,scope:wc2026, scope reference:kalshi:wc2026,namespace:kalshi_wc2026
Pipeline policy seeds¶
dbt seeds named <namespace>_pipeline_policy.csv (for example
polymarket_wc2026_pipeline_policy.csv, kalshi_wc2026_pipeline_policy.csv).
Flat names use <source>_<scope>_<subject>[_<temporal_grain_or_cadence>].
Use flat names for Dagster jobs, schedules, op names, Python functions, env
vars, scripts, dbt relations, and DuckDB schemas. Prefer temporal grain in
relation names and schedule cadence only in job/schedule names when the
cadence is the operating mode.
Dagster asset keys are hierarchical so the asset graph remains readable as more sources and scopes are added:
polymarket/wc2026/raw/marketspolymarket/wc2026/ops/market_scope_registrypolymarket/wc2026/raw/polygon_settlement_fillspolymarket/wc2026/release/polygon_settlement_odds_bundlepolymarket/wc2026/marts/market_hourly_oddsoddsfox/reference/international_results_wc2026_matches(external Scraper asset)oddsfox/reference/international_results_wc2026_team_status(external Scraper asset)kalshi/wc2026/raw/marketskalshi/wc2026/ops/market_scope_registrykalshi/wc2026/raw/market_candlesticks_hourlykalshi/wc2026/marts/stage_markets
The registered
polymarket/wc2026/release/polygon_settlement_odds_bundle key is retained for
the internal audit release. Its historical bundle suffix does not imply a
sanitized or distributable artifact. Filesystem outputs use explicit roles:
artifacts/polygon_settlement/audit/releases/<version>/artifacts/polygon_settlement/exports/releases/<version>/
The standalone export is not a Dagster asset or schedule.
DuckDB and dbt schemas use <source>_<scope>_<layer>:
polymarket_wc2026_rawpolymarket_wc2026_opspolymarket_wc2026_stagingpolymarket_wc2026_intermediatepolymarket_wc2026_martspolymarket_wc2026_observabilityoddsfox_reference(transactionally loaded Scraper bundle)kalshi_wc2026_rawkalshi_wc2026_opskalshi_wc2026_stagingkalshi_wc2026_intermediatekalshi_wc2026_martskalshi_wc2026_observability
dbt model names use layer-specific prefixes:
- staging:
stg_polymarket_wc2026_<subject> - intermediate:
int_polymarket_wc2026_<subject> - marts and observability:
polymarket_wc2026_<subject> - source-neutral reference bridges retain established relation names only where market consumers require them; new non-market models belong in Scraper
- staging:
stg_kalshi_wc2026_<subject> - intermediate:
int_kalshi_wc2026_<subject> - marts and observability:
kalshi_wc2026_<subject>
Dagster op names stay flat even when the asset key is hierarchical. For
example, the hourly odds asset key is
polymarket/wc2026/raw/token_odds_history_hourly, and its op config key is
polymarket_wc2026_raw_token_odds_history_hourly.
Reference relations are external assets under oddsfox/reference/<table> and
have no Pipeline collector op.
The Kalshi hourly candlesticks asset key is
kalshi/wc2026/raw/market_candlesticks_hourly, and its op config key is
kalshi_wc2026_raw_market_candlesticks_hourly.