Skip to main content
Prefect schedules and observes Bijection computations. Bijection admits exact inputs and verifies complete output groups; the installed external compute resource executes the program. The adapter supports Prefect >=3.8.8,<3.9 and Python 3.12+. Install the application Python SDK and packages/prefect from your Bijection source distribution into your Prefect runtime. Generate from the application’s analyzed contracts:
Put the generated package on the Python import path. For a UTC daily pipeline exported as revenue:refresh, bind its typed parameters and complete outputs:
Call await run_revenue(partition=day, call_key="refresh") inside an async Prefect flow. The result has typed revenue and totals references. The logical call key and flow-run identity survive retries. Pass an explicit occurrence to recover across different flow runs. Separate intentional calls need distinct call keys. Retry counters and task-run IDs do not identify computations. Configure a BijectionConnection Prefect block with installation, mounted credential file and durable handles_uri. Local directories work for development; distributed workers require shared storage. S3 needs bijection[orchestration-s3]. Receipts use atomic conditional publication; arbitrary filesystem drivers are refused. Native custody and current permissions remain authoritative. Recovery precedes mutable input resolution, and accepted output groups are retained before framework projection. bp.upstream_result(producer, "output") declares exact dependencies; supply their typed references in RuntimeInputs and include producer tasks in the registry. Unknown or expired references fail without a latest-version fallback. Task caching and Prefect result persistence are disabled for these orchestration tasks, including under global cache settings. accepted, selected and served completion modes observe distinct native states. Waits never select results. Timeout and cancellation stop observing; they do not implicitly cancel computation. Asynchronous observation keeps the event loop responsive but retains the Prefect runtime process. Partitions are unpartitioned or aligned UTC daily windows with identity mappings. Date labels do not establish source completeness or historical retention. Export and check the explicit registry without running flows:
Build the immutable Prefect image, then capture the release with bijection orchestration release --bindings ... --generated-package ... --deployment-spec prefect.yaml --runtime-artifacts build/prefect-runtime-artifacts.json --python ... --out .... Declare deployment names and flow entrypoints in Registry(flows={...}). Each deployment must name an existing work pool and an immutable image in work_pool.job_variables.image. Capture resolves environment templates and refuses unresolved values or identities that differ from the declared registry. It records source and resolved hashes without copying credential values or executing deployment steps. Keep this manifest outside the image whose digest it records. Add the exported bindings and release paths to bijection.json’s orchestration configuration. Ordinary preparation checks and captures them and the referenced deployment source bytes. Configure the block’s release_file, generated_package, runtime_artifacts and deployment_spec to verify actual loaded artifacts before native calls. Task options are also checked before entering Prefect, so cache-policy changes cannot skip the guard. The artifact file maps flow_worker to its complete immutable sha256:… digest. Image identities remain claims, not execution attestation. Deploy Bijection, preflight it with bijection orchestration check --bindings ... --target ... --credential ..., then activate the corresponding Prefect image. Preflight admits no computation. Export validates the declared registry; arbitrary dynamic Python branches remain runtime concerns. Prefect assets retain native acceptance metadata and program/definition digests separately from task state. Successful selection and serving waits emit their observed states; failed waits preserve acceptance without claiming completion. Optional lineage_namespace reports through the installed OpenLineage owner; lineage_required=True retries failed reporting against the same accepted result. events_required=True requires successful Prefect event enqueue, which does not establish server delivery. Reports carry no native acceptance or selection authority, and Prefect transaction rollback cannot undo native acceptance.