You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a run stops on a rejection, emit a terminal RUN_ABANDONED event, reconcile the state cache so journalHead.seq matches the journal entries, and add a doctor check for runs left without a terminal event.
Motivation / Evidence
cookbook native-apps-bugfix-jun-06 stopped on a rejection with NO RUN_COMPLETED/RUN_ABANDONED terminal event; the state cache desynced (journalHead.seq=5 vs 7 journal entries, rebuildReason='journal_mismatch'). A journal-only reader sees a healthy run that simply stopped, while the actual feature shipped 2 days later out-of-band.
Proposal
Emit RUN_ABANDONED (with reason + rejection text + optional pointer to shipping commits) when a run stops on rejection, reconcile the state cache so journalHead.seq matches entries, and add a babysitter:doctor check for runs left without a terminal event. Complements #880 (run:halt) by covering the implicit-abandon path.
Alternatives considered
Reuse RUN_FAILED for rejection-stops — misleading, since a correct owner rejection is not a failure.
Only fix the state-cache desync without a terminal event — a journal reader still cannot distinguish abandoned from paused.
Summary
When a run stops on a rejection, emit a terminal
RUN_ABANDONEDevent, reconcile the state cache sojournalHead.seqmatches the journal entries, and add a doctor check for runs left without a terminal event.Motivation / Evidence
cookbook native-apps-bugfix-jun-06 stopped on a rejection with NO RUN_COMPLETED/RUN_ABANDONED terminal event; the state cache desynced (
journalHead.seq=5vs 7 journal entries,rebuildReason='journal_mismatch'). A journal-only reader sees a healthy run that simply stopped, while the actual feature shipped 2 days later out-of-band.Proposal
Emit
RUN_ABANDONED(with reason + rejection text + optional pointer to shipping commits) when a run stops on rejection, reconcile the state cache sojournalHead.seqmatches entries, and add a babysitter:doctor check for runs left without a terminal event. Complements #880 (run:halt) by covering the implicit-abandon path.Alternatives considered
RUN_FAILEDfor rejection-stops — misleading, since a correct owner rejection is not a failure.Related
Reported from a cookbook babysitter retrospective (retro-jun-09) via /babysitter:contrib.