By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Skip per-step round-trip on rework heads, add whole-plan cycle test PlanStep gains a stepIsReworkHead flag set on the second occurrence of a change name in the plan (deploy target ending in @HEAD). The per-step round-trip check skips these because sqitch's revert of just the rework runs the rework's revert script, which by sqitch convention undoes the whole change rather than only the rework — making the intermediate state empty rather than post(predecessor) and failing the check spuriously. To still cover rework heads (and sqitch's registry across a full deploy/revert cycle), add a separate whole-plan deploy/revert/redeploy cycle test alongside the per-change checks. Exposed as runSqitchWholePlanCycle for callers that need to drive it in IO. PlanSpec now asserts whole PlanStep records instead of per-field.
| Time to Start | Worker time | Duration | Time to finish | |
| Config | 0s | 6s | 6s | 6s |
| Eval | 6s | 2m12s | 2m12s | 2m18s |
| Build | 1m16s | 2m00s | 1m03s | 2m20s |
| Test | - | - | - | - |
| Deploy | - | - | - | - |
| Suite | 0s | 4m18s | 2m20s | 2m20s |