SIGN IN SIGN UP

fix: describe what transfer_workitems actually does (#209)

The note said "moves everything to new_cycle_id". Both halves were wrong.

The endpoint transfers only the *unfinished* work items — its own API
description says so — and it refuses outright unless the source cycle has
already ended:

    if old_cycle.end_date is not None and old_cycle.end_date > timezone.now():
        return Response({"error": "The old cycle is not completed yet"}, 400)

So the natural order for "close this cycle and move its leftover work" is
backwards: complete first, then transfer. Nothing on the tool surface said
so, and the failure is a bare 400 discovered only by making the call.

Found while measuring the tool surface with an eval harness. Three models
across two vendors hit it on the same task, deterministically: identical
arguments, identical 400, then a recovery. It was the single most errored
action in every run — one wasted call each time, paid by every agent that
tries the obvious order.
D
Dheeraj Kumar Ketireddy committed
67c3c356bd03318d72aaff6794f05bf47b75fd21
Parent: 00d9d1f
Committed by GitHub <noreply@github.com> on 8/20/2026, 10:35:45 AM