{
  "schema_version": 1,
  "jobs": [
    {
      "id": "market.refresh",
      "schedule": "realtime polling or administrator request",
      "input_date_policy": "requested trade date",
      "dependencies": ["market provider", "database"],
      "lock_key": "market-refresh",
      "timeout_seconds": 120,
      "max_attempts": 1,
      "output_version": "dashboard-v1"
    },
    {
      "id": "screener.automatic",
      "schedule": "trading day after 15:10 Asia/Shanghai",
      "input_date_policy": "current completed trade date",
      "dependencies": ["market.refresh", "factor data", "database"],
      "lock_key": "automatic-screener",
      "timeout_seconds": 900,
      "max_attempts": 1,
      "output_version": "screener-library-v8"
    },
    {
      "id": "market.ifind-event-enrichment",
      "schedule": "on demand after market close",
      "input_date_policy": "completed trade date",
      "dependencies": ["ifind", "database"],
      "lock_key": "ifind-event-enrichment",
      "timeout_seconds": 180,
      "max_attempts": 1,
      "output_version": "ifind-event-v1"
    }
  ]
}
