bijection-dagster connects these through the shared
bijection.orchestration Python SDK.
Install the application Python SDK and packages/dagster from your Bijection
source distribution into your code-location environment. The adapter supports
Dagster >=1.13.26,<1.14.
Your pipeline needs typed dataset ports, an immutable program pin and an installed
execution handoff. Generate its Python client and adapter bindings:
revenue:refresh with one revenue
output and an orders input:
completion="selected" and "served" observe subsequent selection and serving;
these waits do not make a selection decision. Native verification appears in
asset metadata. Framework-reported checks retain their own meaning.
Serving waits require a native proof of the exact output group; merely opening
a retained lease does not establish serving.
Use bd.upstream_result(upstream_asset) for exact accepted upstream versions.
Recovery occurs before resolving newer materializations. Step retries retain the
original evaluation, parameters, program and input cut. New materialization runs
get a new occurrence. The bijection/invocation run tag explicitly preserves an
occurrence across recovery runs. Changed parameters under the same occurrence
are refused. Observation timeouts detach without cancelling computation.
Daily partition bindings require a matching pipeline partitioning declaration
with UTC half-open bounds mapped to two int64 parameters. They use
bd.partition.window_start_ms() and window_end_ms(). Each evaluation covers one
partition. Partition results stay separate from application selection; complete
dataset assembly and explicit selection are separate computations or decisions.
The partition label does not establish source completeness or historical input
retention. Other partition mappings and continuous jobs are unsupported.
Validate and export the code location, then check it against the analyzed app:
bijection.json so ordinary deploy preparation checks and
captures its exact bytes:
--target must match the credential’s deployment URL. Checks report ok,
refused, or unverified; preflight executes no job. Parameter-dependent
authority and actual computation remain enforced when work is admitted and run.
Deploy the application, preflight the matching code-location artifact, then
activate its schedules. Admission checks the expected contract again.
Capture a coordinated release after building the Dagster image:
sha256:… digest. The release separately
records logical contracts, installed definitions, program pins, binding digests,
generated package file hashes and SDK/adapter versions. Native preparation
captures and checks it. Missing release evidence stays unverified.
Configure BijectionResource(release_file=..., generated_package=..., code_location_image_digest=...) to check the actual loaded binding, package bytes
and versions before admission. Image identity is a deployment claim; these checks
do not attest execution. Private program configuration and credentials remain
outside generated contracts.
Native admission bounds each pipeline to sixteen open evaluations. Use a binding’s
concurrency_pool with a configured Dagster instance limit to bound scheduling;
customer compute owns execution limits. Daily definitions require midnight UTC
windows and YYYY-MM-DD keys without exclusions. bd.run_config generates typed
Dagster fields and validates their native values before dispatch.
Optional BijectionResource.lineage_namespace reports accepted result identities
through the existing authenticated OpenLineage /api/lineage owner. Install its
reporting source and grant the scheduler namespace. The custom correlation facet
is opaque reported evidence, carrying no native acceptance or selection authority.
Set lineage_required=True to make reporting failure fail projection; retries
still observe the existing evaluation.