Skip to content

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_wc2026
  • source: 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/markets
  • polymarket/wc2026/ops/market_scope_registry
  • polymarket/wc2026/raw/polygon_settlement_fills
  • polymarket/wc2026/release/polygon_settlement_odds_bundle
  • polymarket/wc2026/marts/market_hourly_odds
  • oddsfox/reference/international_results_wc2026_matches (external Scraper asset)
  • oddsfox/reference/international_results_wc2026_team_status (external Scraper asset)
  • kalshi/wc2026/raw/markets
  • kalshi/wc2026/ops/market_scope_registry
  • kalshi/wc2026/raw/market_candlesticks_hourly
  • kalshi/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_raw
  • polymarket_wc2026_ops
  • polymarket_wc2026_staging
  • polymarket_wc2026_intermediate
  • polymarket_wc2026_marts
  • polymarket_wc2026_observability
  • oddsfox_reference (transactionally loaded Scraper bundle)
  • kalshi_wc2026_raw
  • kalshi_wc2026_ops
  • kalshi_wc2026_staging
  • kalshi_wc2026_intermediate
  • kalshi_wc2026_marts
  • kalshi_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.