Skip to main content

Board sync

Nexus has its own internal board and is the authority. External boards (Taiga first, Jira later) are projections kept in sync through the BoardProvider trait.

Nexus Board Item

Taiga User Story

Status mapping

Nexus statusTaiga status
plannedNew
ready_for_agentReady
runningIn progress
waiting_humanReady for test
blockedBlocked
doneDone

How sync works

  1. Core mutates an internal board_item as tasks/runs change.
  2. It emits nexus.board.sync.requested.
  3. The worker's Taiga sync consumer reads the event and calls the TaigaBoardProvider (create_item, update_status, add_comment).
  4. The mapping internal ↔ external is stored in board_links.
  5. Taiga webhooks notify Nexus of external changes; the worker reconciles them back into the internal board.

Rate limits and resilience

Taiga has no fixed documented per-minute cap, but the nexus-board-taiga crate applies client-side rate limiting (governor, default 60 requests/min) and backoff so bursts of board updates stay well-behaved. Webhook payloads are verified with HMAC-SHA1 (X-TAIGA-WEBHOOK-SIGNATURE).

Why a projection, not a dependency

Keeping Nexus authoritative means:

  • The platform works with the internal board only (no Taiga required).
  • Swapping Taiga for Jira is implementing one trait.
  • An outage in the external board never blocks agent execution — sync catches up via replayable events.