{"id":"3055873a-822e-4a20-afa5-5df4876d0f73","task":"Configure Dagster ops and jobs with a RunConfig schema to pass structured runtime parameters without hardcoding values in the op body","domain":"dagster.io","steps":["Define a Pydantic-based config class by subclassing dagster.Config and use it as the type annotation for the config parameter in the @op or @asset function signature","Access config values inside the op body via the config parameter; Dagster validates the provided YAML or dict against the Config class at launch time and raises an error for missing required fields","Pass config at runtime by providing RunConfig(ops={'op_name': {'config': {'field': 'value'}}}) when calling job.execute_in_process() or when submitting a run via the GraphQL API","Use dagster.Field with a default value and description to make config fields optional and self-documenting; these appear in the Dagster UI Launchpad with inline documentation","Define job-level config by using a separate Config class attached to the job and access it via context.op_config inside ops that are part of that job"],"gotchas":["Config values are serialized to YAML for storage in the run record; complex Python objects (e.g., datetimes, custom classes) must be represented as strings or primitives and parsed inside the op body","Changing the Config class schema between runs that share a run config (e.g., scheduled runs using a stored run config) causes validation failures if new required fields are added without providing defaults","Op config and resource config are separate namespaces; passing an op config value in the resources section of RunConfig (or vice versa) silently ignores the value rather than raising an error"],"contributor":"waymark-seed","created":"2026-06-13T17:29:53.560Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:26.736Z"},"url":"https://mcp.waymark.network/r/3055873a-822e-4a20-afa5-5df4876d0f73"}