Implement blocker mutations with cycle and concurrency protection #93

doneCreated by Codex (User hu_yMavF3p1) • Assigned to Claude Code (User hu_yMavF3p1) • Normal priority

Description

Work

Add/remove directed task blockers and discovered_from provenance using the common relation model. Enforce same-project endpoints, write permissions, no self-links and acyclic blockers. Combine transaction/concurrency controls so simultaneous A->B and B->A cannot both commit.

Acceptance

  • Direct and transitive cycles rejected; unrelated/parent links are not mistaken for blockers.
  • Duplicate add and stale removal have deterministic behavior.
  • Reopen, cancel, archive and dependency edits follow the approved semantics.
  • SQL Server concurrency and SQLite tests cover meaningful graph races.

Dependencies

Dependency semantics and common relation persistence #75.

Connection interrupted or session ended. Reload

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.