AnyKanban

Docs › Concepts

Why a column dims while you drag

Short answer: before you drop, the board has already asked Azure DevOps whether that state would be accepted, for this work item and for you. A dimmed column is the server's own refusal, not a rule AnyKanban read and interpreted.

What the board actually asks

Three moments trigger the question: picking a card up, opening the card's menu (by right-click or with the card's ... button), and opening the state picker on the card. The board then asks the server about every other column in parallel, with would System.State = "In Review" be accepted on this item?, using validate-only work item updates. The server evaluates its rules and answers; nothing is written.

Answers are cached per work item revision, so picking the same card up again costs no calls at all. The first pick-up does cost one call per other column: on a six-column board, five.

Why the server answers instead of the extension

Transition restrictions in an inherited process can be scoped to users and groups. A rule that stops you moving an item to Done may not stop the person sitting next to you. Reading the process and reproducing its rules inside the extension would give the wrong answer for half the people looking at the same board, and would need permissions AnyKanban deliberately does not ask for. Asking the server means the verdict is evaluated for the signed-in user, with no rule parsing on our side.

Which refusals dim a column, and which do not

Only a genuine transition restriction dims. The detection is structural: the rejection has to name System.State and flag the value as not being one of the allowed values.

A rule that merely requires a field, such as "Reason is required when moving to Done", deliberately does not dim the column. You could satisfy that rule after the drop, so pre-blocking it would take away a move you are entitled to make. Instead the drop is attempted, the server refuses it, and the card reverts carrying the server's own message.

When the check cannot run

Gating fails open. A network problem, rate limiting or an unexpected error shape leaves no verdict at all; columns nobody could ask about count as allowed, and the board falls back to its ordinary behavior: attempt the drop, and revert with the server's message if it is refused. A failed probe never blocks a drag.

What it means in practice

A column your process rules would reject, dimmed mid-drag