Checkpoint Handoff ​
Reliable cross-pipeline handoff is orchestrator-owned and checkpoint-based.
Supported in this release:
- source: final pipeline checkpoint publication from a
QUEUE_ASYNCorchestrator, - target: downstream orchestrator background admission bound by a named logical publication,
- idempotency: preserve incoming dispatch identifiers when present, otherwise derive a repeat-safe handoff key from configured checkpoint fields,
- ownership: downstream retry/DLQ remains orchestrator-owned after background admission.
Declare reliable handoff in pipeline.yaml:
yaml
input:
subscription:
publication: "checkout.orders.ready.v1"
mapper: "com.example.pipeline.mapper.ReadyOrderMapper"
output:
checkpoint:
publication: "checkout.orders.dispatched.v1"
idempotencyKeyFields: ["orderId", "customerId", "readyAt"]Runtime Behaviour ​
- Build-time validation checks checkpoint boundary declarations and mapper compatibility.
- Runtime endpoint bindings come from
pipeline.handoff.bindings.<publication>.targets.*. - Publication is generated into existing orchestrator ownership; no separate connector runtime or deployment role is introduced.
- Subscriber admission is handled by framework-owned HTTP and gRPC checkpoint publication endpoints instead of runtime subscription discovery.
- Protobuf-over-HTTP and gRPC use the same framework-owned checkpoint protobuf envelope for transport-native admission.
- Reliable handoff is supported only for
QUEUE_ASYNCorchestrators and is rejected forFUNCTIONpipelines. - Live
Subscriberemains a weaker observer/tap API and is not the reliable checkpoint handoff path.
Not Yet Supported ​
- generic broker-message re-drive,
- a separate durable checkpoint-publication service or publication-specific DLQ,
- dynamic runtime publication discovery or runtime subscription registration,
- broker-backed publication targets such as
SQSorKAFKA.