Seed steps
A transition can be performed by a seeds work item instead of by hand:
{"step": "review", "from": "open", "to": "reviewed",
"seed": {"title": "Review the change", "labels": ["review"]},
"on_abandon": "reject"}
shuttle reconcile --agent <you> (on a timer, or by hand) does two things for
every open run:
- For each seed step legal from the run's state, it runs
sd create --workflow-run <run> --step <step> --visit <n>. seeds derives the id from that key, so repeating the create returns the same seed. A run that re-enters the state gets a new visit and a new seed. - It reads the seed with
sd show --json. Outcomedoneadvances the run through the step, signed, with the seed id, outcome and close time recorded as evidence. Any other outcome takeson_abandon. With noon_abandonthe run is FLAGGED (exit 1) and never advanced silently.
seeds knows nothing about workflows beyond the link field. A missed tick costs
one tick, not a stuck run. SHUTTLE_SD names the sd binary; where seeds
stores its work is sd's own configuration.