60040a71f1
GetBlocking unconditionally returned an empty slice behind a TODO, so any caller asking "which tasks does this task block?" silently got a wrong answer. The reverse-lookup query the TODO asked for already exists on the blocker repository as ListTasksBlockedBy (used by the office scheduler and the handoff context builder) and is already part of the BlockerRepository interface, so GetBlocking now delegates to it. Like GetBlockers, it reports the raw blocker edges without filtering archived tasks — every other ListTasksBlockedBy consumer does the same. ListTasksBlockedBy also gains a deterministic ORDER BY (mirroring ListTaskBlockers) and normalizes an empty result to a non-nil slice. Co-authored-by: Kandev Agent <agent@kandev.dev> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>