-
Notifications
You must be signed in to change notification settings - Fork 81
Add 'babysitter run:halt' command for sealing divergent runs #880
Copy link
Copy link
Open
Labels
effort:mediumMedium implementation effortMedium implementation effortenhancementNew feature or requestNew feature or requestfeatureNew user-visible or internal capabilityNew user-visible or internal capabilitypriority:mediumMedium priority issue with meaningful workflow impactMedium priority issue with meaningful workflow impactready-for-devTriaged and ready for developmentTriaged and ready for developmentrisk:mediumMedium implementation risk; requires focused validationMedium implementation risk; requires focused validationsdkSDK package and CLI runtimeSDK package and CLI runtime
Metadata
Metadata
Assignees
Labels
effort:mediumMedium implementation effortMedium implementation effortenhancementNew feature or requestNew feature or requestfeatureNew user-visible or internal capabilityNew user-visible or internal capabilitypriority:mediumMedium priority issue with meaningful workflow impactMedium priority issue with meaningful workflow impactready-for-devTriaged and ready for developmentTriaged and ready for developmentrisk:mediumMedium implementation risk; requires focused validationMedium implementation risk; requires focused validationsdkSDK package and CLI runtimeSDK package and CLI runtime
Type
Fields
Give feedbackNo fields configured for issues without a type.
R6 · SDK feature request —
babysitter run:haltcommandTitle
Add babysitter run:halt for sealing divergent runs without hand-crafting journal eventsProblem
When a run's SDK state diverges from operational reality (e.g. after the Promise.all collision bug), the only way to seal it cleanly is to:
RUN_COMPLETED(orRUN_FAILED) JSON eventcompletionProofhash fromrun.jsonjournal/000NNN.<ulid>.jsonbabysitter run:rebuild-stateto refresh the cacheThis worked but is fragile (hash/seq must be exact) and there's no audit trail of WHY we sealed.
Suggested command
Behavior:
--reasonin amanual_seal_reasonfield for auditUse case
Operator-driven recovery from SDK state divergence — e.g. after a
Promise.allcollision (see R2), after a process file refactor that obsoletes pending effects, or after a user-rejected breakpoint that should mark the run failed but auto-iterate keeps trying.Precedent
This is analogous to
git rebase --abortorkubectl delete --force— a deliberate "halt and accept current state" tool. Today the operator has to write the event file by hand.Reference
Cookbook run
01KT797KHQ6RFVMJ55TPBQ1K26required this on 2026-06-03 (V2 lane epic seal).