RFC: Unified runtime durability contract for signals, effects, and Bobravoz replay #76
lanycrost
started this conversation in
Feature Requests
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
The current runtime durability model is split across bounded
StepRun.statusrings,EffectClaimresources, process-local signal sequencing, and Bobravoz replay checkpoints. The result is one platform with several partial authorities instead of one declared durability contract.Why this needs a discussion
This is not a single-repo cleanup.
bobrapetalready treatsStepRun.statusas a small status surface and already has a dedicated durable effect resource inEffectClaim, while the SDK and Bobravoz still carry replay/idempotency behavior that is only partially aligned with those controller-owned authorities.Current evidence
StepRun.status.signalEventsandStepRun.status.effectsare bounded atMaxItems=256, which makes them summary surfaces rather than a durable replay ledger.StoryRun.spec.cancelRequestedalready exists as the controller-owned graceful stop path.EffectClaimalready exists as a durable effect/idempotency resource.bubu-sdk-go/effects.gocan still let completedEffectClaimstate get ahead of the StepRun effect summary.bubu-sdk-go/signal_sequence.goandsignal_replay.gostill depend on process-local sequence state plus bounded status replay.bobravoz-grpc/internal/hub/stream_manager.gostill uses a separate checkpoint model for replay restore instead of the same contract the SDK runtime would need for durable replay.Proposed decisions
StepRun.statusis a bounded summary/index surface only. It is not the durable source of truth for replay or idempotency.EffectClaimbecomes the durable authority for effect completion/idempotency.StepRun.status.effectsremains a bounded operator-facing summary.Cross-repo scope
bobrapet: owns the CRD/resource shape for durable cursors, claims, and summary-vs-history boundaries.bubu-sdk-go: writes summary status and participates in the durable effect/signal contract.bobravoz-grpc: aligns ingress replay/checkpoint behavior to the same durability model.core: carries shared contract helpers only; it should not become a second source of truth.Desired outcome
One declared durability contract and ownership map so follow-up fixes in
bubu-sdk-goandbobravoz-grpcland against the same replay/idempotency model instead of today’s mixed local conventions.Beta Was this translation helpful? Give feedback.
All reactions