---
{
  "id": "platform.kanban.completion-wip-and-done",
  "topic": "kanban",
  "title": "Completion, Done columns, and WIP limits",
  "locale": "en",
  "version": "2026-07-24",
  "summary": "Completing a card means moving it to a Done-type column, while transactional WIP limits guard every operation that admits a card to a column.",
  "content": "`complete_card` marks completion by moving the card into a column on its board whose `column_type` is `done`; completion is a location, not a Boolean card field. If the board has no Done column, runtime returns `resource_not_found`. Ask the user to configure a Done column in the Kanban UI because Agents cannot create columns.\n\nCompletion has the distinct `kanban:card:complete` permission scope, so an Agent may be granted “mark complete” without general card editing, but it still needs write access to that board. Completing a card already in the Done column succeeds as a no-op and emits no move events.\n\nA column’s optional WIP limit is checked transactionally on `create_card`, a cross-column `update_card` or `move_card`, `complete_card`, and `unarchive_card`. Same-column field updates do not check it, and archived cards do not count. A full target returns `resource_conflict` with details `{error: \"COLUMN_WIP_LIMIT_REACHED\", limit, current, columnId}`.\n\nDo not blindly retry that conflict. Report the selected column and limit, then offer to clear work from it, choose another target, or ask the user to change the WIP limit in the UI. Runtime error details and current column state take precedence over this card.\n",
  "aliases": [
    "complete card",
    "done column",
    "WIP limit",
    "column full",
    "COLUMN_WIP_LIMIT_REACHED",
    "mark task complete"
  ],
  "tags": [
    "kanban",
    "completion",
    "wip",
    "done",
    "debugging"
  ],
  "relatedActions": [
    "arinova.kanban.complete_card",
    "arinova.kanban.create_card",
    "arinova.kanban.update_card",
    "arinova.kanban.move_card",
    "arinova.kanban.unarchive_card",
    "arinova.kanban.list_columns"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/en/kb/kanban/completion-wip-and-done/"
}
---

`complete_card` marks completion by moving the card into a column on its board whose `column_type` is `done`; completion is a location, not a Boolean card field. If the board has no Done column, runtime returns `resource_not_found`. Ask the user to configure a Done column in the Kanban UI because Agents cannot create columns.

Completion has the distinct `kanban:card:complete` permission scope, so an Agent may be granted “mark complete” without general card editing, but it still needs write access to that board. Completing a card already in the Done column succeeds as a no-op and emits no move events.

A column’s optional WIP limit is checked transactionally on `create_card`, a cross-column `update_card` or `move_card`, `complete_card`, and `unarchive_card`. Same-column field updates do not check it, and archived cards do not count. A full target returns `resource_conflict` with details `{error: "COLUMN_WIP_LIMIT_REACHED", limit, current, columnId}`.

Do not blindly retry that conflict. Report the selected column and limit, then offer to clear work from it, choose another target, or ask the user to change the WIP limit in the UI. Runtime error details and current column state take precedence over this card.
